No description
Find a file
robojerk 4b7ad029e9
Some checks failed
Build bootc Package / Build bootc Package (push) Failing after 1m23s
Test Build / Test bootc Build (with existing libostree) (push) Has been cancelled
Fix download link system for libostree-dev packages
- Add automatic README update workflow that triggers after successful builds
- Add manual workflow for updating download links to specific builds
- Update README with working download links to Build 97 artifacts
- Include direct links to both main package and debug symbols
- Add installation instructions with correct workflow run URLs
- Fix workflow run ID references and artifact download paths

This provides reliable download links that users can access directly
from the repository README to install the latest libostree backport.
2025-07-21 03:21:14 +00:00
.forgejo/workflows Fix download link system for libostree-dev packages 2025-07-21 03:21:14 +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 Fix CI/CD patch application and interactive prompt issues 2025-07-21 01:40:25 +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 Fix download link system for libostree-dev packages 2025-07-21 03:21:14 +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
  • CI/CD: Automated build pipeline for bootc packages

Note: The libostree 2025.2-1 backport is now maintained in a separate repository: libostree-dev

🚀 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: Install libostree 2025.2-1 backport (if not already installed)
# See: https://git.raines.xyz/robojerk/libostree-dev

# 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        # Legacy backport script (see separate repo)
├── 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. Requires libostree 2025.2-1 from the separate backport repository
  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
# Install libostree 2025.2-1 from separate repo  # 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:

  • Install libostree 2025.2-1 from separate repository
  • 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 2025.2-1 backport is now maintained in a separate repository:

  • Repository: libostree-dev
  • 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
  • CI/CD integration for automated builds

🛠️ Manual Steps (if needed)

If you prefer to build manually:

# 1. Install libostree 2025.2-1 backport (if needed)
# See: https://git.raines.xyz/robojerk/libostree-dev

# 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 bootc package
  • .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. bootc Package: Builds bootc with libostree 2025.2-1 dependency (from separate repo)
  3. Artifacts: Uploads .deb packages as build artifacts
  4. 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 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: Install from libostree-dev repository
  • Build dependencies: The script installs them automatically
  • Git clone issues: Check internet connection
  • Backport build failures: See the libostree-dev repository for troubleshooting

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! 🎉