Some checks failed
Comprehensive CI/CD Pipeline / Build and Test (push) Failing after 2m1s
Comprehensive CI/CD Pipeline / Security Audit (push) Successful in 46s
Comprehensive CI/CD Pipeline / Package Validation (push) Successful in 1m7s
Comprehensive CI/CD Pipeline / Status Report (push) Has been skipped
6.2 KiB
6.2 KiB
deb-mock Packaging Strategy
Overview
This document outlines the packaging strategy for deb-mock, inspired by Fedora's multi-package approach for mock. The goal is to create a modular packaging system that allows users to install only the components they need.
Fedora Mock Packaging Analysis
Current Fedora Structure:
mock- Core package with main functionalitymock-filesystem- Filesystem layout and structuremock-lvm- LVM support for advanced storagemock-rpmautospec- RPM auto-specification featuresmock-scm- Source Control Management integration
Key Dependencies:
createrepo_c- Repository metadata generationcreaterepo_c-libs- Core library for repository managementlibmodulemd- Module metadata handlingpython3-*- Python dependenciessystemd-container- Container management
deb-mock Package Structure
Core Packages:
1. deb-mock (Main Package)
- Purpose: Core deb-mock functionality
- Dependencies:
python3-click,python3-yaml,python3-jinja2sbuild,schroot,debootstrapsystemd-container(equivalent to Fedora's systemd-container)
- Contents:
- Main
deb-mockbinary - Core Python modules (
deb_mock/) - Basic configuration files
- CLI interface
- Main
2. deb-mock-filesystem (Filesystem Package)
- Purpose: Filesystem layout and chroot structure
- Dependencies:
shadow-utils(minimal, like Fedora) - Contents:
- Chroot filesystem templates
- Directory structure definitions
- Filesystem configuration files
- Mount point definitions
3. deb-mock-configs (Configuration Package)
- Purpose: Pre-built configurations for different distributions
- Dependencies:
deb-mock - Contents:
- Distribution-specific configurations
- Architecture-specific settings
- Default build configurations
- Template configurations
4. deb-mock-plugins (Plugin Package)
- Purpose: Extended functionality through plugins
- Dependencies:
deb-mock - Contents:
- Built-in plugins (
deb_mock/plugins/) - Plugin configuration files
- Plugin documentation
- Plugin management tools
- Built-in plugins (
5. deb-mock-dev (Development Package)
- Purpose: Development tools and headers
- Dependencies:
deb-mock - Contents:
- Development headers
- API documentation
- Plugin development tools
- Testing utilities
Optional Packages:
6. deb-mock-cache (Caching Package)
- Purpose: Advanced caching and optimization
- Dependencies:
deb-mock,ccache - Contents:
- Caching plugins
- Cache management tools
- Performance optimization utilities
7. deb-mock-ci (CI/CD Package)
- Purpose: CI/CD integration tools
- Dependencies:
deb-mock - Contents:
- CI/CD integration scripts
- Automated testing tools
- Build automation utilities
Debian Package Dependencies
Core Dependencies (equivalent to Fedora):
apt-utils- APT utilities (equivalent tocreaterepo_c)apt-transport-https- HTTPS transport supportlibapt-pkg-dev- APT development librariespython3-apt- Python APT bindingssystemd-container- Container managementshadow-utils- User/group management
Build Dependencies:
build-essential- Essential build toolsdevscripts- Debian development scriptsdebhelper- Debian packaging helperdh-python- Python packaging helperpython3-setuptools- Python setuptools
Implementation Strategy
Phase 1: Core Package Structure
- Update
debian/controlfor multiple packages - Create package-specific directories
- Implement package separation logic
- Update build system for multi-package builds
Phase 2: Subpackage Implementation
- Implement
deb-mock-filesystempackage - Implement
deb-mock-configspackage - Implement
deb-mock-pluginspackage - Test package separation and dependencies
Phase 3: Advanced Packages
- Implement
deb-mock-cachepackage - Implement
deb-mock-cipackage - Add optional dependencies
- Create package documentation
Benefits of Multi-Package Approach
1. Modular Installation
- Users install only what they need
- Reduced attack surface
- Smaller base installation
2. Better Dependency Management
- Clear dependency relationships
- Easier maintenance
- Reduced conflicts
3. Enhanced Security
- Minimal base package
- Optional components
- Better isolation
4. Improved Performance
- Faster installation
- Reduced memory footprint
- Better caching
Migration Strategy
For Existing Users:
- Automatic Migration:
deb-mockpackage pulls in all subpackages - Gradual Migration: Users can remove unwanted subpackages
- Backward Compatibility: All functionality remains available
For New Users:
- Minimal Installation: Install only
deb-mockcore - Add Components: Install subpackages as needed
- Full Installation: Install all packages for complete functionality
File Organization
deb-mock/
├── debian/
│ ├── control # Multi-package control file
│ ├── deb-mock.install # Core package files
│ ├── deb-mock-filesystem.install # Filesystem package files
│ ├── deb-mock-configs.install # Configs package files
│ ├── deb-mock-plugins.install # Plugins package files
│ └── deb-mock-dev.install # Dev package files
├── deb_mock/ # Core Python modules
├── filesystem/ # Filesystem templates
├── configs/ # Distribution configs
├── plugins/ # Plugin modules
└── dev/ # Development tools
Next Steps
- Update
debian/controlfor multi-package structure - Create package-specific directories and files
- Implement package separation logic in build system
- Test multi-package builds and dependencies
- Update documentation for new package structure
- Create migration guide for existing users
This approach provides a clean, modular packaging system that matches Fedora's successful multi-package strategy while being optimized for Debian's ecosystem.