bootc-deb/README.md
robojerk 695714a60e
Some checks failed
Build Packages / Build libostree Backport (push) Failing after 0s
Build Packages / Build bootc Package (push) Has been skipped
Test Build / Test bootc Build (with existing libostree) (push) Failing after 0s
Build Packages / Create Release (push) Has been skipped
Build Packages / Create Artifacts for README Update (push) Has been skipped
Initial commit: Complete bootc packaging with CI/CD automation
2025-07-20 23:30:16 +00:00

217 lines
No EOL
7.2 KiB
Markdown

# 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
```bash
# 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`:
```rust
// 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:
```bash
# 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:
```bash
# 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!** 🎉