|
Some checks failed
Build Packages / Build libostree Backport (push) Successful in 9m31s
Test Build / Test bootc Build (with existing libostree) (push) Failing after 1m6s
Build Packages / Build bootc Package (push) Failing after 1m12s
Build Packages / Create Combined Artifacts (push) Has been skipped
- Add DEBIAN_FRONTEND=noninteractive to prevent apt prompts - Add APT_LISTCHANGES_FRONTEND=none to disable package change notifications - Change from apt to apt-get for better CI/CD compatibility - Add apt-get update before installing build dependencies - Add --no-install-recommends flag to reduce package count This fixes the "Do you want to continue? [Y/n]" prompt that was causing the libostree backport build to fail in the CI environment. |
||
|---|---|---|
| .forgejo/workflows | ||
| debian | ||
| .gitignore | ||
| bootc-libostree-compatibility.patch | ||
| build.sh | ||
| install.sh | ||
| libostree-dev_noble_backport.sh | ||
| PACKAGING_SUMMARY.md | ||
| README.md | ||
Bootc Debian Package Builder
A minimal repository containing the patch and deb packaging tooling to build bootc .deb packages for Debian/Ubuntu systems with libostree 2025.2-1 compatibility.
🎯 What This Repository Contains
- Patch: Fixes compatibility with libostree 2025.2-1 on Ubuntu Noble
- Debian Packaging: Complete debian/ directory structure
- Build Script: Automatically clones bootc source and builds .deb
- Install Script: Installs the built package with dependency handling
- Dependency Backport: Automated script to backport libostree 2025.2-1 from Ubuntu Questing
🚀 Quick Start
Prerequisites
- Basic build tools:
git,cargo,rustc,pkg-config - Ubuntu Noble (24.04 LTS) system
Complete Workflow
# Clone this repository
git clone <your-repo-url> bootc-deb
cd bootc-deb
# Step 1: Backport libostree 2025.2-1 (if not already installed)
./libostree-dev_noble_backport.sh
# Step 2: Build the bootc .deb package
./build-bootc-deb.sh
# Step 3: Install the package
sudo ./install-bootc.sh
📁 Repository Structure
bootc-deb/
├── bootc-libostree-compatibility.patch # The compatibility fix
├── build-bootc-deb.sh # Build script (clones + builds)
├── install-bootc.sh # Installation script
├── libostree-dev_noble_backport.sh # Dependency backport script
├── README.md # This file
├── PACKAGING_SUMMARY.md # Detailed summary
├── .forgejo/ # CI/CD workflows
│ ├── workflows/
│ │ ├── build-packages.yml # Full build pipeline
│ │ ├── test-build.yml # Test workflow
│ │ ├── update-readme.yml # README update workflow
│ │ └── config.yml # CI/CD configuration
└── debian/ # Debian packaging files
├── control # Package metadata
├── rules # Build rules
├── changelog # Version history
└── copyright # License info
🔧 How It Works
The Complete Process
- Backports libostree 2025.2-1 from Ubuntu Questing to Noble (if needed)
- Clones bootc source from GitHub (v1.5.1)
- Applies our patch to fix libostree compatibility
- Installs build dependencies automatically
- Builds the .deb package using dpkg-buildpackage
- Copies results to the repository directory
The Patch
Fixes this issue in crates/lib/src/cli.rs:
// Before (causes build failure):
ostree::SePolicy::set_null_log();
// After (compatible):
// TODO: Re-enable when ostree Rust bindings support set_null_log()
// ostree::SePolicy::set_null_log();
🌍 Usage on Any PC
This repository is designed to work on any Ubuntu Noble system:
# On any PC in the world:
git clone <your-repo-url> bootc-deb
cd bootc-deb
./libostree-dev_noble_backport.sh # Step 1: Get required dependencies
./build-bootc-deb.sh # Step 2: Build bootc package
sudo ./install-bootc.sh # Step 3: Install the package
The complete workflow will:
- ✅ Backport libostree 2025.2-1 from Ubuntu Questing
- ✅ Clone bootc source from GitHub
- ✅ Apply the compatibility patch
- ✅ Install all build dependencies
- ✅ Build the .deb package
- ✅ Install the package
📦 Package Information
- Package Name: bootc
- Version: 1.5.1-1~noble1
- Target: Ubuntu Noble (24.04 LTS)
- Dependencies: libostree-1-1 (>= 2025.2), systemd, podman|docker.io, skopeo
🔗 Integration with apt-ostree
This packaging is specifically designed for Aurora-style workflow:
- OCI Image Compatibility: Works with apt-ostree generated images
- Container Tool Integration: Compatible with podman, skopeo
- System Integration: Proper Ubuntu Noble integration
- Version Compatibility: Requires libostree 2025.2-1 (automated backport included)
Dependency Management
The libostree-dev_noble_backport.sh script provides:
- Automated backporting of libostree 2025.2-1 from Ubuntu Questing
- Safety features including VM detection and disk space checks
- Complete build process with proper Debian packaging
- Seamless integration with the bootc packaging workflow
🛠️ Manual Steps (if needed)
If you prefer to build manually:
# 1. Backport libostree 2025.2-1 (if needed)
./libostree-dev_noble_backport.sh
# 2. Clone bootc source
git clone --depth 1 --branch v1.5.1 https://github.com/containers/bootc.git bootc-1.5.1
cd bootc-1.5.1
# 3. Apply patch
patch -p1 < ../bootc-libostree-compatibility.patch
# 4. Copy packaging files
cp -r ../debian .
# 5. Build package
dpkg-buildpackage -us -uc -b
🔄 Maintenance
Updating Versions
- Update version in
debian/changelog - Update version in
build-bootc-deb.sh - Update version in
.forgejo/workflows/build-packages.yml - Test build process
Updating the Patch
- Modify
bootc-libostree-compatibility.patch - Test with
./build-bootc-deb.sh - Update documentation if needed
CI/CD Automation
This repository includes Forgejo Actions workflows for automated package building:
.forgejo/workflows/build-packages.yml: Full build pipeline for both libostree backport and bootc.forgejo/workflows/test-build.yml: Lightweight testing for development and PRs.forgejo/workflows/config.yml: CI/CD configuration settings
Automated Build Process
- Triggers: Push to main/master, pull requests, and releases
- libostree Backport: Automatically builds libostree 2025.2-1 from Ubuntu Questing
- bootc Package: Builds bootc with the backported libostree dependency
- Artifacts: Uploads .deb packages as build artifacts
- Releases: Creates release assets when a new release is published
Manual Workflow Triggers
You can manually trigger builds in the Forgejo Actions tab:
- Test Build: Quick validation of bootc build process
- Full Build: Complete libostree backport + bootc package build
Automatic README Updates
The CI/CD automatically updates the README with download links to the latest packages:
- Trigger: After successful package builds
- Content: Direct download links to .deb files
- Instructions: Installation commands for users
- Timestamp: Shows when packages were last built
🎉 Success!
After installation, you'll have:
- ✅ bootc command available system-wide
- ✅ Full functionality with your apt-ostree OCI images
- ✅ Aurora-style workflow ready to use
📋 Troubleshooting
Build Issues
- Missing libostree 2025.2-1: Run
./libostree-dev_noble_backport.shfirst - Build dependencies: The script installs them automatically
- Git clone issues: Check internet connection
- Backport build failures: Ensure you have sufficient disk space (500MB+) and are in a VM for safety
Runtime Issues
- Missing runtime dependencies: Run
sudo apt-get install -f - AppArmor denials: Monitor with
sudo aa-logprof
Perfect for distributing bootc as .deb packages on any Ubuntu Noble system! 🎉