165 lines
No EOL
4.3 KiB
Markdown
165 lines
No EOL
4.3 KiB
Markdown
# 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
|
|
```yaml
|
|
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)
|
|
```bash
|
|
./scripts/test-apt-layer.sh
|
|
```
|
|
- Builds C binary
|
|
- Tests basic functionality
|
|
- Checks dependencies
|
|
- Validates OSTree operations
|
|
|
|
### 2. Advanced Testing (Inside Container)
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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. |