chore(ci): test the distros the docs promise, and fix the docs that drifted (#773)

This commit is contained in:
Sergey
2026-09-04 23:28:58 -07:00
committed by GitHub
parent e61133e246
commit a46000e249
5 changed files with 60 additions and 13 deletions
+42 -5
View File
@@ -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"
+7 -4
View File
@@ -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
+3 -3
View File
@@ -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
View File
@@ -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 |
+7
View File
@@ -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