No description
Find a file
robojerk 25a684578a
Some checks failed
Build Packages / Build libostree Backport (push) Failing after 2s
Test Build / Test bootc Build (with existing libostree) (push) Failing after 1s
Build Packages / Build bootc Package (push) Has been skipped
Build Packages / Create Combined Artifacts (push) Has been skipped
Fix Forgejo compatibility: use ubuntu-latest and actions@v3
2025-07-20 23:36:36 +00:00
.forgejo/workflows Fix Forgejo compatibility: use ubuntu-latest and actions@v3 2025-07-20 23:36:36 +00:00
debian Initial commit: Complete bootc packaging with CI/CD automation 2025-07-20 23:30:16 +00:00
.gitignore Initial commit: Complete bootc packaging with CI/CD automation 2025-07-20 23:30:16 +00:00
bootc-libostree-compatibility.patch Initial commit: Complete bootc packaging with CI/CD automation 2025-07-20 23:30:16 +00:00
build.sh Initial commit: Complete bootc packaging with CI/CD automation 2025-07-20 23:30:16 +00:00
install.sh Initial commit: Complete bootc packaging with CI/CD automation 2025-07-20 23:30:16 +00:00
libostree-dev_noble_backport.sh Initial commit: Complete bootc packaging with CI/CD automation 2025-07-20 23:30:16 +00:00
PACKAGING_SUMMARY.md Initial commit: Complete bootc packaging with CI/CD automation 2025-07-20 23:30:16 +00:00
README.md Initial commit: Complete bootc packaging with CI/CD automation 2025-07-20 23:30:16 +00:00

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

  1. Basic build tools: git, cargo, rustc, pkg-config
  2. 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

  1. Backports libostree 2025.2-1 from Ubuntu Questing to Noble (if needed)
  2. Clones bootc source from GitHub (v1.5.1)
  3. Applies our patch to fix libostree compatibility
  4. Installs build dependencies automatically
  5. Builds the .deb package using dpkg-buildpackage
  6. 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:

  1. OCI Image Compatibility: Works with apt-ostree generated images
  2. Container Tool Integration: Compatible with podman, skopeo
  3. System Integration: Proper Ubuntu Noble integration
  4. 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

  1. Update version in debian/changelog
  2. Update version in build-bootc-deb.sh
  3. Update version in .forgejo/workflows/build-packages.yml
  4. Test build process

Updating the Patch

  1. Modify bootc-libostree-compatibility.patch
  2. Test with ./build-bootc-deb.sh
  3. 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

  1. Triggers: Push to main/master, pull requests, and releases
  2. libostree Backport: Automatically builds libostree 2025.2-1 from Ubuntu Questing
  3. bootc Package: Builds bootc with the backported libostree dependency
  4. Artifacts: Uploads .deb packages as build artifacts
  5. 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.sh first
  • 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! 🎉