apt-layer/scripts/SETUP-SUMMARY.md

4.3 KiB

apt-layer C Implementation - Setup Summary

Project Structure

apt-layer/
├── build/           # Build artifacts (gitignored)
├── docker/          # Docker testing environment (gitignored)
│   ├── docker-compose.yml
│   └── Dockerfile
├── scripts/         # Testing scripts and documentation
│   ├── start-testing.sh
│   ├── start-testing.ps1
│   ├── test-apt-layer.sh
│   ├── README.md
│   └── SETUP-SUMMARY.md
├── src/             # C source code
├── bin/             # Compiled binary
├── Makefile
├── .gitignore
└── README.md

Key Changes Made

1. Directory Reorganization

  • Moved testing/docker/ (more descriptive)
  • Created build/ directory for build artifacts
  • Created scripts/ directory for all testing scripts
  • Updated .gitignore to exclude build and docker directories

2. apt-cache Integration

  • Removed duplicate apt-cacher-ng service
  • Connected to existing apt-cacher-ng from particleos-builder
  • Uses existing particleos-network for connectivity
  • Configured apt proxy settings in Dockerfile

3. Simplified Docker Setup

  • Single container instead of multiple services
  • External network dependency on particleos-network
  • External volume for apt-cache data
  • Streamlined startup process

Docker Configuration

docker-compose.yml

name: apt-layer-testing

services:
  apt-layer-test:
    build:
      context: ..
      dockerfile: docker/Dockerfile
    container_name: apt-layer-test
    depends_on:
      - apt-cacher-ng
    volumes:
      - ..:/workspace
      - apt-layer-cache:/cache
    environment:
      - http_proxy=http://apt-cacher-ng:3142
      - https_proxy=http://apt-cacher-ng:3142
    networks:
      - particleos-network

  apt-cacher-ng:
    external: true
    name: apt-cacher-ng

networks:
  particleos-network:
    external: true
    name: particleos-network

Dockerfile Features

  • Ubuntu 24.04 base image
  • apt-cache proxy configuration
  • Build tools (gcc, make, git)
  • OSTree with development headers
  • Container tools (podman, docker)
  • Interactive entrypoint with helpful information

Startup Scripts

Bash Script (start-testing.sh)

  • Auto-detects project and docker directories
  • Checks apt-cache server connectivity
  • Builds and starts container
  • Attaches to interactive shell

PowerShell Script (start-testing.ps1)

  • Windows-compatible startup
  • Same functionality as bash script
  • Error handling for Windows environment

Testing Workflow

1. Basic Testing (Outside Container)

./scripts/test-apt-layer.sh
  • Builds C binary
  • Tests basic functionality
  • Checks dependencies
  • Validates OSTree operations

2. Advanced Testing (Inside Container)

# Start container
./scripts/start-testing.sh

# Inside container
make clean && make
./bin/apt-layer --help
./bin/apt-layer --list

Integration Benefits

With particleos-builder

  • Shared apt-cache: Faster package downloads
  • Shared network: No port conflicts
  • Complementary: Different focus areas
  • Resource efficient: Reuses existing infrastructure

Development Workflow

  • Fast iteration: Quick container restarts
  • Isolated testing: No host system impact
  • Consistent environment: Same setup everywhere
  • Easy cleanup: Docker volumes and containers

Troubleshooting

Common Issues

  1. apt-cache not found: Start apt-cacher-ng container
  2. Network issues: Check particleos-network exists
  3. Build failures: Check container logs
  4. Permission issues: Verify volume mounts

Commands

# Check apt-cache
curl http://localhost:3142/acng-report.html

# Check network
docker network ls | grep particleos

# Check container
docker-compose -f docker/docker-compose.yml ps

# View logs
docker-compose -f docker/docker-compose.yml logs apt-layer-test

Next Steps

  1. Test the setup with basic commands
  2. Verify apt-cache integration works
  3. Run full test suite in container
  4. Develop features with confidence
  5. Iterate on C implementation

This setup provides a robust, integrated testing environment that leverages your existing infrastructure while maintaining isolation for apt-layer development.