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
248 lines
7.4 KiB
Markdown
248 lines
7.4 KiB
Markdown
# Debian Dependency Analysis: deb-mock vs Fedora mock
|
|
|
|
## Overview
|
|
|
|
This document analyzes the dependency structure of our `deb-mock` packages compared to Fedora's `mock` packages, showing how Debian's dependency system works.
|
|
|
|
## Fedora Mock Dependencies (Your Analysis)
|
|
|
|
### Core Package Dependencies
|
|
```bash
|
|
$ dnf repoquery --requires mock
|
|
/usr/bin/bash
|
|
/usr/bin/python3
|
|
coreutils
|
|
createrepo_c # Repository metadata generation
|
|
mock-configs
|
|
mock-filesystem = 6.1-1.fc42
|
|
mock-filesystem = 6.3-1.fc42
|
|
pigz
|
|
procps-ng
|
|
python(abi) = 3.13
|
|
python3-backoff
|
|
python3-distro
|
|
python3-jinja2
|
|
python3-pyroute2
|
|
python3-requests
|
|
python3-rpm
|
|
python3-templated-dictionary >= 1.5
|
|
shadow-utils
|
|
systemd
|
|
systemd-container
|
|
tar
|
|
usermode
|
|
util-linux
|
|
```
|
|
|
|
### Subpackage Dependencies
|
|
```bash
|
|
$ dnf repoquery --requires mock-filesystem
|
|
shadow-utils
|
|
|
|
$ dnf repoquery --requires mock-scm
|
|
mock = 6.1-1.fc42
|
|
mock = 6.3-1.fc42
|
|
python(abi) = 3.13
|
|
|
|
$ dnf repoquery --requires mock-rpmautospec
|
|
mock = 6.1-1.fc42
|
|
mock = 6.3-1.fc42
|
|
python(abi) = 3.13
|
|
python3-rpmautospec-core
|
|
|
|
$ dnf repoquery --requires mock-lvm
|
|
lvm2
|
|
mock = 6.1-1.fc42
|
|
mock = 6.3-1.fc42
|
|
python(abi) = 3.13
|
|
```
|
|
|
|
## Debian deb-mock Dependencies
|
|
|
|
### 1. **deb-mock** (Core Package)
|
|
```debian
|
|
Depends: ${python3:Depends}, ${misc:Depends},
|
|
python3-click (>= 8.0.0),
|
|
python3-yaml (>= 6.0),
|
|
python3-jinja2 (>= 3.0.0),
|
|
python3-requests (>= 2.25.0),
|
|
sbuild, schroot, debootstrap,
|
|
systemd-container,
|
|
deb-mock-filesystem,
|
|
deb-mock-configs
|
|
Recommends: deb-mock-plugins, ccache,
|
|
python3-pytest, python3-pytest-cov
|
|
```
|
|
|
|
**Dependency Analysis:**
|
|
- **`${python3:Depends}`** - Automatic Python 3 dependencies (equivalent to `python(abi) = 3.13`)
|
|
- **`${misc:Depends}`** - Miscellaneous dependencies (equivalent to `coreutils`, `tar`, etc.)
|
|
- **`python3-click`** - CLI framework (equivalent to Fedora's `python3-click`)
|
|
- **`python3-yaml`** - YAML processing (equivalent to Fedora's `python3-yaml`)
|
|
- **`python3-jinja2`** - Template engine (equivalent to Fedora's `python3-jinja2`)
|
|
- **`python3-requests`** - HTTP library (equivalent to Fedora's `python3-requests`)
|
|
- **`sbuild`** - Debian build tool (equivalent to Fedora's build tools)
|
|
- **`schroot`** - Chroot management (equivalent to Fedora's chroot tools)
|
|
- **`debootstrap`** - Bootstrap tool (equivalent to Fedora's bootstrap tools)
|
|
- **`systemd-container`** - Container management (same as Fedora)
|
|
- **`deb-mock-filesystem`** - Our filesystem package (equivalent to `mock-filesystem`)
|
|
- **`deb-mock-configs`** - Our configs package (equivalent to `mock-configs`)
|
|
|
|
### 2. **deb-mock-filesystem** (Filesystem Package)
|
|
```debian
|
|
Depends: ${misc:Depends}, shadow-utils
|
|
```
|
|
|
|
**Dependency Analysis:**
|
|
- **`${misc:Depends}`** - Basic system dependencies
|
|
- **`shadow-utils`** - User/group management (same as Fedora)
|
|
|
|
### 3. **deb-mock-configs** (Configuration Package)
|
|
```debian
|
|
Depends: ${misc:Depends}, deb-mock
|
|
```
|
|
|
|
**Dependency Analysis:**
|
|
- **`${misc:Depends}`** - Basic system dependencies
|
|
- **`deb-mock`** - Depends on core package (equivalent to `mock = 6.1-1.fc42`)
|
|
|
|
### 4. **deb-mock-plugins** (Plugin Package)
|
|
```debian
|
|
Depends: ${misc:Depends}, deb-mock, python3-click
|
|
```
|
|
|
|
**Dependency Analysis:**
|
|
- **`${misc:Depends}`** - Basic system dependencies
|
|
- **`deb-mock`** - Depends on core package (equivalent to `mock = 6.1-1.fc42`)
|
|
- **`python3-click`** - CLI framework for plugin commands
|
|
|
|
### 5. **deb-mock-dev** (Development Package)
|
|
```debian
|
|
Depends: ${misc:Depends}, deb-mock, python3-dev
|
|
```
|
|
|
|
**Dependency Analysis:**
|
|
- **`${misc:Depends}`** - Basic system dependencies
|
|
- **`deb-mock`** - Depends on core package (equivalent to `mock = 6.1-1.fc42`)
|
|
- **`python3-dev`** - Python development headers (equivalent to `python(abi) = 3.13`)
|
|
|
|
### 6. **deb-mock-cache** (Cache Package)
|
|
```debian
|
|
Depends: ${misc:Depends}, deb-mock, ccache
|
|
Recommends: deb-mock-plugins
|
|
```
|
|
|
|
**Dependency Analysis:**
|
|
- **`${misc:Depends}`** - Basic system dependencies
|
|
- **`deb-mock`** - Depends on core package (equivalent to `mock = 6.1-1.fc42`)
|
|
- **`ccache`** - Compiler cache (equivalent to Fedora's `ccache`)
|
|
- **`deb-mock-plugins`** - Recommended for full functionality
|
|
|
|
## Dependency Comparison Table
|
|
|
|
| Fedora Package | Debian Equivalent | Dependencies |
|
|
|----------------|-------------------|--------------|
|
|
| **mock** | **deb-mock** | Core dependencies + subpackages |
|
|
| **mock-filesystem** | **deb-mock-filesystem** | `shadow-utils` only |
|
|
| **mock-scm** | **deb-mock-plugins** | `mock` + `python(abi)` |
|
|
| **mock-rpmautospec** | **deb-mock-plugins** | `mock` + `python(abi)` + specific libs |
|
|
| **mock-lvm** | **deb-mock-plugins** | `lvm2` + `mock` + `python(abi)` |
|
|
|
|
## Key Differences
|
|
|
|
### 1. **Dependency Types**
|
|
- **Fedora**: Uses `Requires:` for all dependencies
|
|
- **Debian**: Uses `Depends:` (required) and `Recommends:` (optional)
|
|
|
|
### 2. **Automatic Dependencies**
|
|
- **Fedora**: Lists all dependencies explicitly
|
|
- **Debian**: Uses `${python3:Depends}` and `${misc:Depends}` for automatic dependency resolution
|
|
|
|
### 3. **Version Constraints**
|
|
- **Fedora**: Uses `= 6.1-1.fc42` for exact versions
|
|
- **Debian**: Uses `>= 8.0.0` for minimum versions
|
|
|
|
### 4. **Subpackage Relationships**
|
|
- **Fedora**: Subpackages depend on specific versions of main package
|
|
- **Debian**: Subpackages depend on main package without version constraints
|
|
|
|
## Dependency Resolution Examples
|
|
|
|
### Installing Core Package
|
|
```bash
|
|
# Fedora
|
|
dnf install mock
|
|
# Installs: mock + mock-filesystem + mock-configs + all dependencies
|
|
|
|
# Debian
|
|
apt install deb-mock
|
|
# Installs: deb-mock + deb-mock-filesystem + deb-mock-configs + all dependencies
|
|
```
|
|
|
|
### Installing with Plugins
|
|
```bash
|
|
# Fedora
|
|
dnf install mock mock-scm mock-rpmautospec mock-lvm
|
|
# Installs: mock + all subpackages + specific dependencies
|
|
|
|
# Debian
|
|
apt install deb-mock deb-mock-plugins
|
|
# Installs: deb-mock + deb-mock-plugins + all dependencies
|
|
```
|
|
|
|
### Minimal Installation
|
|
```bash
|
|
# Fedora
|
|
dnf install mock mock-filesystem
|
|
# Installs: core + filesystem only
|
|
|
|
# Debian
|
|
apt install deb-mock deb-mock-filesystem
|
|
# Installs: core + filesystem only
|
|
```
|
|
|
|
## Build Dependencies
|
|
|
|
### Fedora Build Dependencies
|
|
```bash
|
|
BuildRequires: python3-setuptools
|
|
BuildRequires: python3-pytest
|
|
BuildRequires: python3-yaml
|
|
# ... etc
|
|
```
|
|
|
|
### Debian Build Dependencies
|
|
```debian
|
|
Build-Depends: debhelper (>= 13), dh-python, python3-all,
|
|
python3-setuptools, python3-pytest, python3-yaml,
|
|
python3-click, python3-jinja2, python3-requests
|
|
```
|
|
|
|
## Dependency Chain Analysis
|
|
|
|
### Fedora Chain
|
|
```
|
|
mock → createrepo_c → createrepo_c-libs → libmodulemd
|
|
mock → mock-filesystem → shadow-utils
|
|
mock → mock-scm → mock + python(abi)
|
|
```
|
|
|
|
### Debian Chain
|
|
```
|
|
deb-mock → deb-mock-filesystem → shadow-utils
|
|
deb-mock → deb-mock-configs → deb-mock
|
|
deb-mock → deb-mock-plugins → deb-mock + python3-click
|
|
deb-mock → sbuild → build-essential
|
|
deb-mock → schroot → shadow-utils
|
|
```
|
|
|
|
## Conclusion
|
|
|
|
Yes, **all Debian control files have dependencies**! The dependency system in Debian is:
|
|
|
|
1. **More Flexible**: Uses `Depends:` and `Recommends:` instead of just `Requires:`
|
|
2. **More Automatic**: Uses `${python3:Depends}` and `${misc:Depends}` for common dependencies
|
|
3. **More Version-Friendly**: Uses `>=` constraints instead of exact versions
|
|
4. **More Modular**: Subpackages can depend on main package without version constraints
|
|
|
|
Our `deb-mock` packaging successfully mirrors Fedora's dependency structure while leveraging Debian's more flexible dependency system!
|