Skip to content

Commit 3fa905f

Browse files
committed
fix(packaging): validate aur packages against correct sources
1 parent 09f021b commit 3fa905f

4 files changed

Lines changed: 31 additions & 9 deletions

File tree

.github/workflows/aur.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ jobs:
3434
fail-fast: false
3535
matrix:
3636
# honkhonk: source build. honkhonk-bin: .deb re-extract.
37-
# honkhonk-git: VCS build from main.
37+
# honkhonk-git: VCS build from main. PR validation rewrites it to the
38+
# candidate head commit below so dependency removals are tested against
39+
# the code that will become main.
3840
pkg: [honkhonk, honkhonk-bin, honkhonk-git]
3941
steps:
4042
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
@@ -59,6 +61,16 @@ jobs:
5961
sudo -u builder makepkg --printsrcinfo > /tmp/.SRCINFO.fresh
6062
diff -u .SRCINFO /tmp/.SRCINFO.fresh
6163
64+
- name: Point VCS package at PR head
65+
if: github.event_name == 'pull_request' && matrix.pkg == 'honkhonk-git'
66+
working-directory: packaging/aur/${{ matrix.pkg }}
67+
run: |
68+
pr_repo='${{ github.event.pull_request.head.repo.full_name }}'
69+
pr_head='${{ github.event.pull_request.head.sha }}'
70+
sed -i \
71+
"s|^source=.*|source=(\"git+https://github.com/${pr_repo}.git#commit=${pr_head}\")|" \
72+
PKGBUILD
73+
6274
- name: Wait for release artifacts (tag push only)
6375
if: startsWith(github.ref, 'refs/tags/') && matrix.pkg != 'honkhonk-git'
6476
working-directory: packaging/aur/${{ matrix.pkg }}

packaging/aur/honkhonk/.SRCINFO

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ pkgbase = honkhonk
1010
makedepends = pkgconf
1111
makedepends = clang
1212
depends = pipewire
13+
depends = gtk3
14+
depends = libayatana-appindicator
1315
depends = wayland
1416
depends = libxkbcommon
1517
depends = xdg-desktop-portal

packaging/aur/honkhonk/PKGBUILD

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@ license=('MIT')
1212
# Runtime deps — each is dynamically linked or dlopened by the binary.
1313
# See README.md in this directory for the full per-dependency justification.
1414
#
15-
# The tray backend is pure Rust SNI over D-Bus, so there are no GTK,
16-
# appindicator, or xdotool runtime dependencies.
15+
# This stable package still builds the 0.1.0 tag, whose tray backend uses GTK3
16+
# and libayatana-appindicator. Drop these when _pkgtag points at a release that
17+
# includes the pure-Rust ksni tray backend.
1718
depends=(
1819
'pipewire' # libpipewire-0.3.so — audio engine (pipewire-sys)
20+
'gtk3' # libgtk-3.so / libgdk-3.so — tray menu (muda gtk feature)
21+
'libayatana-appindicator' # libayatana-appindicator3.so — SNI tray (dlopened)
1922
'wayland' # libwayland-client.so — Iced/winit Wayland backend (dlopened)
2023
'libxkbcommon' # libxkbcommon.so — keyboard mapping (winit, dlopened)
2124
'xdg-desktop-portal' # D-Bus portal: file chooser + global shortcuts (ashpd)
@@ -27,7 +30,7 @@ makedepends=(
2730
'clang' # libclang.so — pipewire-sys runs bindgen at build time
2831
# NOTE: pipewire headers are needed at build time but pipewire is already a
2932
# runtime dep (depends=), so it is present during makepkg — listing it here
30-
# too would be redundant (namcap warns). Same for wayland/libxkbcommon:
33+
# too would be redundant (namcap warns). Same for gtk3/wayland/libxkbcommon:
3134
# on Arch the runtime packages ship their own headers + .pc files.
3235
)
3336
provides=('honkhonk')

packaging/aur/honkhonk/README.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,24 @@ offline against that freshly-pinned lockfile.
2828

2929
## Per-dependency justification
3030

31-
Every entry in `depends=()` is dynamically linked or dlopened by the binary. The
32-
set was audited against issue #98 — anything not actually linked was dropped.
31+
Every entry in `depends=()` is dynamically linked or dlopened by the tagged
32+
binary this package builds. The current `pkgver=0.1.0` tag still uses the old
33+
GTK3 tray backend; drop the GTK/appindicator entries when `_pkgtag` points at a
34+
release that contains the pure-Rust `ksni` tray backend.
3335

3436
| Dependency | Why it is required (binary links / dlopens it) | Arch | Fedora | Ubuntu/Debian |
3537
|-----------------------------|-------------------------------------------------------------------------|------|--------|---------------|
3638
| `pipewire` | `libpipewire-0.3.so` — audio engine (via the `pipewire` crate / -sys) | extra | Everything | main |
39+
| `gtk3` | `libgtk-3.so` / `libgdk-3.so` — tray menu in the 0.1.0 tag | extra | Everything | main |
40+
| `libayatana-appindicator` | `libayatana-appindicator3.so` — SNI tray in the 0.1.0 tag | extra | Everything | main |
3741
| `wayland` | `libwayland-client.so` — Iced/winit Wayland backend (dlopened) | extra | Everything | main |
3842
| `libxkbcommon` | `libxkbcommon.so` — keyboard mapping (winit, dlopened) | extra | Everything | main |
3943
| `xdg-desktop-portal` | D-Bus service for file chooser + global shortcuts (`ashpd`, no link) | extra | Everything | main |
4044

41-
The tray backend uses `ksni` (StatusNotifierItem over zbus). It does not link
42-
GTK, libayatana-appindicator, or xdotool/libxdo. Re-verify package bumps with
43-
`namcap` and `cargo tree`.
45+
The current development branch uses `ksni` (StatusNotifierItem over zbus), so
46+
future release bumps should re-audit this table with `namcap` and `cargo tree`
47+
and remove the GTK/appindicator entries once the package no longer builds the
48+
0.1.0 tag.
4449

4550
## Per-release bump runbook
4651

0 commit comments

Comments
 (0)