fix(appimage): build against a glibc floor users actually have (#743)
* build(appimage): pin the interpreter, packages and tooling * ci(appimage): build inside a pinned ubuntu 22.04 image * test(appimage): guard the pins and the base image * docs: state the AppImage glibc floor * fix(appimage): bundle libibus with its typelib * ci(appimage): let the container run the isolated GI smoke test * fix(appimage): keep the bundle's libraries out of host binaries * fix(appimage): bundle libgpg-error with the libgcrypt that needs it * docs(agents): require host_env() for spawned binaries * ci: run the AppImage jobs when its other inputs change * fix(appimage): check every bundled typelib, not just the seeded ones * fix(ibus): keep the bundle when respawning our own interpreter * fix(injection): pass host_env() to setxkbmap and notify-send * test(ibus): wait for the IBus warmup thread before asserting
This commit is contained in:
@@ -29,35 +29,6 @@ jobs:
|
||||
python-version: '3.11'
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
portaudio19-dev \
|
||||
python3-dev \
|
||||
libgirepository1.0-dev \
|
||||
libgirepository-2.0-dev \
|
||||
pkg-config \
|
||||
libcairo2-dev \
|
||||
gobject-introspection \
|
||||
gir1.2-gtk-3.0 \
|
||||
gir1.2-appindicator3-0.1 \
|
||||
gir1.2-ayatanaappindicator3-0.1 \
|
||||
gir1.2-notify-0.7 \
|
||||
gir1.2-dbusmenu-glib-0.4 \
|
||||
gir1.2-ibus-1.0 \
|
||||
gir1.2-rsvg-2.0 \
|
||||
librsvg2-common \
|
||||
libdbusmenu-gtk3-4 \
|
||||
libnotify4 \
|
||||
cmake \
|
||||
ninja-build \
|
||||
build-essential \
|
||||
libvulkan-dev \
|
||||
glslc \
|
||||
spirv-headers \
|
||||
spirv-tools
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip setuptools wheel build twine
|
||||
@@ -103,11 +74,19 @@ jobs:
|
||||
done
|
||||
ls -la dist/
|
||||
|
||||
# glslc is built from the pinned shaderc commit inside the container -
|
||||
# Ubuntu 22.04 packages none - and depends on nothing but that commit.
|
||||
- name: Cache AppImage build tools
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/vocalinux-appimage
|
||||
key: appimage-tools-${{ runner.arch }}-${{ hashFiles('packaging/appimage/tool_checksums.txt') }}
|
||||
|
||||
- name: Build AppImage (x86_64)
|
||||
env:
|
||||
VOCALINUX_APPIMAGE_REQUIRE_VULKAN: "1"
|
||||
run: |
|
||||
bash packaging/appimage/build.sh dist/*.whl "${{ steps.version.outputs.version }}" dist
|
||||
bash packaging/appimage/docker-build.sh dist/*.whl "${{ steps.version.outputs.version }}" dist
|
||||
ls -la dist/*.AppImage
|
||||
|
||||
- name: Cleanup old nightly releases
|
||||
@@ -287,35 +266,6 @@ jobs:
|
||||
python-version: '3.11'
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
portaudio19-dev \
|
||||
python3-dev \
|
||||
libgirepository1.0-dev \
|
||||
libgirepository-2.0-dev \
|
||||
pkg-config \
|
||||
libcairo2-dev \
|
||||
gobject-introspection \
|
||||
gir1.2-gtk-3.0 \
|
||||
gir1.2-appindicator3-0.1 \
|
||||
gir1.2-ayatanaappindicator3-0.1 \
|
||||
gir1.2-notify-0.7 \
|
||||
gir1.2-dbusmenu-glib-0.4 \
|
||||
gir1.2-ibus-1.0 \
|
||||
gir1.2-rsvg-2.0 \
|
||||
librsvg2-common \
|
||||
libdbusmenu-gtk3-4 \
|
||||
libnotify4 \
|
||||
cmake \
|
||||
ninja-build \
|
||||
build-essential \
|
||||
libvulkan-dev \
|
||||
glslc \
|
||||
spirv-headers \
|
||||
spirv-tools
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip setuptools wheel build
|
||||
@@ -325,11 +275,19 @@ jobs:
|
||||
python -m build
|
||||
ls -la dist/
|
||||
|
||||
# glslc is built from the pinned shaderc commit inside the container -
|
||||
# Ubuntu 22.04 packages none - and depends on nothing but that commit.
|
||||
- name: Cache AppImage build tools
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/vocalinux-appimage
|
||||
key: appimage-tools-${{ runner.arch }}-${{ hashFiles('packaging/appimage/tool_checksums.txt') }}
|
||||
|
||||
- name: Build AppImage (aarch64)
|
||||
env:
|
||||
VOCALINUX_APPIMAGE_REQUIRE_VULKAN: "1"
|
||||
run: |
|
||||
bash packaging/appimage/build.sh dist/*.whl "${{ needs.nightly.outputs.version }}" dist
|
||||
bash packaging/appimage/docker-build.sh dist/*.whl "${{ needs.nightly.outputs.version }}" dist
|
||||
ls -la dist/*.AppImage
|
||||
|
||||
- name: Attach to nightly release
|
||||
|
||||
@@ -30,35 +30,6 @@ jobs:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
portaudio19-dev \
|
||||
python3-dev \
|
||||
libgirepository1.0-dev \
|
||||
libgirepository-2.0-dev \
|
||||
pkg-config \
|
||||
libcairo2-dev \
|
||||
gobject-introspection \
|
||||
gir1.2-gtk-3.0 \
|
||||
gir1.2-appindicator3-0.1 \
|
||||
gir1.2-ayatanaappindicator3-0.1 \
|
||||
gir1.2-notify-0.7 \
|
||||
gir1.2-dbusmenu-glib-0.4 \
|
||||
gir1.2-ibus-1.0 \
|
||||
gir1.2-rsvg-2.0 \
|
||||
librsvg2-common \
|
||||
libdbusmenu-gtk3-4 \
|
||||
libnotify4 \
|
||||
cmake \
|
||||
ninja-build \
|
||||
build-essential \
|
||||
libvulkan-dev \
|
||||
glslc \
|
||||
spirv-headers \
|
||||
spirv-tools
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
@@ -89,11 +60,19 @@ jobs:
|
||||
echo "Built packages:"
|
||||
ls -la dist/
|
||||
|
||||
# glslc is built from the pinned shaderc commit inside the container -
|
||||
# Ubuntu 22.04 packages none - and depends on nothing but that commit.
|
||||
- name: Cache AppImage build tools
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/vocalinux-appimage
|
||||
key: appimage-tools-${{ runner.arch }}-${{ hashFiles('packaging/appimage/tool_checksums.txt') }}
|
||||
|
||||
- name: Build AppImage (x86_64)
|
||||
env:
|
||||
VOCALINUX_APPIMAGE_REQUIRE_VULKAN: "1"
|
||||
run: |
|
||||
bash packaging/appimage/build.sh dist/*.whl "${{ steps.get_version.outputs.VERSION }}" dist
|
||||
bash packaging/appimage/docker-build.sh dist/*.whl "${{ steps.get_version.outputs.VERSION }}" dist
|
||||
ls -la dist/*.AppImage
|
||||
|
||||
- name: Create Release
|
||||
@@ -167,35 +146,6 @@ jobs:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
portaudio19-dev \
|
||||
python3-dev \
|
||||
libgirepository1.0-dev \
|
||||
libgirepository-2.0-dev \
|
||||
pkg-config \
|
||||
libcairo2-dev \
|
||||
gobject-introspection \
|
||||
gir1.2-gtk-3.0 \
|
||||
gir1.2-appindicator3-0.1 \
|
||||
gir1.2-ayatanaappindicator3-0.1 \
|
||||
gir1.2-notify-0.7 \
|
||||
gir1.2-dbusmenu-glib-0.4 \
|
||||
gir1.2-ibus-1.0 \
|
||||
gir1.2-rsvg-2.0 \
|
||||
librsvg2-common \
|
||||
libdbusmenu-gtk3-4 \
|
||||
libnotify4 \
|
||||
cmake \
|
||||
ninja-build \
|
||||
build-essential \
|
||||
libvulkan-dev \
|
||||
glslc \
|
||||
spirv-headers \
|
||||
spirv-tools
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
@@ -212,11 +162,19 @@ jobs:
|
||||
python -m build
|
||||
ls -la dist/
|
||||
|
||||
# glslc is built from the pinned shaderc commit inside the container -
|
||||
# Ubuntu 22.04 packages none - and depends on nothing but that commit.
|
||||
- name: Cache AppImage build tools
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/vocalinux-appimage
|
||||
key: appimage-tools-${{ runner.arch }}-${{ hashFiles('packaging/appimage/tool_checksums.txt') }}
|
||||
|
||||
- name: Build AppImage (aarch64)
|
||||
env:
|
||||
VOCALINUX_APPIMAGE_REQUIRE_VULKAN: "1"
|
||||
run: |
|
||||
bash packaging/appimage/build.sh dist/*.whl "${{ steps.get_version.outputs.VERSION }}" dist
|
||||
bash packaging/appimage/docker-build.sh dist/*.whl "${{ steps.get_version.outputs.VERSION }}" dist
|
||||
ls -la dist/*.AppImage
|
||||
|
||||
- name: Attach to release
|
||||
|
||||
@@ -37,7 +37,18 @@ jobs:
|
||||
- 'src/**'
|
||||
- 'tests/**'
|
||||
- 'pyproject.toml'
|
||||
- 'requirements*.txt'
|
||||
# 'requirements*.txt' does not match requirements/runtime.txt: a
|
||||
# glob star stops at the slash. The exports and the AppImage build
|
||||
# gate the same jobs, so a change to either has to reach them.
|
||||
- 'requirements/**'
|
||||
- 'packaging/appimage/**'
|
||||
- 'uv.lock'
|
||||
# These three end up inside the AppImage: build.sh reads the
|
||||
# pywhispercpp pin out of install.sh and installs the desktop
|
||||
# entry and the icon into the AppDir.
|
||||
- 'install.sh'
|
||||
- 'vocalinux.desktop'
|
||||
- 'resources/**'
|
||||
- 'justfile'
|
||||
- '.pre-commit-config.yaml'
|
||||
- '.github/workflows/unified-pipeline.yml'
|
||||
@@ -228,54 +239,27 @@ jobs:
|
||||
python-version: '3.11'
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
xdotool \
|
||||
gir1.2-appindicator3-0.1 \
|
||||
gir1.2-ayatanaappindicator3-0.1 \
|
||||
gir1.2-notify-0.7 \
|
||||
gir1.2-dbusmenu-glib-0.4 \
|
||||
gir1.2-ibus-1.0 \
|
||||
gir1.2-rsvg-2.0 \
|
||||
librsvg2-common \
|
||||
libdbusmenu-gtk3-4 \
|
||||
libnotify4 \
|
||||
libcairo2-dev \
|
||||
pkg-config \
|
||||
python3-dev \
|
||||
libgirepository1.0-dev \
|
||||
gobject-introspection \
|
||||
libcairo-gobject2 \
|
||||
gir1.2-gtk-3.0 \
|
||||
portaudio19-dev \
|
||||
cmake \
|
||||
ninja-build \
|
||||
build-essential \
|
||||
libvulkan-dev \
|
||||
glslc \
|
||||
spirv-headers \
|
||||
spirv-tools
|
||||
|
||||
- name: Install GObject introspection dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y gir1.2-glib-2.0 libgirepository-2.0-dev pkg-config
|
||||
|
||||
- name: Build wheel
|
||||
run: |
|
||||
python -m pip install --upgrade pip build
|
||||
python -m build
|
||||
ls -la dist/
|
||||
|
||||
# glslc is built from the pinned shaderc commit inside the container -
|
||||
# Ubuntu 22.04 packages none - and depends on nothing but that commit.
|
||||
- name: Cache AppImage build tools
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/vocalinux-appimage
|
||||
key: appimage-tools-${{ matrix.arch }}-${{ hashFiles('packaging/appimage/tool_checksums.txt') }}
|
||||
|
||||
- name: Build AppImage
|
||||
env:
|
||||
VOCALINUX_APPIMAGE_REQUIRE_VULKAN: "1"
|
||||
run: |
|
||||
VERSION=$(grep -oP '__version__\s*=\s*"\K[^"]+' src/vocalinux/version.py)
|
||||
WHEEL=$(ls dist/*.whl)
|
||||
bash packaging/appimage/build.sh "$WHEEL" "$VERSION" dist
|
||||
bash packaging/appimage/docker-build.sh "$WHEEL" "$VERSION" dist
|
||||
ls -la dist/*.AppImage
|
||||
|
||||
- name: Upload AppImage artifact
|
||||
|
||||
Reference in New Issue
Block a user