Community APK repository for Wolfi Linux providing Stremio, MPV, and comprehensive media libraries including Qt5 WebEngine.
Hosted on SourceForge • Automated CI/CD • Cryptographically signed • Multi-architecture support
Advanced Melange packaging for complex multimedia dependencies including Qt5 WebEngine compilation with GCC 15 compatibility fixes. This repository demonstrates:
- Complex dependency resolution (25 interdependent packages)
- Cross-compilation for multiple architectures
- Automated CI/CD with cryptographic signing
- Production-ready APK distribution infrastructure
Built as part of PR #69098 to the official Wolfi repository.
Important: This is a community repository providing early access to packages from PR #69098 which is currently under review by the official Wolfi team.
If/when the PR is merged into wolfi-dev/os, this repository may become unnecessary, and users should migrate to the official Wolfi packages. Until then, this repository serves as:
- Early access for users who need these packages immediately
- Testing ground for the package configurations before official inclusion
- Demonstration of advanced Wolfi packaging techniques
- Qt5 WebEngine compilation: Successfully resolved GCC 15 C++20 compatibility issues in Chromium codebase
- Multi-stage dependency building: Orchestrated build order for 25+ interdependent packages
- Production packaging: Native builds for x86_64 architecture with optimized compilation
- Production CI/CD pipeline: Automated build, sign, and deploy workflow with GitHub Actions
- Zero-cost infrastructure: Optimized hosting strategy using SourceForge + GitHub Actions
- Complex problem solving: ICU compatibility, dependency chains, 4+ hour compilation management
# Download and install repository signing key
wget -O /etc/apk/keys/vejeta-wolfi.rsa.pub \
https://sourceforge.net/projects/wolfi/files/keys/vejeta-wolfi.rsa.pub/download
# Add repository to apk (auto-detects architecture)
echo "https://downloads.sourceforge.net/project/wolfi/$(uname -m)" >> /etc/apk/repositories
# Update package index
apk update
# Install packages
apk add stremio mpv qt5-qtwebengineDownload APK files directly from SourceForge
- stremio (4.4.169) - Modern media center application
- mpv - Powerful media player
- qt5-qtbase - Qt5 core libraries
- qt5-qtdeclarative - QML and Qt Quick
- qt5-qtwebengine - Chromium-based web engine (~300MB)
- qt5-qtwebchannel - WebChannel support
- qt5-qtquickcontrols - Qt Quick Controls
- qt5-qtquickcontrols2 - Qt Quick Controls 2
- libass - Subtitle rendering
- libbluray - Blu-ray disc support
- libcdio / libcdio-paranoia - CD-ROM access
- libdvdnav / libdvdread - DVD navigation and reading
- libplacebo - GPU-accelerated video processing
- libvpx - VP8/VP9 video codec
- rubberband - Audio time-stretching
- shaderc - Shader compiler
- vulkan-loader - Vulkan graphics API
- libxcb - X11 C bindings
- libxpresent - X11 Present extension
- mujs - JavaScript interpreter
- uchardet - Character encoding detection
- zimg - Image scaling library
- zlib - Compression library
Total: 25 packages across media, Qt5, graphics, and utilities
GitHub Actions (CI/CD)
↓ Melange build for x86_64
↓ RSA signing with generated keys
↓ APKINDEX generation and verification
↓ Automated rsync deployment over SSH
SourceForge (Distribution)
└── Production APK repository with CDN
- x86_64 - Intel/AMD 64-bit (primary support)
Note: Currently only x86_64 packages are available. Qt5 WebEngine compilation on aarch64 requires 6+ hours, making it impractical for the current CI/CD setup. Future optimizations may include cross-compilation or dedicated ARM build infrastructure.
All packages are:
- Cryptographically signed with RSA keys
- Built from source using Melange reproducible builds
- Automated verification via GitHub Actions
- Open source - all build configurations publicly auditable
# Package signatures are verified automatically by apk
apk verify stremio mpv qt5-qtwebengine| Package | Status | Size | Build Time | Architecture |
|---|---|---|---|---|
| stremio | Passing | ~50MB | ~5 min | x86_64 |
| mpv | Passing | ~20MB | ~7 min | x86_64 |
| qt5-qtwebengine | Passing | ~300MB | ~4+ hours | x86_64 |
| qt5-qtbase | Passing | ~25MB | ~15 min | x86_64 |
| Other libraries | Passing | Varies | 2-10 min | x86_64 |
This repository features a sophisticated two-stage CI/CD pipeline:
Compiles APK packages using Melange with dependency caching:
# Build all packages (full rebuild)
gh workflow run build-packages.yml -R vejeta/wolfi-packages
# Build specific packages (incremental)
gh workflow run build-packages.yml \
-f package_filter="mujs,stremio" \
-R vejeta/wolfi-packages
# Build for specific architecture (default: x86_64)
gh workflow run build-packages.yml \
-f architectures="x86_64,aarch64" \
-R vejeta/wolfi-packagesFeatures:
- Package-level dependency caching (7-day retention)
- Configurable architecture targets (x86_64, aarch64, or both)
- Selective package filtering for faster incremental builds
- Automatic artifact generation for downstream publishing
Cryptographically signs packages and publishes to SourceForge:
# Full repository publish (replaces all packages)
gh workflow run sign-and-publish.yml \
-f run_id=19294275595 \
-R vejeta/wolfi-packages
# Incremental publish (merges with existing repository)
gh workflow run sign-and-publish.yml \
-f run_id=19294275595 \
-f incremental=true \
-R vejeta/wolfi-packagesFull vs Incremental Publishing:
| Mode | Behavior | Use Case | Publish Time* |
|---|---|---|---|
| Full (default) | Replaces entire repository | Initial publish, major updates | ~15 min |
| Incremental | Merges with existing packages | Hotfixes, single package updates | ~25 min |
*Publish time only (sign + upload). Does NOT include build time (~4+ hours for full rebuild with qt5-qtwebengine).
Incremental Mode Benefits:
- Avoids rebuilding unchanged packages (saves 4+ hours for qt5-qtwebengine)
- Downloads existing packages from SourceForge (~10 min for ~1-2GB)
- Merges new packages with existing ones (newer versions replace older)
- Regenerates APKINDEX with complete package list
- Perfect for updating 1-2 packages without full rebuild
Example Workflow - Quick Package Update:
# 1. Build only the updated package (e.g., mujs)
gh workflow run build-packages.yml -f package_filter="mujs"
# Wait ~2 minutes for build completion
# 2. Get the build run ID
BUILD_RUN_ID=$(gh run list --workflow=build-packages.yml --limit=1 --json databaseId --jq '.[0].databaseId')
# 3. Publish incrementally (merges with existing repository)
gh workflow run sign-and-publish.yml -f run_id=$BUILD_RUN_ID -f incremental=true
# Total time breakdown:
# - Build mujs: ~2 min
# - Publish (incremental): ~25 min (download existing + sign + upload)
# Total: ~27 minutes
#
# vs. Full rebuild approach:
# - Build all packages: ~4+ hours (qt5-qtwebengine alone takes 4+ hours)
# - Publish (full): ~15 min
# Total: ~4+ hoursThis repository uses GitHub Actions Cache for efficient, independent builds:
- Cache Duration: 7 days
- Cache Size: ~50 packages (~7 MB compressed)
- Benefit: Build individual packages without rebuilding dependencies
# Check if cache is populated (< 7 days old)
gh cache list -R vejeta/wolfi-packages --key wolfi-packages-consolidated-x86_64
# If cache exists: Build any package independently
gh workflow run build-packages.yml -f package_filter="stremio" -R vejeta/wolfi-packages
# If cache empty: Follow sequential build order
# See build_order_summary.md for detailed dependency instructionsPerformance with populated cache:
- Build time: 7-92 minutes (individual packages)
- No dependency rebuilds required
- Example: Update only
stremiowithout rebuilding entire Qt5 stack
Performance with empty cache (>7 days):
- Build time: 2.5-4.5 hours (full sequential build)
- Must follow strict dependency order
- SourceForge repository acts as fallback dependency source
# Clone repository
git clone https://github.com/vejeta/wolfi-packages.git
cd wolfi-packages
# Install Melange
wget https://github.com/chainguard-dev/melange/releases/download/v0.8.0/melange_0.8.0_linux_amd64.tar.gz
tar -xzf melange_0.8.0_linux_amd64.tar.gz
sudo mv melange /usr/local/bin/
# Build a specific package
./scripts/build-with-melange.sh packages/stremio/stremio.yaml x86_64These packages originated from PR #69098 submitted to the official Wolfi repository. As the PR review process continues, this community repository provides early access to these packages for users who need them immediately.
- Development time: 3 weeks of intensive packaging work
- Lines of configuration: 2000+ YAML/shell scripts
- Build complexity: 25 packages, 17 core dependencies
- Repository size: ~800MB (x86_64 architecture)
- Largest package: qt5-qtwebengine (300MB) - Full Chromium web engine
- Build infrastructure cost: $0/month (optimized GitHub Actions + SourceForge)
- Package compatibility: GCC 15, modern Wolfi base system
- Technical challenges solved: ICU version conflicts, C++20 compatibility, 4+ hour compilation times
- Build constraints: Qt5 WebEngine aarch64 compilation exceeds 6-hour CI limits
This repository was created to address several needs:
- Immediate availability: Chainguard has not yet merged PR #69098
- User demand: Community needs these multimedia packages for production use
- Technical showcase: Demonstrates advanced Wolfi packaging and CI/CD capabilities
- Learning platform: Open source example of complex dependency management
GitHub Pages has a 100 MB file size limit, making it unsuitable for large packages like qt5-qtwebengine (300MB). SourceForge provides:
- No file size limits for large binary packages
- Unlimited bandwidth with global CDN
- Reliable rsync/SSH access for automated deployment
- Production-grade hosting for open source projects
- Zero hosting costs with professional infrastructure
- Package Issues: Report at GitHub Issues
- Build Problems: Check GitHub Actions logs
- Security Concerns: Report responsibly via GitHub Issues with "security" label
- Installation Issues: Review installation instructions and verify signing key
- Build Failures: Examine GitHub Actions for detailed logs
- Package Requests: Open an issue with technical requirements
- Upstream Wolfi: Visit https://wolfi.dev for official documentation
- Wolfi Team & Chainguard: For creating an excellent security-focused Linux distribution and Melange tooling
- SourceForge: For providing free, reliable hosting and bandwidth for open source projects
- Stremio: For developing an outstanding cross-platform media center application
- Open Source Community: For the foundational libraries that make this multimedia stack possible
Build configurations and automation scripts: MIT License
Individual packages: Retain their respective upstream licenses (see each package's .yaml configuration file for details)
Maintained by: Juan Manuel Méndez Rey (vejeta)
Last updated: 2025-11-11
Repository: https://github.com/vejeta/wolfi-packages
Distribution: https://sourceforge.net/projects/wolfi/