diff --git a/README.md b/README.md index 8a19f16..cc694e8 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,54 @@ # PKGBUILDS -Automated `-bin` packages for the [AUR](https://aur.archlinux.org), kept up to -date by GitHub Actions. +Automated AUR packages, kept up to date by GitHub Actions. Every 6 hours the [update workflow](.github/workflows/update.yml) checks each package's upstream for a new release. When one is found it: -1. builds the software in an Arch Linux container, -2. publishes the resulting install tree as a `.tar.zst` asset on a GitHub - release of **this** repository (tag `-`), -3. updates the `PKGBUILD` (pkgver/pkgrel/sha256sums), test-builds it with - `makepkg` and regenerates `.SRCINFO`, -4. commits the changes back to this repository, -5. pushes `PKGBUILD` + `.SRCINFO` to the AUR, and -6. deletes the package's superseded releases (older versions, tag included). +1. updates the `PKGBUILD` (pkgver/pkgrel/sha256sums), +2. test-builds it with `makepkg` and regenerates `.SRCINFO`, +3. commits the changes back to this repository, and +4. pushes the package files to the AUR. -The AUR packages themselves only download the prebuilt asset from step 2, so -users don't need any build dependencies. +## Ground rule + +**Nothing is ever built or hosted here.** Every `PKGBUILD` sources a +deliverable published by *upstream* — a release tarball, `.deb`, wheel or +AppImage — exactly like any hand-written AUR package would. + +This is not a style preference. The +[AUR submission guidelines](https://wiki.archlinux.org/title/AUR_submission_guidelines#Rules_of_submission) +say: + +> Packages that use **prebuilt** deliverables, when the sources are available, +> must use the `-bin` suffix. […] The AUR should not contain the binary +> tarball created by makepkg + +A `-bin` package repackages what upstream ships. Building the software +yourself, publishing the result as a release asset and having the AUR +`PKGBUILD` download *that* makes this repository an unofficial binary +repository — users can no longer verify that the package matches what +upstream released. Packages set up that way were removed from the AUR in +July 2026; do not reintroduce the pattern. + +If upstream ships no Linux binary, there are exactly two options: build from +source in the `PKGBUILD` (and drop the `-bin` suffix), or don't package it. ## Packages -| Package | Upstream | AUR | -|---|---|---| -| `timetable-bin` | [ostfriese4/untis](https://codeberg.org/ostfriese4/untis) — "Timetable", a GTK4 + LibAdwaita client for WebUntis | [timetable-bin](https://aur.archlinux.org/packages/timetable-bin) | -| `fluxer-bin` | [fluxer.app](https://fluxer.app) — Fluxer desktop client (Electron) | [fluxer-bin](https://aur.archlinux.org/packages/fluxer-bin) | -| `chromium-widevine-helper-bin` | [GloriousEggroll/chromium-widevine-helper](https://github.com/GloriousEggroll/chromium-widevine-helper) — extension + native helper installing Google's Widevine CDM into Chromium-based browser profiles | [chromium-widevine-helper-bin](https://aur.archlinux.org/packages/chromium-widevine-helper-bin) | -| `sharpemu-bin` | [sharpemu/sharpemu](https://github.com/sharpemu/sharpemu) — experimental PlayStation 5 emulator | [sharpemu-bin](https://aur.archlinux.org/packages/sharpemu-bin) | -| `thonny-bin` | [thonny/thonny](https://github.com/thonny/thonny) — Python IDE for beginners (bundles a standalone CPython + tcl/tk) | [thonny-bin](https://aur.archlinux.org/packages/thonny-bin) | -| `gearlever-bin` | [mijorus/gearlever](https://github.com/mijorus/gearlever) — "Gear Lever", a GTK4 + LibAdwaita AppImage manager | [gearlever-bin](https://aur.archlinux.org/packages/gearlever-bin) | -| `faugus-launcher-bin` | [Faugus/faugus-launcher](https://github.com/Faugus/faugus-launcher) — launcher for Windows games via UMU-Launcher | [faugus-launcher-bin](https://aur.archlinux.org/packages/faugus-launcher-bin) | -| `protonplus-bin` | [Vysp3r/ProtonPlus](https://github.com/Vysp3r/ProtonPlus) — compatibility-tools manager (Vala/GTK4) | [protonplus-bin](https://aur.archlinux.org/packages/protonplus-bin) | -| `zapzap-bin` | [rafatosta/zapzap](https://github.com/rafatosta/zapzap) — WhatsApp desktop client (PyQt6 + WebEngine) | [zapzap-bin](https://aur.archlinux.org/packages/zapzap-bin) | -| `vacuumtube-bin` | [shy1132/VacuumTube](https://github.com/shy1132/VacuumTube) — YouTube Leanback (TV UI) with built-in adblocker (repackaged upstream deb) | [vacuumtube-bin](https://aur.archlinux.org/packages/vacuumtube-bin) | -| `wiiudownloader-bin` | [Xpl0itU/WiiUDownloader](https://github.com/Xpl0itU/WiiUDownloader) — Wii U title downloader (Go + GTK3) | [wiiudownloader-bin](https://aur.archlinux.org/packages/wiiudownloader-bin) | -| `trayscale-bin` | [DeedleFake/trayscale](https://github.com/DeedleFake/trayscale) — GUI for the Tailscale CLI (Go + GTK4) | [trayscale-bin](https://aur.archlinux.org/packages/trayscale-bin) | -| `librepods-bin` | [librepods-org/librepods](https://github.com/librepods-org/librepods) — AirPods integration for Linux (Qt6) | [librepods-bin](https://aur.archlinux.org/packages/librepods-bin) | -| `planify-bin` | [alainm23/planify](https://github.com/alainm23/planify) — task manager with Todoist/Nextcloud support (Vala/GTK4, bundles gxml) | [planify-bin](https://aur.archlinux.org/packages/planify-bin) | -| `modrinth-app-bin` | [modrinth/code](https://github.com/modrinth/code) — Modrinth's Minecraft mod manager/launcher (repackaged upstream deb) | [modrinth-app-bin](https://aur.archlinux.org/packages/modrinth-app-bin) | -| `bazaar-bin` | [bazaar-org/bazaar](https://github.com/bazaar-org/bazaar) — GNOME app store for flatpaks/Flathub | [bazaar-bin](https://aur.archlinux.org/packages/bazaar-bin) | -| `snapx-bin` | [SnapXL/SnapX](https://github.com/SnapXL/SnapX) — ShareX-fork screenshot/sharing tool (repackaged upstream bundle) | [snapx-bin](https://aur.archlinux.org/packages/snapx-bin) | -| `chiaki-ng-bin` | [streetpea/chiaki-ng](https://github.com/streetpea/chiaki-ng) — PlayStation Remote Play client (Qt6) | [chiaki-ng-bin](https://aur.archlinux.org/packages/chiaki-ng-bin) | -| `gnome-network-displays-bin` | [GNOME/gnome-network-displays](https://gitlab.gnome.org/GNOME/gnome-network-displays) — GNOME screencasting (Miracast/Chromecast) | [gnome-network-displays-bin](https://aur.archlinux.org/packages/gnome-network-displays-bin) | -| `waydroid-helper-bin` | [ayasa520/waydroid-helper](https://github.com/ayasa520/waydroid-helper) — GTK4 GUI for Waydroid configuration and extensions | [waydroid-helper-bin](https://aur.archlinux.org/packages/waydroid-helper-bin) | -| `lunar-client-bin` | [lunarclient.com](https://lunarclient.com) — Minecraft PvP modpack launcher (upstream AppImage) | [lunar-client-bin](https://aur.archlinux.org/packages/lunar-client-bin) | +| Package | Upstream | Upstream deliverable | AUR | +|---|---|---|---| +| `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) | +| `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) | +| `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) | +| `zapzap-bin` | [rafatosta/zapzap](https://github.com/rafatosta/zapzap) — WhatsApp desktop client (PyQt6 + WebEngine) | wheel | [zapzap-bin](https://aur.archlinux.org/packages/zapzap-bin) | ## Setup (one-time) @@ -60,25 +66,27 @@ package automatically. ## Adding a package -Create a new directory named after the AUR package containing: +Check first that upstream actually publishes a Linux binary and that the AUR +does not already carry an equivalent package — a `-bin` next to a maintained +source package is fine, a second copy of the same thing is not. -- **`PKGBUILD`** — sources the prebuilt asset from - `https://github.com/Felitendo/PKGBUILDS/releases/download/-/-.tar.zst`. - `pkgver`, `pkgrel` and `sha256sums` are maintained by CI. -- **`pkg.sh`** — bash sourced by [scripts/update-package.sh](scripts/update-package.sh). - Always provides `latest_version` (prints the latest upstream version, no - `v` prefix), plus one of two modes: - - *upstream has no binaries* (e.g. `timetable-bin`): define - `build_artifact ` (build upstream and write the - install tree as a tarball containing `usr/`) and `BUILD_DEPS` (array of - Arch packages needed to build). CI hosts the result as a GitHub release - asset which the PKGBUILD downloads. - - *upstream hosts binaries* (e.g. `fluxer-bin`): define - `refresh_checksums ` which updates the - `sha256sums*` lines for the new version. The PKGBUILD sources upstream - URLs directly and nothing is hosted here. +Then create a directory named after the AUR package containing: - Other local source files in the directory (`.desktop` files, etc.) are +- **`PKGBUILD`** — sources upstream's release URLs directly. `pkgver`, + `pkgrel` and `sha256sums` are maintained by CI, so keep `sha256sums` on a + single line. +- **`pkg.sh`** — bash sourced by [scripts/update-package.sh](scripts/update-package.sh), + defining: + - `latest_version` — prints the latest upstream version, no `v` prefix. + - `refresh_checksums ` — updates the `sha256sums*` + lines for that version. If the asset name carries build metadata that does + not follow from `pkgver` (see `snapx-bin`, `faugus-launcher-bin`), resolve + it via the GitHub API here and sync an `_asset` variable in the `PKGBUILD` + too. + - `BUILD_DEPS` — optional array of Arch packages to install before the CI + test build; only needed by packages that build from source. + + Other local source files in the directory (`.desktop` files, patches, …) are pushed to the AUR alongside `PKGBUILD` and `.SRCINFO`. The workflow discovers package directories automatically. Trigger a run diff --git a/gearlever-bin/.SRCINFO b/gearlever-bin/.SRCINFO deleted file mode 100644 index ac9d65d..0000000 --- a/gearlever-bin/.SRCINFO +++ /dev/null @@ -1,29 +0,0 @@ -pkgbase = gearlever-bin - pkgdesc = Manage AppImages with ease (prebuilt) - pkgver = 4.6.2 - pkgrel = 3 - url = https://gearlever.mijorus.it - arch = any - license = GPL-3.0-or-later - depends = gtk4 - depends = libadwaita - depends = glib2 - depends = dconf - depends = hicolor-icon-theme - depends = python - depends = python-gobject - depends = python-dbus - depends = python-requests - depends = python-pyxdg - depends = 7zip - depends = binutils - depends = squashfs-tools - depends = dwarfs - depends = fuse2 - optdepends = libxml2-legacy: required by the LibreOffice AppImage - provides = gearlever - conflicts = gearlever - source = gearlever-bin-4.6.2-3.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/gearlever-bin-4.6.2/gearlever-bin-4.6.2.tar.zst - sha256sums = 225dd08d1fbdf33bb5979660737cee180f60b8cfa6477f1553025a6c2f5236a5 - -pkgname = gearlever-bin diff --git a/gearlever-bin/PKGBUILD b/gearlever-bin/PKGBUILD deleted file mode 100644 index 4b2c3af..0000000 --- a/gearlever-bin/PKGBUILD +++ /dev/null @@ -1,27 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=gearlever-bin -pkgver=4.6.2 -pkgrel=3 -pkgdesc="Manage AppImages with ease (prebuilt)" -arch=('any') -url="https://gearlever.mijorus.it" -license=('GPL-3.0-or-later') -# dwarfs is only needed for AppImages using a DwarFS filesystem, but a hard -# dependency: without dwarfsck Gear Lever cannot tell those apart from squashfs -# images and fails on them with a confusing "Can't find a valid SQUASHFS -# superblock" from its unsquashfs fallback. -depends=('gtk4' 'libadwaita' 'glib2' 'dconf' 'hicolor-icon-theme' 'python' - 'python-gobject' 'python-dbus' 'python-requests' 'python-pyxdg' - '7zip' 'binutils' 'squashfs-tools' 'dwarfs' 'fuse2') -optdepends=('libxml2-legacy: required by the LibreOffice AppImage') -provides=('gearlever') -conflicts=('gearlever') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('225dd08d1fbdf33bb5979660737cee180f60b8cfa6477f1553025a6c2f5236a5') - -package() { - cp -a "$srcdir/usr" "$pkgdir/" -} diff --git a/gearlever-bin/pkg.sh b/gearlever-bin/pkg.sh deleted file mode 100644 index ca63a9b..0000000 --- a/gearlever-bin/pkg.sh +++ /dev/null @@ -1,65 +0,0 @@ -# gearlever-bin - prebuilt package of https://github.com/mijorus/gearlever -# ("Gear Lever", a GTK4 + LibAdwaita AppImage manager written in Python). -# -# Upstream only publishes a Flatpak bundle, 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="mijorus/gearlever" - -# Installed in CI (pacman) before build_artifact runs. -BUILD_DEPS=(meson ninja glib2 glib2-devel python gettext python-pip) - -latest_version() { - # gh instead of curl: unauthenticated GitHub API calls are rate-limited on - # shared CI runner IPs. - 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/$ver.tar.gz" | tar -xz -C "$workdir" - srctree="$workdir/gearlever-$ver" - - # Arch's 7zip package ships /usr/bin/7z, not the 7zz binary the Flatpak - # bundles, and the ELF-offset helper lives in /usr/lib/gearlever instead of - # somewhere on $PATH. - sed -i -e 's/7zz/7z/g' \ - -e 's|get_appimage_offset|/usr/lib/gearlever/get_appimage_offset|g' \ - "$srctree/src/providers/AppImageProvider.py" - - meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release - meson install -C "$workdir/build" --destdir "$destdir" - - install -Dm755 "$srctree/build-aux/get_appimage_offset.sh" \ - "$destdir/usr/lib/gearlever/get_appimage_offset" - - # src/meson.build uses install_subdir('.'), which drags the meson.build - # files themselves into the install tree. - find "$destdir" -name meson.build -delete - - # ftputil and desktop-entry-lib are AUR-only; bundle them (pure python) - # into the app's module dir, which the launcher puts on sys.path. Versions - # come from upstream's requirements.txt pins. - grep -E '^(ftputil|desktop-entry-lib)' "$srctree/requirements.txt" > "$workdir/bundle-reqs.txt" - [[ "$(wc -l < "$workdir/bundle-reqs.txt")" -eq 2 ]] || { echo "expected 2 pinned bundle deps in requirements.txt" >&2; return 1; } - python -m pip install --isolated --no-deps --target "$destdir/usr/share/gearlever" \ - -r "$workdir/bundle-reqs.txt" - rm -rf "$destdir/usr/share/gearlever/bin" - - # 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/gnome-network-displays-bin/.SRCINFO b/gnome-network-displays-bin/.SRCINFO deleted file mode 100644 index 59bbe3a..0000000 --- a/gnome-network-displays-bin/.SRCINFO +++ /dev/null @@ -1,34 +0,0 @@ -pkgbase = gnome-network-displays-bin - pkgdesc = Screencasting for GNOME - Miracast and Chromecast (prebuilt) - pkgver = 0.99.0 - pkgrel = 1 - url = https://gitlab.gnome.org/GNOME/gnome-network-displays - arch = x86_64 - license = GPL-3.0-or-later - depends = avahi - depends = dnsmasq - depends = gst-plugin-pipewire - depends = gst-plugins-bad - depends = gst-plugins-good - depends = gst-plugins-ugly - depends = gst-rtsp-server - depends = gstreamer - depends = gtk4 - depends = json-glib - depends = libadwaita - depends = libnm - depends = libportal - depends = libportal-gtk4 - depends = libpulse - depends = libsoup3 - depends = networkmanager - depends = protobuf-c - depends = xdg-desktop-portal - depends = hicolor-icon-theme - optdepends = gstreamer-vaapi: hardware accelerated encoding - provides = gnome-network-displays - conflicts = gnome-network-displays - source = gnome-network-displays-bin-0.99.0-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/gnome-network-displays-bin-0.99.0/gnome-network-displays-bin-0.99.0.tar.zst - sha256sums = 6e7f93f491226bab6ae54139dcaf009d9cedd8e983b04b5128701c3250936ac1 - -pkgname = gnome-network-displays-bin diff --git a/gnome-network-displays-bin/PKGBUILD b/gnome-network-displays-bin/PKGBUILD deleted file mode 100644 index daa749d..0000000 --- a/gnome-network-displays-bin/PKGBUILD +++ /dev/null @@ -1,25 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=gnome-network-displays-bin -pkgver=0.99.0 -pkgrel=1 -pkgdesc="Screencasting for GNOME - Miracast and Chromecast (prebuilt)" -arch=('x86_64') -url="https://gitlab.gnome.org/GNOME/gnome-network-displays" -license=('GPL-3.0-or-later') -depends=('avahi' 'dnsmasq' 'gst-plugin-pipewire' 'gst-plugins-bad' - 'gst-plugins-good' 'gst-plugins-ugly' 'gst-rtsp-server' 'gstreamer' - 'gtk4' 'json-glib' 'libadwaita' 'libnm' 'libportal' 'libportal-gtk4' - 'libpulse' 'libsoup3' 'networkmanager' 'protobuf-c' - 'xdg-desktop-portal' 'hicolor-icon-theme') -optdepends=('gstreamer-vaapi: hardware accelerated encoding') -provides=('gnome-network-displays') -conflicts=('gnome-network-displays') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('6e7f93f491226bab6ae54139dcaf009d9cedd8e983b04b5128701c3250936ac1') - -package() { - cp -a "$srcdir/usr" "$pkgdir/" -} diff --git a/gnome-network-displays-bin/pkg.sh b/gnome-network-displays-bin/pkg.sh deleted file mode 100644 index 9073b14..0000000 --- a/gnome-network-displays-bin/pkg.sh +++ /dev/null @@ -1,47 +0,0 @@ -# gnome-network-displays-bin - prebuilt package of -# https://gitlab.gnome.org/GNOME/gnome-network-displays -# (GNOME screencasting via Miracast/Chromecast, C + GTK4/LibAdwaita). -# -# Upstream publishes no binary assets, so build_artifact() builds from the -# GitLab release tarball. - -GITLAB_PROJECT="GNOME%2Fgnome-network-displays" - -# Installed in CI (pacman) before build_artifact runs. -BUILD_DEPS=(meson ninja glib2-devel gettext gtk4 libadwaita gstreamer - gst-rtsp-server gst-plugins-bad json-glib libnm libportal - libportal-gtk4 libpulse libsoup3 protobuf-c avahi) - -latest_version() { - curl -sf "https://gitlab.gnome.org/api/v4/projects/$GITLAB_PROJECT/releases?per_page=1" \ - | jq -r '.[0].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://gitlab.gnome.org/GNOME/gnome-network-displays/-/archive/$ver/gnome-network-displays-$ver.tar.gz" \ - | tar -xz -C "$workdir" - srctree="$workdir/gnome-network-displays-$ver" - - # Arch has no /usr/libexec; same fix as the AUR source package - sed -i 's/libexec/lib/g' "$srctree/src/nd-systemd-helpers.c" "$srctree/src/meson.build" - - 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/librepods-bin/.SRCINFO b/librepods-bin/.SRCINFO deleted file mode 100644 index 0da8bbe..0000000 --- a/librepods-bin/.SRCINFO +++ /dev/null @@ -1,21 +0,0 @@ -pkgbase = librepods-bin - pkgdesc = AirPods liberated from Apple's ecosystem (prebuilt) - pkgver = 1.0.0rc1 - pkgrel = 1 - url = https://github.com/librepods-org/librepods - arch = x86_64 - license = GPL-3.0-only - depends = glibc - depends = gcc-libs - depends = hicolor-icon-theme - depends = libpulse - depends = openssl - depends = qt6-base - depends = qt6-connectivity - depends = qt6-declarative - provides = librepods - conflicts = librepods - source = librepods-bin-1.0.0rc1-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/librepods-bin-1.0.0rc1/librepods-bin-1.0.0rc1.tar.zst - sha256sums = 69ce19414a0205d1d19fb851f6adea6c231013df6ec8a32bc8122d5fd6e9dd52 - -pkgname = librepods-bin diff --git a/librepods-bin/PKGBUILD b/librepods-bin/PKGBUILD deleted file mode 100644 index 49d0a45..0000000 --- a/librepods-bin/PKGBUILD +++ /dev/null @@ -1,21 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=librepods-bin -pkgver=1.0.0rc1 -pkgrel=1 -pkgdesc="AirPods liberated from Apple's ecosystem (prebuilt)" -arch=('x86_64') -url="https://github.com/librepods-org/librepods" -license=('GPL-3.0-only') -depends=('glibc' 'gcc-libs' 'hicolor-icon-theme' 'libpulse' 'openssl' - 'qt6-base' 'qt6-connectivity' 'qt6-declarative') -provides=('librepods') -conflicts=('librepods') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('69ce19414a0205d1d19fb851f6adea6c231013df6ec8a32bc8122d5fd6e9dd52') - -package() { - cp -a "$srcdir/usr" "$pkgdir/" -} diff --git a/librepods-bin/pkg.sh b/librepods-bin/pkg.sh deleted file mode 100644 index bf5360e..0000000 --- a/librepods-bin/pkg.sh +++ /dev/null @@ -1,46 +0,0 @@ -# librepods-bin - prebuilt package of https://github.com/librepods-org/librepods -# (AirPods integration for Linux, Qt6/C++ client in the linux/ subdirectory). -# -# Upstream releases carry only Android APKs, so build_artifact() builds the -# Linux client from the release tarball. Upstream tags look like v1.0.0-rc1; -# pkgver strips the hyphen (1.0.0rc1, sorts before 1.0.0 in vercmp) and -# build_artifact re-inserts it for the tag URL. - -UPSTREAM_REPO="librepods-org/librepods" - -# Installed in CI (pacman) before build_artifact runs. -BUILD_DEPS=(cmake qt6-base qt6-connectivity qt6-declarative qt6-tools - libpulse openssl) - -latest_version() { - gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//; s/-//g' -} - -# build_artifact -build_artifact() { - local ver="$1" outfile="$2" - local upver workdir destdir srctree - upver="$(sed -E 's/([a-z])/-\1/' <<< "$ver")" - workdir="$(mktemp -d)" - destdir="$(mktemp -d)" - - curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$upver.tar.gz" | tar -xz -C "$workdir" - srctree="$workdir/librepods-$upver" - - cmake -B "$workdir/build" -S "$srctree/linux" -Wno-dev \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_SKIP_RPATH=TRUE - cmake --build "$workdir/build" -j"$(nproc)" - DESTDIR="$destdir" cmake --install "$workdir/build" - - # These caches are generated by pacman hooks; shipping them would cause - # file conflicts on install. - rm -f "$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/planify-bin/.SRCINFO b/planify-bin/.SRCINFO deleted file mode 100644 index bdaa63b..0000000 --- a/planify-bin/.SRCINFO +++ /dev/null @@ -1,29 +0,0 @@ -pkgbase = planify-bin - pkgdesc = Task manager with Todoist and Nextcloud support (prebuilt, bundles gxml) - pkgver = 4.19.5 - pkgrel = 1 - url = https://useplanify.com - arch = x86_64 - license = GPL-3.0-or-later - depends = evolution-data-server - depends = gtk4 - depends = gtksourceview5 - depends = icu - depends = json-glib - depends = libadwaita - depends = libgee - depends = libical - depends = libportal - depends = libportal-gtk4 - depends = libsecret - depends = libsoup3 - depends = libspelling - depends = sqlite - depends = hicolor-icon-theme - provides = planify - conflicts = planify - conflicts = elementary-planner - source = planify-bin-4.19.5-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/planify-bin-4.19.5/planify-bin-4.19.5.tar.zst - sha256sums = 563a80c7660b207f6c139e0f78bcb49631e8369be29369a7a984b022816b8c0f - -pkgname = planify-bin diff --git a/planify-bin/PKGBUILD b/planify-bin/PKGBUILD deleted file mode 100644 index a738ee0..0000000 --- a/planify-bin/PKGBUILD +++ /dev/null @@ -1,22 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=planify-bin -pkgver=4.19.5 -pkgrel=1 -pkgdesc="Task manager with Todoist and Nextcloud support (prebuilt, bundles gxml)" -arch=('x86_64') -url="https://useplanify.com" -license=('GPL-3.0-or-later') -depends=('evolution-data-server' 'gtk4' 'gtksourceview5' 'icu' 'json-glib' - 'libadwaita' 'libgee' 'libical' 'libportal' 'libportal-gtk4' - 'libsecret' 'libsoup3' 'libspelling' 'sqlite' 'hicolor-icon-theme') -provides=('planify') -conflicts=('planify' 'elementary-planner') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('563a80c7660b207f6c139e0f78bcb49631e8369be29369a7a984b022816b8c0f') - -package() { - cp -a "$srcdir/usr" "$pkgdir/" -} diff --git a/planify-bin/pkg.sh b/planify-bin/pkg.sh deleted file mode 100644 index f9f43a2..0000000 --- a/planify-bin/pkg.sh +++ /dev/null @@ -1,57 +0,0 @@ -# planify-bin - prebuilt package of https://github.com/alainm23/planify -# (task manager with Todoist/Nextcloud support, Vala/GTK4 + LibAdwaita). -# -# Upstream publishes no binary assets, so build_artifact() builds from the -# release tarball. The chrono and gxml dependencies are resolved through the -# meson wrap subprojects upstream ships (gxml is not packaged in the official -# Arch repos, so the library ends up bundled inside this package). - -UPSTREAM_REPO="alainm23/planify" - -# Installed in CI (pacman) before build_artifact runs. gxml is deliberately -# absent: meson then falls back to the bundled gxml-0.20.wrap subproject. -BUILD_DEPS=(meson ninja vala git gobject-introspection gettext glib2-devel - gtk4 libadwaita libgee gtksourceview5 json-glib libical libportal - libportal-gtk4 libsecret libsoup3 libspelling sqlite - evolution-data-server icu) - -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/planify-$ver" - - # The preferences dialog suggests a flatpak-only quick-add command; point it - # at the plain binary instead (same fix as the AUR source package). - grep -q 'flatpak run --command=io.github.alainm23.planify.quick-add' \ - "$srctree/src/Dialogs/Preferences/Pages/QuickAdd.vala" \ - && sed -i 's|flatpak run --command=io.github.alainm23.planify.quick-add|io.github.alainm23.planify.quick-add|' \ - "$srctree/src/Dialogs/Preferences/Pages/QuickAdd.vala" \ - || echo "WARNING: quick-add flatpak command not found, sed skipped" >&2 - - meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release - meson install -C "$workdir/build" --destdir "$destdir" - - # convenience names, as in the AUR source package - ln -s io.github.alainm23.planify "$destdir/usr/bin/planify" - ln -s io.github.alainm23.planify.quick-add "$destdir/usr/bin/planify.quick-add" - - # 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/protonplus-bin/.SRCINFO b/protonplus-bin/.SRCINFO deleted file mode 100644 index fabfdba..0000000 --- a/protonplus-bin/.SRCINFO +++ /dev/null @@ -1,20 +0,0 @@ -pkgbase = protonplus-bin - pkgdesc = Modern compatibility tools manager (prebuilt) - pkgver = 0.5.22 - pkgrel = 1 - url = https://github.com/Vysp3r/ProtonPlus - arch = x86_64 - license = GPL-3.0-or-later - depends = gtk4 - depends = json-glib - depends = libadwaita - depends = libarchive - depends = libgee - depends = libsoup3 - depends = hicolor-icon-theme - provides = protonplus - conflicts = protonplus - source = protonplus-bin-0.5.22-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/protonplus-bin-0.5.22/protonplus-bin-0.5.22.tar.zst - sha256sums = b5e0d6966c62f624017f0672688c3d57b2fda637ecbe47cc50dd043a92c52770 - -pkgname = protonplus-bin diff --git a/protonplus-bin/PKGBUILD b/protonplus-bin/PKGBUILD deleted file mode 100644 index 01b6e66..0000000 --- a/protonplus-bin/PKGBUILD +++ /dev/null @@ -1,21 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=protonplus-bin -pkgver=0.5.22 -pkgrel=1 -pkgdesc="Modern compatibility tools manager (prebuilt)" -arch=('x86_64') -url="https://github.com/Vysp3r/ProtonPlus" -license=('GPL-3.0-or-later') -depends=('gtk4' 'json-glib' 'libadwaita' 'libarchive' 'libgee' 'libsoup3' - 'hicolor-icon-theme') -provides=('protonplus') -conflicts=('protonplus') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('b5e0d6966c62f624017f0672688c3d57b2fda637ecbe47cc50dd043a92c52770') - -package() { - cp -a "$srcdir/usr" "$pkgdir/" -} diff --git a/protonplus-bin/pkg.sh b/protonplus-bin/pkg.sh deleted file mode 100644 index b9eba45..0000000 --- a/protonplus-bin/pkg.sh +++ /dev/null @@ -1,40 +0,0 @@ -# protonplus-bin - prebuilt package of https://github.com/Vysp3r/ProtonPlus -# (GTK4 + LibAdwaita compatibility-tools manager written in Vala). -# -# Upstream publishes no binary release assets, so build_artifact() compiles -# the Vala project from the release tarball (native x86_64 binary). - -UPSTREAM_REPO="Vysp3r/ProtonPlus" - -# Installed in CI (pacman) before build_artifact runs. -BUILD_DEPS=(meson ninja vala gtk4 libadwaita json-glib libgee libsoup3 - libarchive gettext glib2-devel) - -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/ProtonPlus-$ver" - - meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release -Dstrip=true - 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/scripts/update-package.sh b/scripts/update-package.sh index 21ca800..fadc819 100644 --- a/scripts/update-package.sh +++ b/scripts/update-package.sh @@ -1,17 +1,17 @@ #!/usr/bin/env bash # Update one package directory: # 1. determine the latest upstream version (pkg.sh: latest_version) -# 2. bring the PKGBUILD up to date: -# - packages we build ourselves (pkg.sh defines build_artifact): make -# sure the GitHub release asset for that version exists - building and -# uploading it if necessary - and sync pkgver/sha256sums with it -# - packages prebuilt by upstream (no build_artifact): on a new version, -# set pkgver and let pkg.sh's refresh_checksums update the sums +# 2. on a new upstream version: set pkgver and let pkg.sh's +# refresh_checksums update the sums # 3. if the PKGBUILD changed: set pkgrel and run a makepkg test build # 4. regenerate .SRCINFO and commit changes back to this repository # 5. push the package files to the AUR if it differs # -# Requires: GH_TOKEN (GitHub release + repo push), AUR_SSH_PRIVATE_KEY. +# Every package sources deliverables published by upstream - the AUR does not +# allow a PKGBUILD to pull in a binary tarball built by the maintainer, so +# nothing is ever built or hosted here. +# +# Requires: GH_TOKEN (repo push), AUR_SSH_PRIVATE_KEY. # Optional: AUR_GIT_NAME / AUR_GIT_EMAIL for the AUR commit identity. set -euo pipefail @@ -41,39 +41,11 @@ oldrel="$(grep -Po '^pkgrel=\K.*' "$pkg/PKGBUILD")" ### 2: bring the PKGBUILD up to date ######################################## -if declare -f build_artifact >/dev/null; then - # We build the binary artifact and host it as a GitHub release asset. - tag="$pkg-$ver" - asset="$pkg-$ver.tar.zst" - - if gh release view "$tag" --json assets -q '.assets[].name' 2>/dev/null | grep -qxF "$asset"; then - echo "$pkg: release $tag already contains $asset - reusing it" - gh release download "$tag" --pattern "$asset" --dir "$pkg" --clobber - else - echo "$pkg: building $asset" - if [[ "${CI:-}" == "true" && "${#BUILD_DEPS[@]}" -gt 0 ]]; then - pacman -S --noconfirm --needed "${BUILD_DEPS[@]}" - fi - build_artifact "$ver" "$repo_root/$pkg/$asset" - gh release view "$tag" >/dev/null 2>&1 || \ - gh release create "$tag" --title "$tag" \ - --notes "Automated build of $pkg $ver (upstream: ${UPSTREAM_REPO:-unknown})." - gh release upload "$tag" "$pkg/$asset" --clobber - fi - - sha="$(sha256sum "$pkg/$asset" | cut -d' ' -f1)" - sed -i \ - -e "s|^pkgver=.*|pkgver=$ver|" \ - -e "s|^sha256sums=.*|sha256sums=('$sha')|" \ - "$pkg/PKGBUILD" +if [[ "$ver" != "$oldver" ]]; then + sed -i "s|^pkgver=.*|pkgver=$ver|" "$pkg/PKGBUILD" + refresh_checksums "$ver" "$pkg/PKGBUILD" else - # Upstream publishes the binaries itself; only refresh version + checksums. - if [[ "$ver" != "$oldver" ]]; then - sed -i "s|^pkgver=.*|pkgver=$ver|" "$pkg/PKGBUILD" - refresh_checksums "$ver" "$pkg/PKGBUILD" - else - echo "$pkg: $ver is current" - fi + echo "$pkg: $ver is current" fi ### 3: pkgrel + test build if the PKGBUILD changed ########################## @@ -100,6 +72,11 @@ else fi sed -i "s|^pkgrel=.*|pkgrel=$rel|" "$pkg/PKGBUILD" + # source packages need their makedepends to get through build() + if [[ "${CI:-}" == "true" && "${#BUILD_DEPS[@]}" -gt 0 ]]; then + pacman -S --noconfirm --needed "${BUILD_DEPS[@]}" + fi + # -d: the runner only needs to package, not run the result run_makepkg -fdc echo "$pkg: makepkg test build succeeded" @@ -170,22 +147,3 @@ else git push origin HEAD:master echo "$pkg: pushed $ver-$rel to the AUR" fi - -### 6: prune superseded GitHub releases ###################################### - -# Build-mode packages get one release per version; once a newer version is -# fully published (asset built, PKGBUILD updated, AUR pushed - i.e. we got -# this far) the older releases are no longer referenced by anything, so drop -# them together with their tags. Runs every time to also catch leftovers. -cd "$repo_root" -if declare -f build_artifact >/dev/null; then - while IFS= read -r tag; do - [[ "$tag" == "$pkg-$ver" ]] && continue - rest="${tag#"$pkg-"}" - # only this package's tags: "-" (a pkgver never contains - # "-", which also keeps prefix-sharing package names apart) - [[ "$tag" == "$pkg-"* && "$rest" != *-* ]] || continue - echo "$pkg: deleting superseded release $tag" - gh release delete "$tag" --cleanup-tag --yes - done < <(gh release list --limit 100 --json tagName -q '.[].tagName') -fi diff --git a/thonny-bin/.SRCINFO b/thonny-bin/.SRCINFO deleted file mode 100644 index 2f65d8d..0000000 --- a/thonny-bin/.SRCINFO +++ /dev/null @@ -1,17 +0,0 @@ -pkgbase = thonny-bin - pkgdesc = Python IDE for beginners (prebuilt, with bundled Python runtime) - pkgver = 5.0.0 - pkgrel = 1 - url = https://github.com/thonny/thonny - arch = x86_64 - license = MIT - depends = glibc - depends = gcc-libs - optdepends = libnotify: desktop notifications (dlopened by Tk) - provides = thonny - conflicts = thonny - options = !strip - source = thonny-bin-5.0.0-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/thonny-bin-5.0.0/thonny-bin-5.0.0.tar.zst - sha256sums = 7baea7ff70d7aa6e86fa1153ba8f156d8f5a402ddb5279d8e15ceceb4aaa53e5 - -pkgname = thonny-bin diff --git a/thonny-bin/PKGBUILD b/thonny-bin/PKGBUILD deleted file mode 100644 index 10a7c6d..0000000 --- a/thonny-bin/PKGBUILD +++ /dev/null @@ -1,24 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=thonny-bin -pkgver=5.0.0 -pkgrel=1 -pkgdesc="Python IDE for beginners (prebuilt, with bundled Python runtime)" -arch=('x86_64') -url="https://github.com/thonny/thonny" -license=('MIT') -# The bundled standalone CPython (python-build-standalone) links everything -# else - including tcl/tk 9 and its X11 client libraries - statically. -depends=('glibc' 'gcc-libs') -optdepends=('libnotify: desktop notifications (dlopened by Tk)') -provides=('thonny') -conflicts=('thonny') -options=('!strip') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('7baea7ff70d7aa6e86fa1153ba8f156d8f5a402ddb5279d8e15ceceb4aaa53e5') - -package() { - cp -a "$srcdir/opt" "$srcdir/usr" "$pkgdir/" -} diff --git a/thonny-bin/pkg.sh b/thonny-bin/pkg.sh deleted file mode 100644 index 986d5d7..0000000 --- a/thonny-bin/pkg.sh +++ /dev/null @@ -1,102 +0,0 @@ -# thonny-bin - Thonny (https://github.com/thonny/thonny), a Python IDE for -# beginners. -# -# Since 5.0 upstream ships no prebuilt Linux bundle anymore - the official -# installer script just creates a venv from the system Python and -# pip-installs thonny plus a pinned set of extras. A venv tied to the system -# Python would silently break on every Arch Python minor bump, so -# build_artifact() instead bundles a relocatable standalone CPython -# (astral-sh/python-build-standalone, tkinter included) into /opt/thonny-bin -# and pip-installs into that, mirroring the dependency pins of upstream's -# installer script. The install tree is published as a GitHub release asset -# of this repository, which the PKGBUILD then uses. - -UPSTREAM_REPO="thonny/thonny" - -# Series of the bundled CPython; bump deliberately (thonny 5.x supports -# Python 3.9-3.15). -PYTHON_SERIES="3.13" - -BUILD_DEPS=() - -latest_version() { - # gh instead of plain curl: authenticated API calls, so shared-IP rate - # limits on the CI runners can't bite. - gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//' -} - -# build_artifact -build_artifact() { - local ver="$1" outfile="$2" - local workdir root prefix py - workdir="$(mktemp -d)" - root="$workdir/root" - prefix="$root/opt/thonny-bin" - mkdir -p "$prefix" - - gh release download -R astral-sh/python-build-standalone \ - --pattern "cpython-${PYTHON_SERIES}.*-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz" \ - --dir "$workdir" - tar -xzf "$workdir"/cpython-*.tar.gz -C "$workdir" - cp -a "$workdir/python/." "$prefix/" - py="$prefix/bin/python3" - - # Upstream's installer script is the authority on which extra packages - # (and pins) belong to a release - parse its pip install line instead of - # hardcoding a list that would go stale. - curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$ver/thonny-$ver.bash" \ - -o "$workdir/installer.bash" - local extras=() - mapfile -t extras < <(grep -m1 -- "-m pip install '" "$workdir/installer.bash" \ - | grep -oP "'[^']*'" | sed "s/^'//; s/'\$//") - if [[ ${#extras[@]} -eq 0 ]]; then - echo "thonny-bin: could not parse the extras list from the installer script" >&2 - return 1 - fi - - "$py" -m pip install --no-cache-dir --no-compile "${extras[@]}" "thonny==$ver" - - # pip wrote the staging path into the script shebangs; point them at the - # final install location. - local f - for f in "$prefix/bin/"*; do - [[ -f "$f" && ! -L "$f" && "$(head -c 2 "$f")" == '#!' ]] || continue - sed -i "1s|$prefix|/opt/thonny-bin|" "$f" - done - - # Precompile with the final paths recorded in the .pyc files - users can't - # write __pycache__ under /opt at runtime. Some packages ship - # intentionally uncompilable files, hence the || true. - "$py" -m compileall -q -s "$root" "$prefix/lib" || true - - local sitepkg - sitepkg="$("$py" -c 'import os, thonny; print(os.path.dirname(thonny.__file__))')" - - install -d "$root/usr/bin" "$root/usr/share/applications" \ - "$root/usr/share/pixmaps" "$root/usr/share/licenses/thonny-bin" - ln -s /opt/thonny-bin/bin/thonny "$root/usr/bin/thonny" - cp "$sitepkg/res/thonny.png" "$root/usr/share/pixmaps/thonny.png" - curl -sfL "https://raw.githubusercontent.com/$UPSTREAM_REPO/v$ver/LICENSE.txt" \ - -o "$root/usr/share/licenses/thonny-bin/LICENSE.txt" - - # Mirrors the launcher that upstream's installer script generates. - cat > "$root/usr/share/applications/thonny.desktop" <<'EOF' -[Desktop Entry] -Type=Application -Name=Thonny -GenericName=Python IDE -Comment=Python IDE for beginners -Exec=/opt/thonny-bin/bin/thonny %F -Icon=thonny -StartupWMClass=Thonny -Terminal=false -Categories=Development;IDE; -Keywords=programming;education; -MimeType=text/x-python; -EOF - - tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \ - -cf "$outfile" -C "$root" opt usr - - rm -rf "$workdir" -} diff --git a/trayscale-bin/.SRCINFO b/trayscale-bin/.SRCINFO deleted file mode 100644 index 912c80e..0000000 --- a/trayscale-bin/.SRCINFO +++ /dev/null @@ -1,17 +0,0 @@ -pkgbase = trayscale-bin - pkgdesc = Unofficial GUI wrapper for the Tailscale CLI client (prebuilt) - pkgver = 0.18.9 - pkgrel = 1 - url = https://github.com/DeedleFake/trayscale - arch = x86_64 - license = MIT - depends = gtk4 - depends = libadwaita - depends = hicolor-icon-theme - optdepends = tailscale: provides the daemon that manages the connection - provides = trayscale - conflicts = trayscale - source = trayscale-bin-0.18.9-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/trayscale-bin-0.18.9/trayscale-bin-0.18.9.tar.zst - sha256sums = 1b24f332a64a682e972e94fecfc11a7d719a1c74c5fd897c45c08cbd17d0ae93 - -pkgname = trayscale-bin diff --git a/trayscale-bin/PKGBUILD b/trayscale-bin/PKGBUILD deleted file mode 100644 index 43cda6c..0000000 --- a/trayscale-bin/PKGBUILD +++ /dev/null @@ -1,21 +0,0 @@ -# Maintainer: Felitendo -# This PKGBUILD is updated automatically: -# https://github.com/Felitendo/PKGBUILDS - -pkgname=trayscale-bin -pkgver=0.18.9 -pkgrel=1 -pkgdesc="Unofficial GUI wrapper for the Tailscale CLI client (prebuilt)" -arch=('x86_64') -url="https://github.com/DeedleFake/trayscale" -license=('MIT') -depends=('gtk4' 'libadwaita' 'hicolor-icon-theme') -optdepends=('tailscale: provides the daemon that manages the connection') -provides=('trayscale') -conflicts=('trayscale') -source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") -sha256sums=('1b24f332a64a682e972e94fecfc11a7d719a1c74c5fd897c45c08cbd17d0ae93') - -package() { - cp -a "$srcdir/usr" "$pkgdir/" -} diff --git a/trayscale-bin/pkg.sh b/trayscale-bin/pkg.sh deleted file mode 100644 index 2905740..0000000 --- a/trayscale-bin/pkg.sh +++ /dev/null @@ -1,36 +0,0 @@ -# trayscale-bin - prebuilt package of https://github.com/DeedleFake/trayscale -# (unofficial GTK4 + LibAdwaita GUI for the Tailscale CLI, written in Go). -# -# Upstream publishes no Linux binary assets, so build_artifact() builds the -# Go binary from the release tarball via upstream's dist.sh (slow: the gotk4 -# bindings take a while to compile). - -UPSTREAM_REPO="DeedleFake/trayscale" - -# Installed in CI (pacman) before build_artifact runs. -BUILD_DEPS=(go gtk4 libadwaita gobject-introspection) - -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/trayscale-$ver" - - (cd "$srctree" && \ - GOMODCACHE="$workdir/gomodcache" GOFLAGS="-modcacherw" \ - ./dist.sh build "v$ver" && \ - ./dist.sh install "$destdir/usr") - - tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \ - -cf "$outfile" -C "$destdir" usr - - rm -rf "$workdir" "$destdir" -}