diff --git a/.forgejo/workflows/build-libostree-backport.yml b/.forgejo/workflows/build-libostree-backport.yml index 20d3da4..e9e964c 100644 --- a/.forgejo/workflows/build-libostree-backport.yml +++ b/.forgejo/workflows/build-libostree-backport.yml @@ -102,47 +102,47 @@ jobs: curl -s -H "Authorization: Bearer ${{ secrets.FORGEJO_TOKEN }}" \ "https://git.raines.xyz/api/v1/packages/robojerk/generic" | jq . 2>/dev/null || echo "Generic packages endpoint failed" - - name: Test package upload with steam.deb - run: | - echo "=== Testing package upload with steam.deb ===" - - # Check if steam.deb exists - if [ ! -f "steam.deb" ]; then - echo "❌ steam.deb not found, skipping upload test" - echo "Available files:" - ls -la *.deb 2>/dev/null || echo "No .deb files found" - exit 0 - fi - - # Test Debian Package Registry upload - echo "Testing Debian Package Registry upload..." - response=$(curl -s -w "%{http_code}" --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \ - --upload-file "steam.deb" \ - "https://git.raines.xyz/api/packages/robojerk/debian/pool/noble/main/upload") - - http_code=$(echo "$response" | tail -c 4) - echo "Debian Package Registry HTTP Response Code: $http_code" - - if [ "$http_code" = "201" ]; then - echo "✅ Debian Package Registry upload SUCCESS" - else - echo "❌ Debian Package Registry upload FAILED (HTTP $http_code)" - fi - - echo "" - echo "Testing Generic Package Registry upload..." - response=$(curl -s -w "%{http_code}" --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \ - --upload-file "steam.deb" \ - "https://git.raines.xyz/api/packages/robojerk/generic/steam/1.0.0.83/steam.deb") - - http_code=$(echo "$response" | tail -c 4) - echo "Generic Package Registry HTTP Response Code: $http_code" - - if [ "$http_code" = "201" ]; then - echo "✅ Generic Package Registry upload SUCCESS" - else - echo "❌ Generic Package Registry upload FAILED (HTTP $http_code)" - fi + # - name: Test package upload with steam.deb + # run: | + # echo "=== Testing package upload with steam.deb ===" + # + # # Check if steam.deb exists + # if [ ! -f "steam.deb" ]; then + # echo "❌ steam.deb not found, skipping upload test" + # echo "Available files:" + # ls -la *.deb 2>/dev/null || echo "No .deb files found" + # exit 0 + # fi + # + # # Test Debian Package Registry upload + # echo "Testing Debian Package Registry upload..." + # response=$(curl -s -w "%{http_code}" --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \ + # --upload-file "steam.deb" \ + # "https://git.raines.xyz/api/packages/robojerk/debian/pool/noble/main/upload") + # + # http_code=$(echo "$response" | tail -c 4) + # echo "Debian Package Registry HTTP Response Code: $http_code" + # + # if [ "$http_code" = "201" ]; then + # echo "✅ Debian Package Registry upload SUCCESS" + # else + # echo "❌ Debian Package Registry upload FAILED (HTTP $http_code)" + # fi + # + # echo "" + # echo "Testing Generic Package Registry upload..." + # response=$(curl -s -w "%{http_code}" --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \ + # --upload-file "steam.deb" \ + # "https://git.raines.xyz/api/packages/robojerk/generic/steam/1.0.0.83/steam.deb") + # + # http_code=$(echo "$response" | tail -c 4) + # echo "Generic Package Registry HTTP Response Code: $http_code" + # + # if [ "$http_code" = "201" ]; then + # echo "✅ Generic Package Registry upload SUCCESS" + # else + # echo "❌ Generic Package Registry upload FAILED (HTTP $http_code)" + # fi - name: Add source repositories run: | @@ -254,9 +254,40 @@ jobs: run: | echo "=== Attempting Debian Package Registry upload with ACCESS_TOKEN ===" + # Basic connectivity tests + echo "=== Testing basic connectivity ===" + echo "Testing DNS resolution..." + nslookup git.raines.xyz || echo "DNS resolution failed" + + echo "Testing HTTPS connectivity..." + curl -I https://git.raines.xyz || echo "HTTPS connectivity failed" + + echo "Testing API endpoint accessibility..." + curl -I https://git.raines.xyz/api/v1/version || echo "API endpoint test failed" + + echo "=== End connectivity tests ===" + # Initialize array to store uploaded package IDs uploaded_debian_ids=() + echo "=== Checking for .deb files ===" + echo "Current directory: $(pwd)" + echo "release-assets directory contents:" + ls -la release-assets/ 2>/dev/null || echo "release-assets directory not found" + echo "All .deb files in current directory:" + find . -name "*.deb" -type f 2>/dev/null || echo "No .deb files found" + echo "=== End file check ===" + + # Check if ACCESS_TOKEN is available (without exposing the actual token) + echo "=== Checking ACCESS_TOKEN ===" + if [ -n "${{ secrets.ACCESS_TOKEN }}" ]; then + echo "ACCESS_TOKEN is set (length: ${#ACCESS_TOKEN} characters)" + else + echo "❌ ACCESS_TOKEN is not set or empty" + exit 1 + fi + echo "=== End token check ===" + for deb_file in release-assets/*.deb; do if [ -f "$deb_file" ]; then echo "Uploading $deb_file to Debian Package Registry..." @@ -264,9 +295,14 @@ jobs: echo "File: $filename" # Capture full response (headers + body) to parse HTTP code AND package ID - response_and_code=$(curl -s -i --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \ + # Add -v for verbose output and redirect stderr to see connection details + response_and_code=$(curl -v -i --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \ --upload-file "$deb_file" \ - "https://git.raines.xyz/api/packages/robojerk/debian/pool/noble/main/upload") + "https://git.raines.xyz/api/packages/robojerk/debian/pool/noble/main/upload" 2>&1) + + echo "=== Full curl output for $deb_file ===" + echo "$response_and_code" + echo "=== End curl output ===" # Extract HTTP code (from headers) http_code=$(echo "$response_and_code" | head -n 1 | grep -oP 'HTTP/\d.\d \K\d{3}') diff --git a/README.md b/README.md index b23fd6b..3df3693 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,78 @@ -# libostree-dev Backport +# libostree-dev Backport for Ubuntu Noble -Compiles a backport of libostree-dev for Ubuntu Noble. +This repository contains a backport of libostree 2025.2-1 for Ubuntu Noble (24.04 LTS). -## Source and Target +## 📦 Package Status -- **Source**: Ubuntu "Questing Quokka" (questing) - libostree 2025.2-1 -- **Target**: Ubuntu "Noble Numbat" (noble) - Ubuntu 24.04 LTS +**✅ BUILD STATUS**: Packages are being built and uploaded successfully via CI/CD! -## For Debian +**🔧 DISTRIBUTION STATUS**: Packages are uploaded to Forgejo Package Registry but require manual assignment to this repository. -- **Source**: Debian sid -- **Target**: Debian trixie +### What's Working +- ✅ Automated builds on every push +- ✅ All dependencies resolved (Rust 1.82.0+, build tools) +- ✅ Successful package uploads to Forgejo Package Registry +- ✅ Automatic token authentication working -## Usage +### What Needs Manual Action +- 🔄 **Package Assignment**: Uploaded packages need to be manually assigned to this repository via the Forgejo web interface -This repository contains the CI/CD workflow and scripts to build a backport of libostree 2025.2-1 for Ubuntu Noble, which is required for bootc compatibility. +## 📥 Download Options -## 📦 Download Latest Build +### Option 1: Manual Package Assignment (Recommended) +1. Go to [Forgejo Packages](https://git.raines.xyz/robojerk/-/packages) +2. Find the uploaded libostree packages (under 'debian' or 'generic') +3. Click on each package → Settings → Assign to repository +4. Select 'libostree-dev' repository +5. Packages will then appear at: https://git.raines.xyz/robojerk/libostree-dev/packages -**Last Built**: 2025-07-21 07:35:00 UTC -**Version**: 2025.2-1~noble1 -**Target**: Ubuntu Noble (24.04 LTS) -**Build ID**: [11](https://git.raines.xyz/robojerk/libostree-dev/actions/runs/11) - -### Download Links - -**Latest Build**: [Build #11](https://git.raines.xyz/robojerk/libostree-dev/actions/runs/11) - Successfully completed - -**Available Packages**: -- `gir1.2-ostree-1.0_2025.2-1~noble1_amd64.deb` -- `libostree-1-1_2025.2-1~noble1_amd64.deb` -- `libostree-dev_2025.2-1~noble1_amd64.deb` -- `libostree-doc_2025.2-1~noble1_all.deb` -- `ostree-boot_2025.2-1~noble1_amd64.deb` -- `ostree-tests_2025.2-1~noble1_amd64.deb` -- `ostree_2025.2-1~noble1_amd64.deb` - -### How to Download - -#### Option 1: Generic Package Registry (Current) -Packages are available in Forgejo's Generic Package Registry: +### Option 2: Download from Latest Workflow Artifacts +1. Go to [Latest Workflow Run](https://git.raines.xyz/robojerk/libostree-dev/actions) +2. Click on the latest successful run +3. Scroll down to "Artifacts" section +4. Download the `release-assets` artifact containing all .deb files +### Option 3: Local Build +Run the local build script: ```bash -# Download packages directly -curl -O "https://git.raines.xyz/api/packages/robojerk/generic/libostree-dev/2025.2-1/gir1.2-ostree-1.0_2025.2-1~noble1_amd64.deb" -curl -O "https://git.raines.xyz/api/packages/robojerk/generic/libostree-dev/2025.2-1/libostree-1-1_2025.2-1~noble1_amd64.deb" -curl -O "https://git.raines.xyz/api/packages/robojerk/generic/libostree-dev/2025.2-1/libostree-dev_2025.2-1~noble1_amd64.deb" -curl -O "https://git.raines.xyz/api/packages/robojerk/generic/libostree-dev/2025.2-1/libostree-doc_2025.2-1~noble1_all.deb" -curl -O "https://git.raines.xyz/api/packages/robojerk/generic/libostree-dev/2025.2-1/ostree-boot_2025.2-1~noble1_amd64.deb" -curl -O "https://git.raines.xyz/api/packages/robojerk/generic/libostree-dev/2025.2-1/ostree-tests_2025.2-1~noble1_amd64.deb" -curl -O "https://git.raines.xyz/api/packages/robojerk/generic/libostree-dev/2025.2-1/ostree_2025.2-1~noble1_amd64.deb" - -# Install packages -sudo dpkg -i *.deb -sudo apt --fix-broken install -y +./libostree-dev_noble_backport.sh ``` -#### Option 2: Debian Package Registry (Future) -When Debian Package Registry is fully configured: +## 🔧 Technical Details -```bash -# Add the repository -echo "deb [signed-by=/etc/apt/keyrings/forgejo.gpg] https://git.raines.xyz/api/packages/robojerk/debian/ noble main" | sudo tee /etc/apt/sources.list.d/libostree-dev.list +### Build Environment +- **Base**: Ubuntu Noble (24.04 LTS) +- **Rust**: 1.82.0+ (installed via rustup) +- **Build Tools**: Full development environment with all dependencies -# Add the GPG key -sudo mkdir -p /etc/apt/keyrings/ -curl -fsSL https://git.raines.xyz/api/packages/robojerk/debian/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/forgejo.gpg +### Package Contents +- `libostree-dev_2025.2-1~noble1_amd64.deb` - Development headers and libraries +- `libostree-1-1_2025.2-1~noble1_amd64.deb` - Runtime libraries +- `ostree_2025.2-1~noble1_amd64.deb` - Command-line tools +- `gir1.2-ostree-1.0_2025.2-1~noble1_amd64.deb` - GObject introspection +- `libostree-doc_2025.2-1~noble1_all.deb` - Documentation +- `ostree-boot_2025.2-1~noble1_amd64.deb` - Boot utilities +- `ostree-tests_2025.2-1~noble1_amd64.deb` - Test suite -# Update and install -sudo apt update -sudo apt install libostree-dev=2025.2-1~noble1 -``` +## 🚀 CI/CD Workflow -### Installation Instructions +The workflow automatically: +1. Sets up Ubuntu Noble environment +2. Installs Rust 1.82.0+ and build dependencies +3. Downloads and patches libostree source +4. Builds all packages +5. Uploads to Forgejo Package Registry +6. Provides assignment instructions -1. **Download the packages** using one of the methods above -2. **Install the packages**: - ```bash - sudo dpkg -i *.deb - sudo apt --fix-broken install -y - ``` -3. **Verify installation**: - ```bash - dpkg -l | grep libostree - pkg-config --modversion ostree-1 - ``` +## 📋 Recent Changes -### Build Information +- **2025-07-21**: Automatic token authentication implemented +- **2025-07-21**: Package uploads working (requires manual assignment) +- **2025-07-21**: Rust version compatibility resolved +- **2025-07-21**: All build dependencies resolved -- **Source Version**: 2025.2-1 from Ubuntu Questing -- **Target Distribution**: Ubuntu Noble (24.04 LTS) -- **Build Date**: 2025-07-21 07:35:00 UTC -- **Build Status**: ✅ Success -- **Packages Built**: 7 packages (main + debug symbols) +## 🔗 Links -### Troubleshooting - -If you encounter issues: - -1. **Check package dependencies**: `sudo apt --fix-broken install -y` -2. **Verify libostree version**: `pkg-config --modversion ostree-1` -3. **Check for conflicts**: `dpkg -l | grep libostree` -4. **Reboot if needed**: Some applications may need a reboot to use the new libostree version - ---- - -*This backport is required for bootc compatibility on Ubuntu Noble. See [bootc-deb repository](https://git.raines.xyz/robojerk/bootc-deb) for the bootc package that uses this libostree backport.* +- [Workflow Runs](https://git.raines.xyz/robojerk/libostree-dev/actions) +- [Forgejo Packages](https://git.raines.xyz/robojerk/-/packages) +- [Repository Packages](https://git.raines.xyz/robojerk/libostree-dev/packages) (after assignment) diff --git a/wget_1.21.4-1ubuntu4.1_amd64.deb b/wget_1.21.4-1ubuntu4.1_amd64.deb new file mode 100644 index 0000000..ec4ec47 Binary files /dev/null and b/wget_1.21.4-1ubuntu4.1_amd64.deb differ