From 4b7ad029e998d46e38d8dc1ffcc34e1038313200 Mon Sep 17 00:00:00 2001 From: robojerk Date: Mon, 21 Jul 2025 03:21:14 +0000 Subject: [PATCH] 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. --- .forgejo/workflows/build-packages.yml | 131 +------------------------- README.md | 36 +++---- 2 files changed, 24 insertions(+), 143 deletions(-) diff --git a/.forgejo/workflows/build-packages.yml b/.forgejo/workflows/build-packages.yml index 1ed8715..2b6063e 100644 --- a/.forgejo/workflows/build-packages.yml +++ b/.forgejo/workflows/build-packages.yml @@ -1,4 +1,4 @@ -name: Build Packages +name: Build bootc Package on: push: @@ -9,88 +9,14 @@ on: env: UBUNTU_VERSION: "24.04" - OSTREE_VERSION: "2025.2" BOOTC_VERSION: "1.5.1" - BACKPORT_SUFFIX: "~noble1" jobs: - build-libostree-backport: - name: Build libostree Backport - runs-on: ubuntu-latest - container: - image: ubuntu:latest - steps: - - name: Setup build environment - run: | - apt update -y - apt install -y devscripts build-essential wget git - - - name: Checkout repository manually - run: | - # Clone the repository manually instead of using actions/checkout - git clone https://git.raines.xyz/robojerk/bootc-deb.git /tmp/bootc-deb - cp -r /tmp/bootc-deb/* . - cp -r /tmp/bootc-deb/.* . 2>/dev/null || true - - - name: Add source repositories - run: | - echo "deb-src http://us.archive.ubuntu.com/ubuntu/ noble main universe" | tee /etc/apt/sources.list.d/noble-sources.list - apt update -y - - - name: Create backport directory - run: | - mkdir -p /opt/Projects/ostree-backport-noble - cd /opt/Projects/ostree-backport-noble - - - name: Download libostree source - run: | - cd /opt/Projects/ostree-backport-noble - POOL_URL="http://archive.ubuntu.com/ubuntu/pool/universe/o/ostree/" - wget "${POOL_URL}ostree_${OSTREE_VERSION}-1.dsc" - wget "${POOL_URL}ostree_${OSTREE_VERSION}.orig.tar.xz" - wget "${POOL_URL}ostree_${OSTREE_VERSION}-1.debian.tar.xz" - - - name: Extract and modify source - run: | - cd /opt/Projects/ostree-backport-noble - dpkg-source -x "ostree_${OSTREE_VERSION}-1.dsc" - cd "ostree-${OSTREE_VERSION}" - dch --newversion "${OSTREE_VERSION}-1${BACKPORT_SUFFIX}" \ - --distribution "noble-backports" \ - -b \ - "Backport libostree ${OSTREE_VERSION}-1 from Ubuntu questing for bootc compatibility." - - - name: Install build dependencies - run: | - cd /opt/Projects/ostree-backport-noble/ostree-${OSTREE_VERSION} - export DEBIAN_FRONTEND=noninteractive - export APT_LISTCHANGES_FRONTEND=none - apt-get update - apt-get build-dep -y --no-install-recommends ./ - - - name: Build libostree backport - run: | - cd /opt/Projects/ostree-backport-noble/ostree-${OSTREE_VERSION} - dpkg-buildpackage -us -uc -b - - - name: List built packages - run: | - echo "Built libostree packages:" - ls -la /opt/Projects/ostree-backport-noble/*.deb - - - name: Upload libostree artifacts - run: | - mkdir -p /workspace/robojerk/bootc-deb/artifacts - cp /opt/Projects/ostree-backport-noble/*.deb /workspace/robojerk/bootc-deb/artifacts/ - echo "Libostree artifacts copied to workspace" - ls -la /workspace/robojerk/bootc-deb/artifacts/ - build-bootc: name: Build bootc Package runs-on: ubuntu-latest container: image: ubuntu:latest - needs: build-libostree-backport steps: - name: Setup build environment run: | @@ -112,13 +38,6 @@ jobs: cp -r /tmp/bootc-deb/* . cp -r /tmp/bootc-deb/.* . 2>/dev/null || true - - name: Sanity check - Verify libostree backport job succeeded - run: | - echo "Checking if libostree backport job completed successfully..." - # This step will only run if the previous job succeeded due to 'needs: build-libostree-backport' - echo "✅ libostree backport job completed successfully" - echo "Proceeding with bootc build..." - - name: Setup build environment for bootc run: | apt update -y @@ -183,56 +102,16 @@ jobs: echo "Built bootc packages:" ls -la bootc-${BOOTC_VERSION}/../*.deb - - name: Upload bootc artifacts - run: | - mkdir -p /workspace/robojerk/bootc-deb/artifacts - cp bootc-${BOOTC_VERSION}/../*.deb /workspace/robojerk/bootc-deb/artifacts/ - echo "Bootc artifacts copied to workspace" - ls -la /workspace/robojerk/bootc-deb/artifacts/ - - create-artifacts: - name: Create Combined Artifacts - runs-on: ubuntu-latest - container: - image: ubuntu:latest - needs: [build-libostree-backport, build-bootc] - steps: - - name: Setup environment - run: | - apt update -y - apt install -y git - - - name: Checkout repository manually - run: | - # Clone the repository manually instead of using actions/checkout - git clone https://git.raines.xyz/robojerk/bootc-deb.git /tmp/bootc-deb - cp -r /tmp/bootc-deb/* . - cp -r /tmp/bootc-deb/.* . 2>/dev/null || true - - - name: Sanity check - Verify all build jobs succeeded - run: | - echo "Checking if all build jobs completed successfully..." - # This step will only run if both previous jobs succeeded due to 'needs: [build-libostree-backport, build-bootc]' - echo "✅ libostree backport job completed successfully" - echo "✅ bootc build job completed successfully" - echo "Proceeding with artifact creation..." - - - name: Create combined artifacts + - name: Create release assets run: | mkdir -p release-assets - echo "Creating release assets directory" - - # Copy all artifacts from previous jobs - if [ -d "artifacts" ]; then - cp artifacts/*.deb release-assets/ 2>/dev/null || echo "No .deb files found in artifacts" - fi + cp bootc-${BOOTC_VERSION}/../*.deb release-assets/ 2>/dev/null || echo "No .deb files found" # Create a summary file - echo "Bootc Debian Package Build Summary" > release-assets/BUILD_SUMMARY.txt - echo "=================================" >> release-assets/BUILD_SUMMARY.txt + echo "Bootc Package Build Summary" > release-assets/BUILD_SUMMARY.txt + echo "===========================" >> release-assets/BUILD_SUMMARY.txt echo "Build Date: $(date)" >> release-assets/BUILD_SUMMARY.txt echo "Ubuntu Version: ${UBUNTU_VERSION}" >> release-assets/BUILD_SUMMARY.txt - echo "Ostree Version: ${OSTREE_VERSION}" >> release-assets/BUILD_SUMMARY.txt echo "Bootc Version: ${BOOTC_VERSION}" >> release-assets/BUILD_SUMMARY.txt echo "" >> release-assets/BUILD_SUMMARY.txt echo "Built Packages:" >> release-assets/BUILD_SUMMARY.txt diff --git a/README.md b/README.md index c531bec..f15a7bb 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,9 @@ A minimal repository containing the patch and deb packaging tooling to build boo - **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 +- **CI/CD**: Automated build pipeline for bootc packages + +**Note**: The libostree 2025.2-1 backport is now maintained in a separate repository: [libostree-dev](https://git.raines.xyz/robojerk/libostree-dev) ## 🚀 Quick Start @@ -24,8 +26,8 @@ A minimal repository containing the patch and deb packaging tooling to build boo git clone bootc-deb cd bootc-deb -# Step 1: Backport libostree 2025.2-1 (if not already installed) -./libostree-dev_noble_backport.sh +# 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 @@ -41,7 +43,7 @@ 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 +├── libostree-dev_noble_backport.sh # Legacy backport script (see separate repo) ├── README.md # This file ├── PACKAGING_SUMMARY.md # Detailed summary ├── .forgejo/ # CI/CD workflows @@ -61,7 +63,7 @@ bootc-deb/ ### The Complete Process -1. **Backports libostree 2025.2-1** from Ubuntu Questing to Noble (if needed) +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 @@ -89,13 +91,13 @@ This repository is designed to work on any Ubuntu Noble system: # On any PC in the world: git clone bootc-deb cd bootc-deb -./libostree-dev_noble_backport.sh # Step 1: Get required dependencies +# 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: -- ✅ Backport libostree 2025.2-1 from Ubuntu Questing +- ✅ Install libostree 2025.2-1 from separate repository - ✅ Clone bootc source from GitHub - ✅ Apply the compatibility patch - ✅ Install all build dependencies @@ -119,19 +121,20 @@ This packaging is specifically designed for Aurora-style workflow: 4. **Version Compatibility**: Requires libostree 2025.2-1 (automated backport included) ### Dependency Management -The `libostree-dev_noble_backport.sh` script provides: +The libostree 2025.2-1 backport is now maintained in a separate repository: +- **Repository**: [libostree-dev](https://git.raines.xyz/robojerk/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 -- **Seamless integration** with the bootc packaging workflow +- **CI/CD integration** for automated builds ## 🛠️ Manual Steps (if needed) If you prefer to build manually: ```bash -# 1. Backport libostree 2025.2-1 (if needed) -./libostree-dev_noble_backport.sh +# 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 @@ -166,15 +169,14 @@ dpkg-buildpackage -us -uc -b 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/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. **libostree Backport**: Automatically builds libostree 2025.2-1 from Ubuntu Questing -3. **bootc Package**: Builds bootc with the backported libostree dependency +2. **bootc Package**: Builds bootc with libostree 2025.2-1 dependency (from separate repo) 4. **Artifacts**: Uploads .deb packages as build artifacts 5. **Releases**: Creates release assets when a new release is published @@ -182,7 +184,7 @@ This repository includes Forgejo Actions workflows for automated package buildin 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 +- **Full Build**: Complete bootc package build #### Automatic README Updates @@ -203,10 +205,10 @@ After installation, you'll have: ## 📋 Troubleshooting ### Build Issues -- **Missing libostree 2025.2-1**: Run `./libostree-dev_noble_backport.sh` first +- **Missing libostree 2025.2-1**: Install from [libostree-dev repository](https://git.raines.xyz/robojerk/libostree-dev) - **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 +- **Backport build failures**: See the [libostree-dev repository](https://git.raines.xyz/robojerk/libostree-dev) for troubleshooting ### Runtime Issues - **Missing runtime dependencies**: Run `sudo apt-get install -f`