All installer test failures have been resolved. Re-enabling the full test
suite now that the install.sh script works correctly in Docker containers.
Installer tests are now passing on all platforms:
- debian:12 ✓
- debian:trixie ✓
- ubuntu:22.04 ✓
- ubuntu:24.04 ✓
- archlinux:latest ✓
Only install libffi-dev on armhf (32-bit ARM) systems where cffi needs
to compile from source. x86_64 and arm64 have pre-built cffi wheels
available, so they don't need the development headers.
Changes:
- install.sh: Detect architecture and conditionally add libffi-dev for armhf
- test_installer.sh: Show libffi-dev in output only for armhf systems
- test.yml: Update ARM CI summary to reflect conditional dependency
This reduces unnecessary dependencies on x86_64 and arm64 systems while
maintaining full compatibility with 32-bit Raspberry Pi devices.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add QEMU-based ARM testing for both armhf (32-bit) and arm64 (64-bit)
architectures to validate installer on Raspberry Pi OS Lite. Tests run
only on PRs to main branch to conserve CI resources while ensuring
compatibility with ARM platforms before merge.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Disabling unit and integration test jobs to save GitHub Actions minutes
while troubleshooting installer test failures in Docker containers.
This reduces CI runtime from ~4-5 minutes to ~1 minute per run.
To re-enable: remove the 'if: false' lines from unit-tests and
integration-tests jobs in .github/workflows/test.yml
Add comprehensive Arch Linux testing to installer-test job.
Changes to .github/workflows/test.yml:
- Add archlinux:latest to test matrix (5 OS versions tested now)
- Set continue-on-error for Arch (rolling release can expose bleeding-edge issues)
- Arch tests run in parallel with Debian/Ubuntu tests
Changes to tests/test_installer.sh:
- Refactored to be OS-agnostic (supports Debian/Ubuntu AND Arch Linux)
- Added OS type detection (apt-get vs pacman)
- Added check_package() helper function (uses dpkg or pacman based on OS)
- Conditional Debian environment setup (DEBIAN_FRONTEND only for Debian/Ubuntu)
- OS-specific package name verification:
- Debian/Ubuntu: python3-gi, python3-dbus, python3-cairo, bluez
- Arch Linux: python-gobject, python-dbus, python-cairo, bluez, bluez-utils
- OS-specific build tool checks (dpkg -l vs pacman -Q)
- Updated summary output to show correct packages per OS
install.sh changes:
- NONE - Arch Linux support already complete and correct!
CI Matrix now tests:
- Debian 12 (Bookworm - current stable)
- Debian Trixie (testing - next release) [non-blocking]
- Ubuntu 22.04 LTS (Jammy)
- Ubuntu 24.04 LTS (Noble)
- Arch Linux (rolling release) [non-blocking] [NEW]
Benefits:
- Validates install.sh Arch support works in practice
- Tests with newer BlueZ/Python versions (rolling release)
- Forward compatibility testing
- Broader Linux distribution coverage
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add forward compatibility testing with Debian 13 "Trixie" (testing release).
Changes:
- Add debian:trixie to installer-test matrix
- Set continue-on-error for Trixie (testing can be unstable)
- Add fail-fast: false to run all OS tests even if one fails
- Update comments to clarify Debian/Ubuntu versions
Benefits:
- Early detection of BlueZ/DBus API changes
- Test compatibility with newer system packages
- Forward compatibility assurance before Trixie stable release
- Non-blocking (Trixie failures won't block merges)
Matrix now tests:
- Debian 12 (Bookworm - current stable)
- Debian Trixie (testing - next release) [NEW]
- Ubuntu 22.04 LTS (Jammy)
- Ubuntu 24.04 LTS (Noble)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Ubuntu 24.04 CI was hanging on tzdata interactive timezone prompt.
Changes:
- tests/test_installer.sh: Set DEBIAN_FRONTEND=noninteractive, pre-configure timezone
- tests/test_installer.sh: Add apt-get options to suppress prompts
- .github/workflows/test.yml: Set environment variables in installer-test container
- install.sh: Auto-detect CI environment and enable non-interactive mode
This follows Debian/Ubuntu best practices for containerized environments and
prevents interactive prompts from blocking CI runs.
Fixes Ubuntu 24.04 installer-test CI failure.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Strategy 1: Use pre-compiled system packages instead of building from source
- install.sh: Add python3-gi, python3-cairo to apt-get install
- install.sh: Add python-gobject, python-cairo to pacman install
- install.sh: Install only bleak and bluezero via pip (skip compiled packages)
- README.md: Update dependency instructions with system packages
- README.md: Add explanation of why system packages are preferred
Strategy 2: Add CI integration test for fresh Debian/Ubuntu systems
- tests/test_installer.sh: New integration test script
- .github/workflows/test.yml: Add installer-test job with matrix for Debian 12, Ubuntu 22.04, 24.04
- Tests reproduce real user experience and catch missing dependencies
Benefits:
- Zero compilation time (seconds vs minutes)
- No build tools needed (meson, cmake)
- No dev headers needed (libglib2.0-dev, libcairo2-dev, etc.)
- Faster installation on resource-constrained devices (Raspberry Pi)
- Prevents future dependency documentation issues
Fixes#4🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>