Drop the self-built-artifact mode and the packages that relied on it
update-package.sh no longer builds anything or publishes GitHub release assets: every package now tracks an upstream deliverable, so the only work left on a new version is pkgver + checksums. BUILD_DEPS survives for the CI test build of packages that compile in the PKGBUILD. Removes the seven packages that cannot be made compliant: upstream ships no Linux binary to point at, and a maintained source package for each already exists in the AUR, so a rebuilt version would just be a duplicate. gearlever-bin, gnome-network-displays-bin, librepods-bin, planify-bin, protonplus-bin, thonny-bin, trayscale-bin README documents the rule and why, so the pattern does not come back.
This commit is contained in:
1 parent
fa1c190d17
commit
46ddf5915c
23 files changed
+74
-829
No files matched your search
@@ -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 `<pkgname>-<version>`),
|
||||
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/<pkgname>-<pkgver>/<pkgname>-<pkgver>.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 <version> <output-file>` (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 <version> <pkgbuild-path>` 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 <version> <pkgbuild-path>` — 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
|
||||
|
||||
@@ -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
|
||||
@@ -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/"
|
||||
}
|
||||
@@ -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 <version> <output-file>
|
||||
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"
|
||||
}
|
||||
@@ -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
|
||||
@@ -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/"
|
||||
}
|
||||
@@ -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 <version> <output-file>
|
||||
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"
|
||||
}
|
||||
@@ -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
|
||||
@@ -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/"
|
||||
}
|
||||
@@ -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 <version> <output-file>
|
||||
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"
|
||||
}
|
||||
@@ -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
|
||||
@@ -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/"
|
||||
}
|
||||
@@ -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 <version> <output-file>
|
||||
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"
|
||||
}
|
||||
@@ -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
|
||||
@@ -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/"
|
||||
}
|
||||
@@ -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 <version> <output-file>
|
||||
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"
|
||||
}
|
||||
+14
-56
@@ -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"
|
||||
else
|
||||
# Upstream publishes the binaries itself; only refresh version + checksums.
|
||||
if [[ "$ver" != "$oldver" ]]; then
|
||||
if [[ "$ver" != "$oldver" ]]; then
|
||||
sed -i "s|^pkgver=.*|pkgver=$ver|" "$pkg/PKGBUILD"
|
||||
refresh_checksums "$ver" "$pkg/PKGBUILD"
|
||||
else
|
||||
else
|
||||
echo "$pkg: $ver is current"
|
||||
fi
|
||||
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: "<pkg>-<version>" (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
|
||||
@@ -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
|
||||
@@ -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/"
|
||||
}
|
||||
@@ -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 <version> <output-file>
|
||||
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"
|
||||
}
|
||||
@@ -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
|
||||
@@ -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/"
|
||||
}
|
||||
@@ -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 <version> <output-file>
|
||||
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"
|
||||
}
|
||||
Reference in new issue
Block a user