4.3 KiB
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
.gitignoreto 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-networkfor 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
- apt-cache not found: Start
apt-cacher-ngcontainer - Network issues: Check
particleos-networkexists - Build failures: Check container logs
- 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
- Test the setup with basic commands
- Verify apt-cache integration works
- Run full test suite in container
- Develop features with confidence
- Iterate on C implementation
This setup provides a robust, integrated testing environment that leverages your existing infrastructure while maintaining isolation for apt-layer development.