# apt-layer C Implementation - Testing Environment This directory contains scripts and documentation for testing the apt-layer C implementation. ## Directory Structure ``` apt-layer/ ├── build/ # Build artifacts (gitignored) ├── docker/ # Docker testing environment (gitignored) ├── scripts/ # Testing scripts and documentation ├── src/ # C source code ├── bin/ # Compiled binary └── ... ``` ## Quick Start ### Prerequisites 1. **Docker and Docker Compose** installed 2. **apt-cache server** running 3. **Git Bash** (for Windows users) ### Starting the Testing Environment #### Windows (PowerShell) ```powershell .\scripts\start-testing.ps1 ``` #### Linux/macOS (Bash) ```bash ./scripts/start-testing.sh ``` The script will: 1. Check for the existing apt-cache server (apt-cacher-ng on port 3142) 2. Build and start the Ubuntu 24.04 testing container 3. Connect to the existing apt-cache server for faster package downloads 4. Attach you to an interactive shell inside the container ### Manual Container Management ```bash # Start container cd docker && docker-compose up -d # Attach to container docker-compose exec apt-layer-test /bin/bash # View logs docker-compose logs -f apt-layer-test # Stop container docker-compose down ``` ## Testing the C Implementation ### Basic Tests (Outside Container) ```bash ./scripts/test-apt-layer.sh ``` ### Advanced Tests (Inside Container) ```bash # Build the C binary make clean && make # Test basic functionality ./bin/apt-layer --help ./bin/apt-layer --version # Test with actual OSTree operations ./bin/apt-layer --list ./bin/apt-layer --info particleos/base/plucky # Test layer creation ./bin/apt-layer particleos/base/plucky particleos/test/plucky ``` ## Environment Details ### Container Features - **Base Image**: Ubuntu 24.04 (Plucky) - **Build Tools**: gcc, make, git - **OSTree**: Full OSTree installation with development headers - **Container Tools**: Podman and Docker - **Package Cache**: Connected to existing apt-cacher-ng server ### Volume Mounts - **Workspace**: `/workspace` (project root) - **Cache**: `/cache` (persistent cache directory) ### Network - **apt-cache**: Connected to existing `particleos-network` - **Proxy**: Uses apt-cacher-ng for faster package downloads ## Troubleshooting ### Container Won't Start 1. Check if Docker is running 2. Ensure port 3142 is available for apt-cache 3. Check Docker logs: `docker-compose logs apt-layer-test` ### apt-cache Connection Issues 1. Verify apt-cacher-ng is running: `docker ps | grep apt-cacher-ng` 2. Start it if needed: `docker start apt-cacher-ng` 3. Check network connectivity: `curl http://localhost:3142/acng-report.html` ### Build Failures 1. Ensure all dependencies are installed in container 2. Check for sufficient disk space 3. Verify OSTree repository permissions ## Development Workflow 1. **Edit C code** in `src/` directory 2. **Build** with `make clean && make` 3. **Test** with `./scripts/test-apt-layer.sh` 4. **Advanced testing** in Docker container 5. **Iterate** and repeat ## Integration with particleos-builder This testing environment is designed to work alongside your existing particleos-builder setup: - **Shared apt-cache**: Uses the same apt-cacher-ng server - **Shared network**: Connects to particleos-network - **Complementary**: Focuses on apt-layer development while particleos-builder handles OS builds ## Files - `start-testing.sh` - Bash startup script - `start-testing.ps1` - PowerShell startup script - `test-apt-layer.sh` - Basic test suite - `SETUP-SUMMARY.md` - Detailed setup documentation