chore(ci): test the distros the docs promise, and fix the docs that drifted (#773)
This commit is contained in:
@@ -4,7 +4,7 @@ on:
|
||||
push:
|
||||
branches: [ main, master ]
|
||||
paths:
|
||||
- 'install.sh'
|
||||
- '**/*.sh'
|
||||
- 'scripts/**'
|
||||
- 'pyproject.toml'
|
||||
- 'src/vocalinux/version.py'
|
||||
@@ -12,7 +12,7 @@ on:
|
||||
pull_request:
|
||||
branches: [ main, master ]
|
||||
paths:
|
||||
- 'install.sh'
|
||||
- '**/*.sh'
|
||||
- 'scripts/**'
|
||||
- 'pyproject.toml'
|
||||
- 'src/vocalinux/version.py'
|
||||
@@ -20,6 +20,21 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
# The repo's only `bash -n install.sh` used to live inside the matrix below,
|
||||
# under continue-on-error, so a syntax error in a 4698-line installer could
|
||||
# not fail a build anywhere. This job is the one thing here allowed to fail.
|
||||
# It is not phase 2.4 — nothing here runs the installer yet — it just stops
|
||||
# the cheapest check we have from being advisory.
|
||||
syntax:
|
||||
name: Shell syntax
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: bash -n every shell script we ship
|
||||
run: |
|
||||
set -euo pipefail
|
||||
git ls-files -z '*.sh' | xargs -0 -n1 -t bash -n
|
||||
|
||||
test:
|
||||
name: Test on ${{ matrix.container }}
|
||||
runs-on: ubuntu-latest
|
||||
@@ -27,11 +42,16 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# README.md advertises Arch and Tumbleweed as tested and neither was
|
||||
# here; fedora:39 has been EOL since 2024 while the AppImage boot
|
||||
# matrix moved to 42. This list is what the docs promise.
|
||||
container:
|
||||
- ubuntu:24.04
|
||||
- ubuntu:26.04
|
||||
- debian:12
|
||||
- fedora:39
|
||||
- fedora:42
|
||||
- archlinux:latest
|
||||
- opensuse/tumbleweed
|
||||
container:
|
||||
image: ${{ matrix.container }}
|
||||
|
||||
@@ -54,6 +74,13 @@ jobs:
|
||||
echo "⚠ dnf install failed, trying with --nogpgcheck..."
|
||||
dnf install -y --nogpgcheck bash curl python3 git
|
||||
}
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
# -Syu, never -Sy: archlinux:latest lags the mirrors and a partial
|
||||
# upgrade would be our breakage, not the installer's.
|
||||
pacman -Syu --noconfirm bash curl python git
|
||||
elif command -v zypper >/dev/null 2>&1; then
|
||||
zypper --non-interactive --gpg-auto-import-keys refresh
|
||||
zypper --non-interactive install bash curl python3 git
|
||||
fi
|
||||
|
||||
# ============================================================================
|
||||
@@ -139,6 +166,10 @@ jobs:
|
||||
apt-get install -y pkg-config libgirepository1.0-dev 2>/dev/null || true
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
dnf install -y pkg-config gobject-introspection-devel 2>/dev/null || true
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
pacman -S --needed --noconfirm pkgconf gobject-introspection 2>/dev/null || true
|
||||
elif command -v zypper >/dev/null 2>&1; then
|
||||
zypper --non-interactive install pkgconf-pkg-config gobject-introspection-devel 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Test typelib path detection
|
||||
@@ -227,6 +258,10 @@ jobs:
|
||||
apt-get install -y python3-venv python3-pip python3-dev 2>/dev/null || true
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
dnf install -y python3-virtualenv python3-pip python3-devel 2>/dev/null || true
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
pacman -S --needed --noconfirm python python-pip 2>/dev/null || true
|
||||
elif command -v zypper >/dev/null 2>&1; then
|
||||
zypper --non-interactive install python3-pip python3-devel 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Create a temporary venv to test the flow
|
||||
@@ -271,13 +306,15 @@ jobs:
|
||||
echo " ✓ ubuntu:24.04 - Full support expected"
|
||||
echo " ✓ ubuntu:26.04 - Full support expected"
|
||||
echo " ✓ debian:12 - Full support expected"
|
||||
echo " ⚠ fedora:39 - Good support, minor differences expected"
|
||||
echo " ⚠ fedora:42 - Good support, minor differences expected"
|
||||
echo " ⚠ archlinux:latest - Rolling; also the AUR package's distro"
|
||||
echo " ⚠ opensuse/tumbleweed - Rolling, least exercised"
|
||||
echo ""
|
||||
echo "Key tests performed:"
|
||||
echo " 1. /etc/os-release availability"
|
||||
echo " 2. Distro detection function"
|
||||
echo " 3. Typelib path detection"
|
||||
echo " 4. install.sh syntax validation"
|
||||
echo " 4. install.sh syntax validation (also gated in the syntax job)"
|
||||
echo " 5. Dependency checker"
|
||||
echo " 6. Installer --help command"
|
||||
echo " 7. Virtual environment creation"
|
||||
|
||||
@@ -216,8 +216,11 @@ flatpak run com.vocalinux.Vocalinux
|
||||
|
||||
The Flatpak ships the whisper.cpp engine with Vulkan GPU support and runs through
|
||||
XWayland on Wayland sessions. See [`packaging/flatpak/README.md`](packaging/flatpak/README.md)
|
||||
for build details, permissions, and Flathub submission notes. Flathub publishing
|
||||
is in progress.
|
||||
for build details, permissions, and Flathub submission notes. It is **not on
|
||||
Flathub**: the submission ([flathub/flathub#9368](https://github.com/flathub/flathub/pull/9368))
|
||||
was closed on 2026-07-23 on policy grounds. The manifest is complete and builds
|
||||
in CI on both arches, so build it yourself as above; where it gets published is
|
||||
tracked in [#167](https://github.com/VocaHQ/vocalinux/issues/167).
|
||||
|
||||
### Alternative: Install from Source
|
||||
|
||||
@@ -266,7 +269,7 @@ Or launch it from your application menu!
|
||||
|
||||
## 📋 Requirements
|
||||
|
||||
- **OS**: Linux (tested on Ubuntu 24.04+, Debian 12+, Fedora 39+, Arch Linux, openSUSE Tumbleweed)
|
||||
- **OS**: Linux (tested on Ubuntu 24.04+, Debian 12+, Fedora 42+, Arch Linux, openSUSE Tumbleweed)
|
||||
- **Python**: 3.11 or newer
|
||||
- **Display**: X11 or Wayland
|
||||
- **Hardware**: Microphone for voice input
|
||||
@@ -450,7 +453,7 @@ This script generates all three sounds using the same smooth glide algorithm. Yo
|
||||
- [x] ~~Vulkan GPU support~~ ✅
|
||||
- [x] In-app update mechanism ✅
|
||||
- [x] ~~Wayland support via IBus~~ ✅
|
||||
- [x] ~~Flatpak packaging~~ ✅ (Flathub submission in progress)
|
||||
- [x] ~~Flatpak packaging~~ ✅ (manifest ships; not on Flathub — see #167)
|
||||
- [ ] Application-specific commands
|
||||
- [ ] Debian/Ubuntu package (.deb)
|
||||
- [ ] Voice command customization
|
||||
|
||||
@@ -9,10 +9,10 @@ The cross-distribution compatibility improvements have been implemented in phase
|
||||
| Phase 1 | ✅ Complete | Dynamic GI_TYPELIB_PATH detection using pkg-config, multi-arch support, ALSA library fallbacks |
|
||||
| Phase 2 | ✅ Complete | Enhanced distro detection (Gentoo, Alpine, Void, Solus, Mageia) |
|
||||
| Phase 3 | ✅ Complete | System dependency checker, improved error messages |
|
||||
| Phase 4 | ✅ Complete | CI test matrix, pkg-config as core dependency |
|
||||
| Phase 4 | 🟡 Partial | pkg-config as a core dependency ✅. The CI distro matrix covers six containers, but it checks detection logic, shell syntax and `--help` — it never runs the installer, and the container jobs are `continue-on-error`. Real install runs are tracked as phase 2.4 of [#701](https://github.com/VocaHQ/vocalinux/issues/701) |
|
||||
| **Phase 5** | ✅ **Complete** | **Fixed remaining hardcoded GI_TYPELIB_PATH values in install.sh and CI workflow** |
|
||||
| **Phase 6** | ✅ **Complete** | **Added wrapper script verification tests, updated documentation** |
|
||||
| **Phase 7** | ✅ **Complete** | **Flatpak packaging (whisper.cpp engine) for universal distribution support — see [`packaging/flatpak/`](../packaging/flatpak/README.md). Flathub submission in progress.** |
|
||||
| **Phase 7** | ✅ **Complete** | **Flatpak packaging (whisper.cpp engine) for universal distribution support — see [`packaging/flatpak/`](../packaging/flatpak/README.md). Not on Flathub: submission [flathub#9368](https://github.com/flathub/flathub/pull/9368) closed 2026-07-23 on policy grounds; channel tracked in [#167](https://github.com/VocaHQ/vocalinux/issues/167).** |
|
||||
| Phase 8 | 📋 Planned | Snap packaging for Ubuntu Software Store |
|
||||
|
||||
## Technical Implementation
|
||||
@@ -53,7 +53,7 @@ interpreter rather than the release label.
|
||||
|--------------|---------|--------|-------|
|
||||
| Ubuntu | 24.04+ | ✅ Full Support | 22.04 ships Python 3.10, below the 3.11 floor |
|
||||
| Debian | 12+, Testing | ✅ Full Support | Primary target; use Ayatana AppIndicator |
|
||||
| Fedora | 39+ | ✅ Good Support | Uses lib64 paths, fully supported |
|
||||
| Fedora | 42+ | ✅ Good Support | Uses lib64 paths; 42 is the oldest Fedora upstream still supports, and the one in the CI matrix |
|
||||
| Arch Linux | Rolling | ✅ Good Support | Community tested, rolling release compatible |
|
||||
| openSUSE | Tumbleweed | ✅ Good Support | Good support with zypper package manager |
|
||||
| Linux Mint | On Ubuntu 24.04+ | ✅ Good Support | Mint 22 qualifies; Mint 21 is on Ubuntu 22.04, below the floor |
|
||||
|
||||
+1
-1
@@ -140,7 +140,7 @@ On Ubuntu 24.04+ or Pop!_OS, install `libgirepository-2.0-dev` if
|
||||
|
||||
| Requirement | Details |
|
||||
|-------------|---------|
|
||||
| **Operating System** | Debian 12+, Ubuntu 24.04+, Fedora 39+, Arch Linux |
|
||||
| **Operating System** | Debian 12+, Ubuntu 24.04+, Fedora 42+, Arch Linux, openSUSE Tumbleweed |
|
||||
| **Python** | 3.11 or newer |
|
||||
| **Display Server** | X11 or Wayland |
|
||||
| **Hardware** | Microphone for speech input |
|
||||
|
||||
@@ -72,6 +72,13 @@ pipx run flatpak-pip-generator \
|
||||
|
||||
## Flathub Submission Notes
|
||||
|
||||
Read this first: the submission,
|
||||
[flathub/flathub#9368](https://github.com/flathub/flathub/pull/9368), was
|
||||
**closed on 2026-07-23** on policy grounds — the generative-AI policy, plus a
|
||||
"tray-only application" reading. Nothing below was the reason it failed, and
|
||||
re-submitting without addressing that is a repeat. See
|
||||
[#167](https://github.com/VocaHQ/vocalinux/issues/167) for the channel decision.
|
||||
|
||||
1. Change the `vocalinux` module source from `type: dir` to a tagged release:
|
||||
|
||||
```yaml
|
||||
|
||||
Reference in New Issue
Block a user