From 0229020278081eff9e82656b4a6d2e06a5b4deb9 Mon Sep 17 00:00:00 2001 From: Felitendo <95575686+Felitendo@users.noreply.github.com> Date: Mon, 27 Jul 2026 17:46:36 +0200 Subject: [PATCH] Group C: rebuild as source packages without the -bin suffix These three have no upstream Linux binary to point at, but also no equivalent in the AUR or the official repositories - so unlike the packages dropped in 46ddf59 they can legitimately exist, just as source packages. bazaar-bin -> bazaar timetable-bin -> timetable chromium-widevine-helper-bin -> chromium-widevine-helper bazaar and timetable now build their meson projects in build(); the checksum-only CI path still applies, since the source is upstream's release tarball. chromium-widevine-helper compiles nothing (Python script, JSON manifests and extension assets). Upstream publishes neither releases nor tags, so the package pins the main commit carrying the version from the Fedora spec and verifies the two agree in prepare() - being tied to a specific version, it needs no -git suffix. refresh_checksums() moves the pin. The AUR repos for the new names are created by the first push; the old -bin packages are left to the pending deletion requests. --- README.md | 3 + bazaar-bin/PKGBUILD | 25 ------ bazaar-bin/pkg.sh | 43 ----------- {bazaar-bin => bazaar}/.SRCINFO | 19 +++-- bazaar/PKGBUILD | 38 +++++++++ bazaar/pkg.sh | 27 +++++++ chromium-widevine-helper-bin/PKGBUILD | 31 -------- chromium-widevine-helper-bin/pkg.sh | 77 ------------------- .../.SRCINFO | 12 ++- chromium-widevine-helper/PKGBUILD | 73 ++++++++++++++++++ chromium-widevine-helper/pkg.sh | 49 ++++++++++++ timetable-bin/.SRCINFO | 25 ------ timetable-bin/PKGBUILD | 21 ----- timetable-bin/pkg.sh | 44 ----------- timetable/.SRCINFO | 27 +++++++ timetable/PKGBUILD | 42 ++++++++++ timetable/pkg.sh | 25 ++++++ 17 files changed, 301 insertions(+), 280 deletions(-) delete mode 100644 bazaar-bin/PKGBUILD delete mode 100644 bazaar-bin/pkg.sh rename {bazaar-bin => bazaar}/.SRCINFO (64%) create mode 100644 bazaar/PKGBUILD create mode 100644 bazaar/pkg.sh delete mode 100644 chromium-widevine-helper-bin/PKGBUILD delete mode 100644 chromium-widevine-helper-bin/pkg.sh rename {chromium-widevine-helper-bin => chromium-widevine-helper}/.SRCINFO (69%) create mode 100644 chromium-widevine-helper/PKGBUILD create mode 100644 chromium-widevine-helper/pkg.sh delete mode 100644 timetable-bin/.SRCINFO delete mode 100644 timetable-bin/PKGBUILD delete mode 100644 timetable-bin/pkg.sh create mode 100644 timetable/.SRCINFO create mode 100644 timetable/PKGBUILD create mode 100644 timetable/pkg.sh diff --git a/README.md b/README.md index cc694e8..5f5878a 100644 --- a/README.md +++ b/README.md @@ -38,13 +38,16 @@ source in the `PKGBUILD` (and drop the `-bin` suffix), or don't package it. | Package | Upstream | Upstream deliverable | AUR | |---|---|---|---| +| `bazaar` | [bazaar-org/bazaar](https://github.com/bazaar-org/bazaar) — GNOME app store for flatpaks/Flathub | *built from source* | [bazaar](https://aur.archlinux.org/packages/bazaar) | | `chiaki-ng-bin` | [streetpea/chiaki-ng](https://github.com/streetpea/chiaki-ng) — PlayStation Remote Play client (Qt6) | AppImage | [chiaki-ng-bin](https://aur.archlinux.org/packages/chiaki-ng-bin) | +| `chromium-widevine-helper` | [GloriousEggroll/chromium-widevine-helper](https://github.com/GloriousEggroll/chromium-widevine-helper) — extension + native helper installing Google's Widevine CDM into Chromium-based browser profiles | *no build step* | [chromium-widevine-helper](https://aur.archlinux.org/packages/chromium-widevine-helper) | | `faugus-launcher-bin` | [Faugus/faugus-launcher](https://github.com/Faugus/faugus-launcher) — launcher for Windows games via UMU-Launcher | `.deb` (`all`) | [faugus-launcher-bin](https://aur.archlinux.org/packages/faugus-launcher-bin) | | `fluxer-bin` | [fluxer.app](https://fluxer.app) — Fluxer desktop client (Electron) | tarball | [fluxer-bin](https://aur.archlinux.org/packages/fluxer-bin) | | `lunar-client-bin` | [lunarclient.com](https://lunarclient.com) — Minecraft PvP modpack launcher | AppImage | [lunar-client-bin](https://aur.archlinux.org/packages/lunar-client-bin) | | `modrinth-app-bin` | [modrinth/code](https://github.com/modrinth/code) — Minecraft mod manager/launcher | `.deb` | [modrinth-app-bin](https://aur.archlinux.org/packages/modrinth-app-bin) | | `sharpemu-bin` | [sharpemu/sharpemu](https://github.com/sharpemu/sharpemu) — experimental PlayStation 5 emulator | tarball | [sharpemu-bin](https://aur.archlinux.org/packages/sharpemu-bin) | | `snapx-bin` | [SnapXL/SnapX](https://github.com/SnapXL/SnapX) — ShareX-fork screenshot/sharing tool | self-contained tarball | [snapx-bin](https://aur.archlinux.org/packages/snapx-bin) | +| `timetable` | [ostfriese4/untis](https://codeberg.org/ostfriese4/untis) — "Timetable", a GTK4 + LibAdwaita client for WebUntis | *built from source* | [timetable](https://aur.archlinux.org/packages/timetable) | | `vacuumtube-bin` | [shy1132/VacuumTube](https://github.com/shy1132/VacuumTube) — YouTube Leanback (TV UI) with built-in adblocker | `.deb` | [vacuumtube-bin](https://aur.archlinux.org/packages/vacuumtube-bin) | | `waydroid-helper-bin` | [ayasa520/waydroid-helper](https://github.com/ayasa520/waydroid-helper) — GTK4 GUI for Waydroid configuration and extensions | AppImage | [waydroid-helper-bin](https://aur.archlinux.org/packages/waydroid-helper-bin) | | `wiiudownloader-bin` | [Xpl0itU/WiiUDownloader](https://github.com/Xpl0itU/WiiUDownloader) — Wii U title downloader (Go + GTK3) | AppImage | [wiiudownloader-bin](https://aur.archlinux.org/packages/wiiudownloader-bin) | diff --git a/bazaar-bin/PKGBUILD b/bazaar-bin/PKGBUILD deleted file mode 100644 index e5f0c8a..0000000 --- a/bazaar-bin/PKGBUILD +++ /dev/null @@ -1,25 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=bazaar-bin -pkgver=0.9.1 -pkgrel=1 -pkgdesc="App store for GNOME with a focus on flatpaks and Flathub (prebuilt)" -arch=('x86_64') -url="https://github.com/bazaar-org/bazaar" -license=('GPL-3.0-only') -depends=('appstream' 'cairo' 'dconf' 'flatpak' 'glib2' 'glycin' 'glycin-gtk4' - 'graphene' 'gtk4' 'gtksourceview5' 'json-glib' 'libadwaita' 'libdex' - 'libheif' 'libmalcontent' 'libproxy' 'libsecret' 'libsoup3' 'libxmlb' - 'libyaml' 'md4c' 'pango' 'webkitgtk-6.0' 'hicolor-icon-theme') -optdepends=('krunner-bazaar: krunner integration' - 'malcontent: parental controls') -provides=('bazaar') -conflicts=('bazaar') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('236a8b672a9a67de9a240450f527b119bb4cbdfa0533e49578589fe83638e3dc') - -package() { - cp -a "$srcdir/usr" "$pkgdir/" -} diff --git a/bazaar-bin/pkg.sh b/bazaar-bin/pkg.sh deleted file mode 100644 index 975cbd8..0000000 --- a/bazaar-bin/pkg.sh +++ /dev/null @@ -1,43 +0,0 @@ -# bazaar-bin - prebuilt package of https://github.com/bazaar-org/bazaar -# (GNOME app store focused on flatpaks/Flathub, C + GTK4/blueprint). -# -# Upstream tags releases but ships no binaries, so build_artifact() builds -# from the release tarball. - -UPSTREAM_REPO="bazaar-org/bazaar" - -# Installed in CI (pacman) before build_artifact runs. -BUILD_DEPS=(meson ninja blueprint-compiler glib2-devel python-babel gettext - gobject-introspection appstream flatpak gtk4 libadwaita - gtksourceview5 libdex glycin glycin-gtk4 webkitgtk-6.0 json-glib - libxmlb libyaml md4c libmalcontent libsecret libsoup3 libproxy - libheif) - -latest_version() { - gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//' -} - -# build_artifact -build_artifact() { - local ver="$1" outfile="$2" - local workdir destdir srctree - workdir="$(mktemp -d)" - destdir="$(mktemp -d)" - - curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir" - srctree="$workdir/bazaar-$ver" - - meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release - meson install -C "$workdir/build" --destdir "$destdir" - - # These caches are generated by pacman hooks; shipping them would cause - # file conflicts on install. - rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \ - "$destdir/usr/share/applications/mimeinfo.cache" \ - "$destdir/usr/share/icons/hicolor/icon-theme.cache" - - tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \ - -cf "$outfile" -C "$destdir" usr - - rm -rf "$workdir" "$destdir" -} diff --git a/bazaar-bin/.SRCINFO b/bazaar/.SRCINFO similarity index 64% rename from bazaar-bin/.SRCINFO rename to bazaar/.SRCINFO index 524132b..2044ed3 100644 --- a/bazaar-bin/.SRCINFO +++ b/bazaar/.SRCINFO @@ -1,10 +1,17 @@ -pkgbase = bazaar-bin - pkgdesc = App store for GNOME with a focus on flatpaks and Flathub (prebuilt) +pkgbase = bazaar + pkgdesc = App store for GNOME with a focus on flatpaks and Flathub pkgver = 0.9.1 pkgrel = 1 url = https://github.com/bazaar-org/bazaar arch = x86_64 license = GPL-3.0-only + makedepends = meson + makedepends = ninja + makedepends = blueprint-compiler + makedepends = glib2-devel + makedepends = gettext + makedepends = gobject-introspection + makedepends = python-babel depends = appstream depends = cairo depends = dconf @@ -31,9 +38,7 @@ pkgbase = bazaar-bin depends = hicolor-icon-theme optdepends = krunner-bazaar: krunner integration optdepends = malcontent: parental controls - provides = bazaar - conflicts = bazaar - source = bazaar-bin-0.9.1-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/bazaar-bin-0.9.1/bazaar-bin-0.9.1.tar.zst - sha256sums = 236a8b672a9a67de9a240450f527b119bb4cbdfa0533e49578589fe83638e3dc + source = bazaar-0.9.1.tar.gz::https://github.com/bazaar-org/bazaar/archive/refs/tags/v0.9.1.tar.gz + sha256sums = 1b2783845b183a9cea87048e582dcbdd71d7771a7f65f89d7ec8a563af2d550f -pkgname = bazaar-bin +pkgname = bazaar diff --git a/bazaar/PKGBUILD b/bazaar/PKGBUILD new file mode 100644 index 0000000..d8e770e --- /dev/null +++ b/bazaar/PKGBUILD @@ -0,0 +1,38 @@ +# Maintainer: Felitendo +# This PKGBUILD is updated automatically: +# https://github.com/Felitendo/PKGBUILDS + +pkgname=bazaar +pkgver=0.9.1 +pkgrel=1 +pkgdesc="App store for GNOME with a focus on flatpaks and Flathub" +arch=('x86_64') +url="https://github.com/bazaar-org/bazaar" +license=('GPL-3.0-only') +depends=('appstream' 'cairo' 'dconf' 'flatpak' 'glib2' 'glycin' 'glycin-gtk4' + 'graphene' 'gtk4' 'gtksourceview5' 'json-glib' 'libadwaita' 'libdex' + 'libheif' 'libmalcontent' 'libproxy' 'libsecret' 'libsoup3' 'libxmlb' + 'libyaml' 'md4c' 'pango' 'webkitgtk-6.0' 'hicolor-icon-theme') +makedepends=('meson' 'ninja' 'blueprint-compiler' 'glib2-devel' 'gettext' + 'gobject-introspection' 'python-babel') +optdepends=('krunner-bazaar: krunner integration' + 'malcontent: parental controls') +source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz") +sha256sums=('1b2783845b183a9cea87048e582dcbdd71d7771a7f65f89d7ec8a563af2d550f') + +build() { + meson setup build "${pkgname}-${pkgver}" \ + --prefix=/usr \ + --buildtype=release \ + --wrap-mode=nodownload + meson compile -C build +} + +package() { + meson install -C build --destdir "$pkgdir" + + # generated by pacman hooks; shipping them would cause file conflicts + rm -f "$pkgdir/usr/share/glib-2.0/schemas/gschemas.compiled" \ + "$pkgdir/usr/share/applications/mimeinfo.cache" \ + "$pkgdir/usr/share/icons/hicolor/icon-theme.cache" +} diff --git a/bazaar/pkg.sh b/bazaar/pkg.sh new file mode 100644 index 0000000..f760429 --- /dev/null +++ b/bazaar/pkg.sh @@ -0,0 +1,27 @@ +# bazaar - GNOME app store focused on flatpaks/Flathub +# (https://github.com/bazaar-org/bazaar), C + GTK4/blueprint. +# +# Upstream tags releases but publishes no binaries, so this is a source +# package: the PKGBUILD builds the meson project from the release tarball. + +UPSTREAM_REPO="bazaar-org/bazaar" + +# Installed in CI (pacman) before the makepkg test build. +BUILD_DEPS=(meson ninja blueprint-compiler glib2-devel python-babel gettext + gobject-introspection appstream flatpak gtk4 libadwaita + gtksourceview5 libdex glycin glycin-gtk4 webkitgtk-6.0 json-glib + libxmlb libyaml md4c libmalcontent libsecret libsoup3 libproxy + libheif) + +latest_version() { + gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//' +} + +# refresh_checksums +refresh_checksums() { + local ver="$1" pkgbuild="$2" + local sha + sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" \ + | sha256sum | cut -d' ' -f1)" + sed -i "s|^sha256sums=.*|sha256sums=('$sha')|" "$pkgbuild" +} diff --git a/chromium-widevine-helper-bin/PKGBUILD b/chromium-widevine-helper-bin/PKGBUILD deleted file mode 100644 index 4040196..0000000 --- a/chromium-widevine-helper-bin/PKGBUILD +++ /dev/null @@ -1,31 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=chromium-widevine-helper-bin -pkgver=1.0.8 -pkgrel=1 -pkgdesc="Extension + native helper that installs Google's Widevine CDM into Chromium-based browser profiles (prebuilt)" -arch=('any') -url="https://github.com/GloriousEggroll/chromium-widevine-helper" -license=('GPL-3.0-only') -depends=('python' 'procps-ng' 'ca-certificates') -provides=('chromium-widevine-helper') -conflicts=('chromium-widevine-helper') -backup=('etc/helium/native-messaging-hosts/org.chromium.widevine.json' - 'etc/net.imput.helium/native-messaging-hosts/org.chromium.widevine.json' - 'etc/chromium/native-messaging-hosts/org.chromium.widevine.json' - 'etc/chromium-browser/native-messaging-hosts/org.chromium.widevine.json' - 'etc/opt/chrome/native-messaging-hosts/org.chromium.widevine.json' - 'etc/opt/edge/native-messaging-hosts/org.chromium.widevine.json' - 'etc/brave/native-messaging-hosts/org.chromium.widevine.json' - 'etc/vivaldi/native-messaging-hosts/org.chromium.widevine.json' - 'etc/opera/native-messaging-hosts/org.chromium.widevine.json' - 'etc/thorium/native-messaging-hosts/org.chromium.widevine.json' - 'etc/iridium/native-messaging-hosts/org.chromium.widevine.json') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('efb70f082652176710b403a2629333220c1b8b96e3f27f398ba7efb496982829') - -package() { - cp -a "$srcdir/usr" "$srcdir/etc" "$pkgdir/" -} diff --git a/chromium-widevine-helper-bin/pkg.sh b/chromium-widevine-helper-bin/pkg.sh deleted file mode 100644 index bb079d9..0000000 --- a/chromium-widevine-helper-bin/pkg.sh +++ /dev/null @@ -1,77 +0,0 @@ -# chromium-widevine-helper-bin - prebuilt package of -# https://github.com/GloriousEggroll/chromium-widevine-helper -# (Chromium extension + native messaging helper that installs Google's -# Widevine CDM into Chromium-based browser profiles). -# -# Upstream publishes neither releases nor tags; the canonical version lives in -# the Fedora RPM spec on the main branch. build_artifact() snapshots main, -# verifies the snapshot still carries the requested version and assembles the -# install tree following upstream's spec - with Fedora's /usr/libexec -# relocated to /usr/lib, which Arch uses instead. - -UPSTREAM_REPO="GloriousEggroll/chromium-widevine-helper" -SPEC_PATH="Packaging/rpm/chromium-widevine-helper.spec" - -# Pure noarch install tree (Python script + JSON + extension assets). -BUILD_DEPS=() - -spec_version() { - grep -Po '^%global helper_version \K[0-9.]+' -} - -latest_version() { - curl -sf "https://raw.githubusercontent.com/$UPSTREAM_REPO/main/$SPEC_PATH" \ - | spec_version -} - -# build_artifact -build_artifact() { - local ver="$1" outfile="$2" - local workdir destdir - workdir="$(mktemp -d)" - destdir="$(mktemp -d)" - - curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/heads/main.tar.gz" \ - | tar -xz -C "$workdir" --strip-components=1 - - # main may have moved between the version check and this download. - local specver - specver="$(spec_version < "$workdir/$SPEC_PATH")" - if [[ "$specver" != "$ver" ]]; then - echo "snapshot of main is $specver, not the requested $ver - try again" >&2 - return 1 - fi - - install -Dm755 "$workdir/helper/chromium-widevine" \ - "$destdir/usr/lib/chromium-widevine/chromium-widevine" - install -d "$destdir/usr/bin" - ln -s /usr/lib/chromium-widevine/chromium-widevine "$destdir/usr/bin/chromium-widevine" - - # The extension is shipped so it can be loaded unpacked from - # chrome://extensions (chromium-widevine --install-native-hosts then - # registers whatever ID the browser assigned it). - mkdir -p "$destdir/usr/share/chromium-widevine" - cp -a "$workdir/extension" "$destdir/usr/share/chromium-widevine/extension" - find "$destdir/usr/share/chromium-widevine" -type d -exec chmod 755 {} + - find "$destdir/usr/share/chromium-widevine" -type f -exec chmod 644 {} + - - install -Dm644 "$workdir/README.md" \ - "$destdir/usr/share/doc/chromium-widevine-helper-bin/README.md" - - # System-wide native messaging host manifests for the same browser lookup - # roots upstream's RPM covers. - local hostdir - for hostdir in helium net.imput.helium chromium chromium-browser \ - opt/chrome opt/edge brave vivaldi opera thorium iridium; do - install -Dm644 "$workdir/helper/chromium-widevine-native-host.json" \ - "$destdir/etc/$hostdir/native-messaging-hosts/org.chromium.widevine.json" - done - # The upstream manifest hardcodes Fedora's /usr/libexec helper path. - find "$destdir/etc" -name 'org.chromium.widevine.json' -exec \ - sed -i 's|/usr/libexec/chromium-widevine/|/usr/lib/chromium-widevine/|' {} + - - tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \ - -cf "$outfile" -C "$destdir" usr etc - - rm -rf "$workdir" "$destdir" -} diff --git a/chromium-widevine-helper-bin/.SRCINFO b/chromium-widevine-helper/.SRCINFO similarity index 69% rename from chromium-widevine-helper-bin/.SRCINFO rename to chromium-widevine-helper/.SRCINFO index a9639d9..5e211e6 100644 --- a/chromium-widevine-helper-bin/.SRCINFO +++ b/chromium-widevine-helper/.SRCINFO @@ -1,5 +1,5 @@ -pkgbase = chromium-widevine-helper-bin - pkgdesc = Extension + native helper that installs Google's Widevine CDM into Chromium-based browser profiles (prebuilt) +pkgbase = chromium-widevine-helper + pkgdesc = Extension + native helper that installs Google's Widevine CDM into Chromium-based browser profiles pkgver = 1.0.8 pkgrel = 1 url = https://github.com/GloriousEggroll/chromium-widevine-helper @@ -8,8 +8,6 @@ pkgbase = chromium-widevine-helper-bin depends = python depends = procps-ng depends = ca-certificates - provides = chromium-widevine-helper - conflicts = chromium-widevine-helper backup = etc/helium/native-messaging-hosts/org.chromium.widevine.json backup = etc/net.imput.helium/native-messaging-hosts/org.chromium.widevine.json backup = etc/chromium/native-messaging-hosts/org.chromium.widevine.json @@ -21,7 +19,7 @@ pkgbase = chromium-widevine-helper-bin backup = etc/opera/native-messaging-hosts/org.chromium.widevine.json backup = etc/thorium/native-messaging-hosts/org.chromium.widevine.json backup = etc/iridium/native-messaging-hosts/org.chromium.widevine.json - source = chromium-widevine-helper-bin-1.0.8-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/chromium-widevine-helper-bin-1.0.8/chromium-widevine-helper-bin-1.0.8.tar.zst - sha256sums = efb70f082652176710b403a2629333220c1b8b96e3f27f398ba7efb496982829 + source = chromium-widevine-helper-1.0.8.tar.gz::https://github.com/GloriousEggroll/chromium-widevine-helper/archive/2851c31896aa7cd43895e4c4d9b749ca08188aec.tar.gz + sha256sums = d1ded7b511351a39c6a38c0f2a5666c6b27dc05236808a4c4acebebf9a9d4364 -pkgname = chromium-widevine-helper-bin +pkgname = chromium-widevine-helper diff --git a/chromium-widevine-helper/PKGBUILD b/chromium-widevine-helper/PKGBUILD new file mode 100644 index 0000000..bebf87f --- /dev/null +++ b/chromium-widevine-helper/PKGBUILD @@ -0,0 +1,73 @@ +# Maintainer: Felitendo +# This PKGBUILD is updated automatically: +# https://github.com/Felitendo/PKGBUILDS + +pkgname=chromium-widevine-helper +pkgver=1.0.8 +pkgrel=1 +pkgdesc="Extension + native helper that installs Google's Widevine CDM into Chromium-based browser profiles" +arch=('any') +url="https://github.com/GloriousEggroll/chromium-widevine-helper" +license=('GPL-3.0-only') +depends=('python' 'procps-ng' 'ca-certificates') +backup=('etc/helium/native-messaging-hosts/org.chromium.widevine.json' + 'etc/net.imput.helium/native-messaging-hosts/org.chromium.widevine.json' + 'etc/chromium/native-messaging-hosts/org.chromium.widevine.json' + 'etc/chromium-browser/native-messaging-hosts/org.chromium.widevine.json' + 'etc/opt/chrome/native-messaging-hosts/org.chromium.widevine.json' + 'etc/opt/edge/native-messaging-hosts/org.chromium.widevine.json' + 'etc/brave/native-messaging-hosts/org.chromium.widevine.json' + 'etc/vivaldi/native-messaging-hosts/org.chromium.widevine.json' + 'etc/opera/native-messaging-hosts/org.chromium.widevine.json' + 'etc/thorium/native-messaging-hosts/org.chromium.widevine.json' + 'etc/iridium/native-messaging-hosts/org.chromium.widevine.json') +# Upstream publishes neither releases nor tags; the canonical version lives in +# %global helper_version in Packaging/rpm/chromium-widevine-helper.spec. The +# package is pinned to the commit that carries the packaged version, so it is +# tied to a specific version and needs no -git suffix. +_commit="2851c31896aa7cd43895e4c4d9b749ca08188aec" +source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/${_commit}.tar.gz") +sha256sums=('d1ded7b511351a39c6a38c0f2a5666c6b27dc05236808a4c4acebebf9a9d4364') + +prepare() { + local _specver + _specver="$(grep -Po '^%global helper_version \K[0-9.]+' \ + "${pkgname}-${_commit}/Packaging/rpm/chromium-widevine-helper.spec")" + [[ "$_specver" == "$pkgver" ]] || { + echo "pinned commit declares $_specver, expected $pkgver" >&2 + return 1 + } +} + +package() { + cd "${pkgname}-${_commit}" + + # Fedora's /usr/libexec, which Arch does not use + install -Dm755 helper/chromium-widevine \ + "$pkgdir/usr/lib/chromium-widevine/chromium-widevine" + install -d "$pkgdir/usr/bin" + ln -s /usr/lib/chromium-widevine/chromium-widevine \ + "$pkgdir/usr/bin/chromium-widevine" + + # The extension is shipped so it can be loaded unpacked from + # chrome://extensions (chromium-widevine --install-native-hosts then + # registers whatever ID the browser assigned it). + install -d "$pkgdir/usr/share/chromium-widevine" + cp -a extension "$pkgdir/usr/share/chromium-widevine/extension" + find "$pkgdir/usr/share/chromium-widevine" -type d -exec chmod 755 {} + + find "$pkgdir/usr/share/chromium-widevine" -type f -exec chmod 644 {} + + + # upstream ships no license file; GPL-3.0-only is a common license + install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md" + + # System-wide native messaging host manifests for the same browser lookup + # roots upstream's RPM covers. + local _hostdir + for _hostdir in helium net.imput.helium chromium chromium-browser \ + opt/chrome opt/edge brave vivaldi opera thorium iridium; do + install -Dm644 helper/chromium-widevine-native-host.json \ + "$pkgdir/etc/$_hostdir/native-messaging-hosts/org.chromium.widevine.json" + done + find "$pkgdir/etc" -name 'org.chromium.widevine.json' -exec \ + sed -i 's|/usr/libexec/chromium-widevine/|/usr/lib/chromium-widevine/|' {} + +} diff --git a/chromium-widevine-helper/pkg.sh b/chromium-widevine-helper/pkg.sh new file mode 100644 index 0000000..5208bb2 --- /dev/null +++ b/chromium-widevine-helper/pkg.sh @@ -0,0 +1,49 @@ +# chromium-widevine-helper - Chromium extension + native messaging helper +# that installs Google's Widevine CDM into Chromium-based browser profiles +# (https://github.com/GloriousEggroll/chromium-widevine-helper). +# +# Upstream publishes neither releases nor tags; the canonical version lives in +# the Fedora RPM spec on the main branch. The package pins the main commit +# that carries that version, so it stays tied to a specific version (no -git +# suffix) - refresh_checksums() moves the pin along with the version. +# +# Nothing is compiled: the payload is a Python script, JSON manifests and the +# extension assets, so package() alone does the work. + +UPSTREAM_REPO="GloriousEggroll/chromium-widevine-helper" +SPEC_PATH="Packaging/rpm/chromium-widevine-helper.spec" + +BUILD_DEPS=() + +spec_version() { + grep -Po '^%global helper_version \K[0-9.]+' +} + +latest_version() { + curl -sf "https://raw.githubusercontent.com/$UPSTREAM_REPO/main/$SPEC_PATH" \ + | spec_version +} + +# refresh_checksums +refresh_checksums() { + local ver="$1" pkgbuild="$2" + local commit specver sha + + commit="$(gh api "repos/$UPSTREAM_REPO/commits/main" --jq '.sha')" + + # main may have moved between the version check and this lookup + specver="$(curl -sf "https://raw.githubusercontent.com/$UPSTREAM_REPO/$commit/$SPEC_PATH" \ + | spec_version)" + if [[ "$specver" != "$ver" ]]; then + echo "main is at $specver, not the requested $ver - try again" >&2 + return 1 + fi + + sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/archive/$commit.tar.gz" \ + | sha256sum | cut -d' ' -f1)" + + sed -i \ + -e "s|^_commit=.*|_commit=\"$commit\"|" \ + -e "s|^sha256sums=.*|sha256sums=('$sha')|" \ + "$pkgbuild" +} diff --git a/timetable-bin/.SRCINFO b/timetable-bin/.SRCINFO deleted file mode 100644 index 9ccea3a..0000000 --- a/timetable-bin/.SRCINFO +++ /dev/null @@ -1,25 +0,0 @@ -pkgbase = timetable-bin - pkgdesc = GTK4 + LibAdwaita client for WebUntis (prebuilt) - pkgver = 4.2.1 - pkgrel = 1 - url = https://codeberg.org/ostfriese4/untis - arch = any - license = GPL-3.0-or-later - depends = gtk4 - depends = libadwaita - depends = webkitgtk-6.0 - depends = libsecret - depends = python - depends = python-gobject - depends = python-requests - depends = python-pyotp - depends = glib2 - depends = hicolor-icon-theme - provides = untis - provides = timetable - conflicts = untis - conflicts = timetable - source = timetable-bin-4.2.1-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/timetable-bin-4.2.1/timetable-bin-4.2.1.tar.zst - sha256sums = c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc - -pkgname = timetable-bin diff --git a/timetable-bin/PKGBUILD b/timetable-bin/PKGBUILD deleted file mode 100644 index 96551c0..0000000 --- a/timetable-bin/PKGBUILD +++ /dev/null @@ -1,21 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=timetable-bin -pkgver=4.2.1 -pkgrel=1 -pkgdesc="GTK4 + LibAdwaita client for WebUntis (prebuilt)" -arch=('any') -url="https://codeberg.org/ostfriese4/untis" -license=('GPL-3.0-or-later') -depends=('gtk4' 'libadwaita' 'webkitgtk-6.0' 'libsecret' 'python' 'python-gobject' - 'python-requests' 'python-pyotp' 'glib2' 'hicolor-icon-theme') -provides=('untis' 'timetable') -conflicts=('untis' 'timetable') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc') - -package() { - cp -a "$srcdir/usr" "$pkgdir/" -} diff --git a/timetable-bin/pkg.sh b/timetable-bin/pkg.sh deleted file mode 100644 index 783c5f1..0000000 --- a/timetable-bin/pkg.sh +++ /dev/null @@ -1,44 +0,0 @@ -# timetable-bin - prebuilt package of https://codeberg.org/ostfriese4/untis -# ("Timetable", a GTK4 + LibAdwaita WebUntis client written in Python). -# -# Upstream publishes no binary release assets, so build_artifact() builds the -# app from the release tarball and the resulting install tree is published as -# a GitHub release asset of this repository, which the PKGBUILD then uses. - -UPSTREAM_REPO="ostfriese4/untis" - -# Installed in CI (pacman) before build_artifact runs. -BUILD_DEPS=(meson ninja glib2 glib2-devel gtk4 libadwaita python python-gobject gettext) - -latest_version() { - curl -sf "https://codeberg.org/api/v1/repos/$UPSTREAM_REPO/releases/latest" \ - | jq -r '.tag_name' | sed 's/^v//' -} - -# build_artifact -build_artifact() { - local ver="$1" outfile="$2" - local workdir destdir - workdir="$(mktemp -d)" - destdir="$(mktemp -d)" - - curl -sfL "https://codeberg.org/$UPSTREAM_REPO/archive/v$ver.tar.gz" | tar -xz -C "$workdir" - - # Upstream does not maintain the version in meson.build; use the release tag - # so the About dialog shows the right version. - sed -i "0,/version:/s/version: *'[^']*'/version: '$ver'/" "$workdir/untis/meson.build" - - meson setup "$workdir/build" "$workdir/untis" --prefix=/usr --buildtype=release - meson install -C "$workdir/build" --destdir "$destdir" - - # These caches are generated by pacman hooks; shipping them would cause - # file conflicts on install. - rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \ - "$destdir/usr/share/applications/mimeinfo.cache" \ - "$destdir/usr/share/icons/hicolor/icon-theme.cache" - - tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \ - -cf "$outfile" -C "$destdir" usr - - rm -rf "$workdir" "$destdir" -} diff --git a/timetable/.SRCINFO b/timetable/.SRCINFO new file mode 100644 index 0000000..6f13cbb --- /dev/null +++ b/timetable/.SRCINFO @@ -0,0 +1,27 @@ +pkgbase = timetable + pkgdesc = GTK4 + LibAdwaita client for WebUntis + pkgver = 4.2.1 + pkgrel = 1 + url = https://codeberg.org/ostfriese4/untis + arch = any + license = GPL-3.0-or-later + makedepends = meson + makedepends = ninja + makedepends = glib2-devel + makedepends = gettext + depends = gtk4 + depends = libadwaita + depends = webkitgtk-6.0 + depends = libsecret + depends = python + depends = python-gobject + depends = python-requests + depends = python-pyotp + depends = glib2 + depends = hicolor-icon-theme + provides = untis + conflicts = untis + source = timetable-4.2.1.tar.gz::https://codeberg.org/ostfriese4/untis/archive/v4.2.1.tar.gz + sha256sums = 68ff7ef34047c51c74610f3b4d145a0ce6ce11287f6aa5ed38766d11279957cd + +pkgname = timetable diff --git a/timetable/PKGBUILD b/timetable/PKGBUILD new file mode 100644 index 0000000..c53bb3a --- /dev/null +++ b/timetable/PKGBUILD @@ -0,0 +1,42 @@ +# Maintainer: Felitendo +# This PKGBUILD is updated automatically: +# https://github.com/Felitendo/PKGBUILDS + +pkgname=timetable +pkgver=4.2.1 +pkgrel=1 +pkgdesc="GTK4 + LibAdwaita client for WebUntis" +arch=('any') +url="https://codeberg.org/ostfriese4/untis" +license=('GPL-3.0-or-later') +depends=('gtk4' 'libadwaita' 'webkitgtk-6.0' 'libsecret' 'python' + 'python-gobject' 'python-requests' 'python-pyotp' 'glib2' + 'hicolor-icon-theme') +makedepends=('meson' 'ninja' 'glib2-devel' 'gettext') +provides=('untis') +conflicts=('untis') +source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/v${pkgver}.tar.gz") +sha256sums=('68ff7ef34047c51c74610f3b4d145a0ce6ce11287f6aa5ed38766d11279957cd') + +prepare() { + # Upstream does not maintain the version in meson.build; use the release tag + # so the About dialog shows the right version. + sed -i "0,/version:/s/version: *'[^']*'/version: '$pkgver'/" untis/meson.build +} + +build() { + meson setup build untis \ + --prefix=/usr \ + --buildtype=release \ + --wrap-mode=nodownload + meson compile -C build +} + +package() { + meson install -C build --destdir "$pkgdir" + + # generated by pacman hooks; shipping them would cause file conflicts + rm -f "$pkgdir/usr/share/glib-2.0/schemas/gschemas.compiled" \ + "$pkgdir/usr/share/applications/mimeinfo.cache" \ + "$pkgdir/usr/share/icons/hicolor/icon-theme.cache" +} diff --git a/timetable/pkg.sh b/timetable/pkg.sh new file mode 100644 index 0000000..b73a353 --- /dev/null +++ b/timetable/pkg.sh @@ -0,0 +1,25 @@ +# timetable - "Timetable" (https://codeberg.org/ostfriese4/untis), a GTK4 + +# LibAdwaita WebUntis client written in Python. +# +# Upstream publishes no binary release assets, so this is a source package: +# the PKGBUILD builds the meson project from the release tarball. + +UPSTREAM_REPO="ostfriese4/untis" + +# Installed in CI (pacman) before the makepkg test build. +BUILD_DEPS=(meson ninja glib2 glib2-devel gtk4 libadwaita python + python-gobject gettext) + +latest_version() { + curl -sf "https://codeberg.org/api/v1/repos/$UPSTREAM_REPO/releases/latest" \ + | jq -r '.tag_name' | sed 's/^v//' +} + +# refresh_checksums +refresh_checksums() { + local ver="$1" pkgbuild="$2" + local sha + sha="$(curl -sfL "https://codeberg.org/$UPSTREAM_REPO/archive/v$ver.tar.gz" \ + | sha256sum | cut -d' ' -f1)" + sed -i "s|^sha256sums=.*|sha256sums=('$sha')|" "$pkgbuild" +}