Some checks failed
Build libfuse / Build and Test (push) Failing after 1m39s
- Add step to install git, curl, wget, ca-certificates in Debian container - This fixes the 'git: not found' error from run #20 - Debian container needs basic tools installed before checkout step - Install tools before attempting to clone repository The Debian container is minimal and doesn't include git by default, causing the checkout step to fail with 'command not found' error.
227 lines
8.8 KiB
YAML
227 lines
8.8 KiB
YAML
name: Build libfuse
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, master ]
|
|
pull_request:
|
|
branches: [ main, master ]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
# Main build and test job
|
|
build-and-test:
|
|
name: Build and Test
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: debian:trixie
|
|
|
|
steps:
|
|
- name: Install basic tools
|
|
run: |
|
|
echo "Installing basic tools in Debian container..."
|
|
apt-get update
|
|
apt-get install -y git curl wget ca-certificates
|
|
echo "Basic tools installed successfully"
|
|
|
|
- name: Checkout code
|
|
run: |
|
|
echo "Cloning repository..."
|
|
# Create workspace directory
|
|
mkdir -p /workspace/particle-os/libfuse
|
|
# Clone repository
|
|
git clone https://git.raines.xyz/particle-os/libfuse.git /tmp/libfuse
|
|
cd /tmp/libfuse
|
|
git fetch --all
|
|
git checkout ${{ github.sha || gitea.sha || 'main' }}
|
|
# Copy files to workspace
|
|
cp -r /tmp/libfuse/* /workspace/particle-os/libfuse/ 2>/dev/null || true
|
|
cp -r /tmp/libfuse/.* /workspace/particle-os/libfuse/ 2>/dev/null || true
|
|
# Verify files are copied
|
|
ls -la /workspace/particle-os/libfuse/
|
|
|
|
- name: Build libfuse
|
|
run: |
|
|
# Build directly in Debian environment
|
|
cd /workspace/particle-os/libfuse
|
|
set -e
|
|
|
|
# Add Debian GPG keys FIRST - this must happen before any apt-get update
|
|
echo "Adding Debian GPG keys..."
|
|
apt-get update
|
|
apt-get install -y debian-archive-keyring
|
|
|
|
# Install curl
|
|
echo "Installing curl..."
|
|
apt-get install -y curl
|
|
|
|
# Try apt-cacher-ng first, fallback to Debian's automatic mirror selection
|
|
echo "Checking for apt-cacher-ng availability..."
|
|
|
|
# Quick check with timeout to avoid hanging
|
|
if timeout 10 curl -s --connect-timeout 5 http://192.168.1.101:3142/acng-report.html > /dev/null 2>&1; then
|
|
echo "✅ apt-cacher-ng is available, configuring proxy sources..."
|
|
echo "deb http://192.168.1.101:3142/ftp.debian.org/debian trixie main contrib non-free" > /etc/apt/sources.list
|
|
echo "deb-src http://192.168.1.101:3142/ftp.debian.org/debian trixie main contrib non-free" >> /etc/apt/sources.list
|
|
echo "Using apt-cacher-ng proxy for faster builds"
|
|
else
|
|
echo "⚠️ apt-cacher-ng not available or slow, using Debian's automatic mirror selection..."
|
|
echo "deb http://httpredir.debian.org/debian trixie main contrib non-free" > /etc/apt/sources.list
|
|
echo "deb-src http://deb.debian.org/debian trixie main contrib non-free" >> /etc/apt/sources.list
|
|
echo "Using httpredir.debian.org for automatic mirror selection"
|
|
fi
|
|
|
|
# Update and install remaining dependencies
|
|
apt-get update
|
|
apt-get install -y \
|
|
build-essential \
|
|
cmake \
|
|
pkg-config \
|
|
libssl-dev \
|
|
libfuse-dev \
|
|
fuse3 \
|
|
meson \
|
|
ninja-build \
|
|
git \
|
|
wget \
|
|
dpkg-dev \
|
|
signify-openbsd \
|
|
python3-pytest \
|
|
libudev-dev
|
|
|
|
# Download libfuse source
|
|
wget https://github.com/libfuse/libfuse/releases/download/fuse-3.10.0/fuse-3.10.0.tar.xz
|
|
wget https://github.com/libfuse/libfuse/releases/download/fuse-3.10.0/fuse-3.10.0.tar.xz.asc
|
|
|
|
# Try to verify signature if possible, but continue if it fails
|
|
echo "Attempting signature verification..."
|
|
if wget -q https://github.com/libfuse/libfuse/releases/download/fuse-3.10.0/fuse-3.10.0.pub 2>/dev/null; then
|
|
signify -V -m fuse-3.10.0.tar.xz -p fuse-3.10.0.pub && echo "Signature verification successful"
|
|
else
|
|
echo "Signature file not available, skipping verification"
|
|
fi
|
|
tar -xf fuse-3.10.0.tar.xz
|
|
cd fuse-3.10.0
|
|
|
|
# Build libfuse
|
|
echo "Current directory: $(pwd)"
|
|
echo "Contents: $(ls -la)"
|
|
rm -rf build
|
|
mkdir build && cd build
|
|
echo "Build directory: $(pwd)"
|
|
meson setup --prefix=/usr --libdir=lib/x86_64-linux-gnu ..
|
|
ninja
|
|
|
|
# Run tests
|
|
python3 -m pytest test/ || echo "Some tests may require root privileges"
|
|
|
|
# Install
|
|
ninja install
|
|
ldconfig
|
|
|
|
# Create Debian package
|
|
cd /workspace/fuse-3.10.0
|
|
mkdir -p libfuse3-3_3.10.0-1_amd64/DEBIAN
|
|
mkdir -p libfuse3-3_3.10.0-1_amd64/usr/lib/x86_64-linux-gnu
|
|
mkdir -p libfuse3-3_3.10.0-1_amd64/usr/include/fuse3
|
|
mkdir -p libfuse3-3_3.10.0-1_amd64/usr/lib/pkgconfig
|
|
|
|
# Copy libraries
|
|
cp /usr/lib/x86_64-linux-gnu/libfuse3.so.3.10.0 libfuse3-3_3.10.0-1_amd64/usr/lib/x86_64-linux-gnu/
|
|
ln -s libfuse3.so.3.10.0 libfuse3-3_3.10.0-1_amd64/usr/lib/x86_64-linux-gnu/libfuse3.so.3
|
|
ln -s libfuse3.so.3 libfuse3-3_3.10.0-1_amd64/usr/lib/x86_64-linux-gnu/libfuse3.so
|
|
|
|
# Copy headers
|
|
cp -r /usr/include/fuse3/* libfuse3-3_3.10.0-1_amd64/usr/include/fuse3/
|
|
|
|
# Copy pkg-config files
|
|
cp /usr/lib/pkgconfig/fuse3.pc libfuse3-3_3.10.0-1_amd64/usr/lib/pkgconfig/
|
|
|
|
# Create control file
|
|
cat > libfuse3-3_3.10.0-1_amd64/DEBIAN/control << "CONTROL_EOF"
|
|
Package: libfuse3-3
|
|
Version: 3.10.0-1
|
|
Section: libs
|
|
Priority: optional
|
|
Architecture: amd64
|
|
Depends: libc6 (>= 2.17)
|
|
Description: Filesystem in Userspace (FUSE) v3 library
|
|
FUSE (Filesystem in Userspace) is a simple interface for userspace
|
|
programs to export a virtual filesystem to the Linux kernel. FUSE
|
|
also aims to provide a secure method for non privileged users to
|
|
create and mount their own filesystem implementations.
|
|
.
|
|
This package contains the FUSE v3 shared library.
|
|
CONTROL_EOF
|
|
|
|
# Build the package
|
|
dpkg-deb --build libfuse3-3_3.10.0-1_amd64
|
|
|
|
# Test package installation
|
|
dpkg -i libfuse3-3_3.10.0-1_amd64.deb || true
|
|
apt-get install -f -y
|
|
|
|
# Verify the library is available
|
|
ldconfig -p | grep libfuse3
|
|
pkg-config --exists fuse3 && echo "fuse3.pc found" || echo "fuse3.pc not found"
|
|
|
|
- name: Prepare artifacts
|
|
run: |
|
|
echo "Preparing artifacts for download..."
|
|
mkdir -p artifacts
|
|
|
|
# Copy the built package
|
|
if [ -f libfuse3-3_3.10.0-1_amd64.deb ]; then
|
|
cp libfuse3-3_3.10.0-1_amd64.deb artifacts/
|
|
echo "✅ Package copied to artifacts directory"
|
|
ls -la artifacts/
|
|
|
|
# Create a summary
|
|
echo "# libfuse3-3 Package Build" > artifacts/BUILD_INFO.md
|
|
echo "" >> artifacts/BUILD_INFO.md
|
|
echo "## Package Information" >> artifacts/BUILD_INFO.md
|
|
echo "- **Package**: libfuse3-3" >> artifacts/BUILD_INFO.md
|
|
echo "- **Version**: 3.10.0-1" >> artifacts/BUILD_INFO.md
|
|
echo "- **Architecture**: amd64" >> artifacts/BUILD_INFO.md
|
|
echo "- **Build Date**: $(date '+%Y-%m-%d %H:%M:%S UTC')" >> artifacts/BUILD_INFO.md
|
|
echo "- **Commit**: $(git rev-parse --short HEAD 2>/dev/null || echo 'Unknown')" >> artifacts/BUILD_INFO.md
|
|
echo "" >> artifacts/BUILD_INFO.md
|
|
echo "## Package Details" >> artifacts/BUILD_INFO.md
|
|
dpkg -I libfuse3-3_3.10.0-1_amd64.deb >> artifacts/BUILD_INFO.md
|
|
|
|
# Create archive for easy download
|
|
tar -czf libfuse3-3-build-$(date +%Y%m%d-%H%M%S).tar.gz artifacts/
|
|
echo "✅ Archive created: libfuse3-3-build-*.tar.gz"
|
|
else
|
|
echo "❌ Package not found!"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Show apt-cacher statistics
|
|
run: |
|
|
echo "=== Apt-Cacher-NG Statistics ==="
|
|
if curl -s http://localhost:3143/acng-report.html 2>/dev/null | grep -E "(Hits|Misses|Bytes|Files)"; then
|
|
echo "Cache statistics retrieved successfully"
|
|
else
|
|
echo "Apt-cacher-ng not available or no statistics found"
|
|
fi
|
|
|
|
- name: Final summary
|
|
run: |
|
|
echo ""
|
|
echo "🎉 BUILD COMPLETE! 🎉"
|
|
echo "================================"
|
|
echo ""
|
|
echo "📦 Your libfuse3-3 package is ready!"
|
|
echo ""
|
|
echo "Available files:"
|
|
ls -la *.deb *.tar.gz 2>/dev/null || echo "No packages found"
|
|
echo ""
|
|
echo "📁 Artifacts directory contents:"
|
|
ls -la artifacts/ 2>/dev/null || echo "No artifacts directory"
|
|
echo ""
|
|
echo "✅ Build completed successfully!"
|
|
echo " - Package: libfuse3-3_3.10.0-1_amd64.deb"
|
|
echo " - Archive: libfuse3-3-build-*.tar.gz"
|
|
echo " - Info: artifacts/BUILD_INFO.md"
|
|
echo ""
|
|
|