Compare commits
41
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ea2ee09ce | ||
|
|
ac99db7346 | ||
|
|
0e22ae0877 | ||
|
|
4b6f203306 | ||
|
|
a221d47de4 | ||
|
|
f3cee39f53 | ||
|
|
b17ec7b0b0 | ||
|
|
6f0f9488ec | ||
|
|
83194de7b4 | ||
|
|
8c0d79f9c0 | ||
|
|
4c008fd3e4 | ||
|
|
14deed65d7 | ||
|
|
254a666c0d | ||
|
|
83db919716 | ||
|
|
f42572b41a | ||
|
|
1515c673ea | ||
|
|
66736f3fcb | ||
|
|
4014aefcdd | ||
|
|
176c0b4e6e | ||
|
|
ca968f0e26 | ||
|
|
827762a6d4 | ||
|
|
41c6862577 | ||
|
|
b37fa50d17 | ||
|
|
9bdaa7d21e | ||
|
|
d8e0993820 | ||
|
|
051b93e662 | ||
|
|
78ed7f1c67 | ||
|
|
6210551a30 | ||
|
|
1cac0a49ba | ||
|
|
4daa234303 | ||
|
|
f7ec4c0615 | ||
|
|
8098f4a62c | ||
|
|
ff38c61e10 | ||
|
|
ef3af9f483 | ||
|
|
89206f1cd5 | ||
|
|
e509576181 | ||
|
|
b14cd21d70 | ||
|
|
8b3302d335 | ||
|
|
db74a6b65a | ||
|
|
0d9fea0a51 | ||
|
|
f215a99c11 |
No files matched your search
@@ -12,6 +12,13 @@ on:
|
||||
- '*/*'
|
||||
- '.github/workflows/update.yml'
|
||||
|
||||
# Never run twice at once: concurrent runs race on pushing to this repository
|
||||
# and to the AUR (e.g. a push-triggered run and a manual dispatch both creating
|
||||
# a new AUR repo). Queue instead of cancelling so every trigger still lands.
|
||||
concurrency:
|
||||
group: aur-update
|
||||
cancel-in-progress: false
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
|
||||
@@ -4,3 +4,5 @@
|
||||
*.pkg.tar.*
|
||||
*/src/
|
||||
*/pkg/
|
||||
*.deb
|
||||
*.AppImage
|
||||
@@ -11,8 +11,9 @@ package's upstream for a new release. When one is found it:
|
||||
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, and
|
||||
5. pushes `PKGBUILD` + `.SRCINFO` to the AUR.
|
||||
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).
|
||||
|
||||
The AUR packages themselves only download the prebuilt asset from step 2, so
|
||||
users don't need any build dependencies.
|
||||
@@ -23,6 +24,25 @@ users don't need any build dependencies.
|
||||
|---|---|---|
|
||||
| `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) |
|
||||
|
||||
## Setup (one-time)
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
pkgbase = bazaar-bin
|
||||
pkgdesc = App store for GNOME with a focus on flatpaks and Flathub (prebuilt)
|
||||
pkgver = 0.9.1
|
||||
pkgrel = 1
|
||||
url = https://github.com/bazaar-org/bazaar
|
||||
arch = x86_64
|
||||
license = GPL-3.0-only
|
||||
depends = appstream
|
||||
depends = cairo
|
||||
depends = dconf
|
||||
depends = flatpak
|
||||
depends = glib2
|
||||
depends = glycin
|
||||
depends = glycin-gtk4
|
||||
depends = graphene
|
||||
depends = gtk4
|
||||
depends = gtksourceview5
|
||||
depends = json-glib
|
||||
depends = libadwaita
|
||||
depends = libdex
|
||||
depends = libheif
|
||||
depends = libmalcontent
|
||||
depends = libproxy
|
||||
depends = libsecret
|
||||
depends = libsoup3
|
||||
depends = libxmlb
|
||||
depends = libyaml
|
||||
depends = md4c
|
||||
depends = pango
|
||||
depends = webkitgtk-6.0
|
||||
depends = hicolor-icon-theme
|
||||
optdepends = krunner-bazaar: krunner integration
|
||||
optdepends = malcontent: parental controls
|
||||
provides = bazaar
|
||||
conflicts = bazaar
|
||||
source = bazaar-bin-0.9.1-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/bazaar-bin-0.9.1/bazaar-bin-0.9.1.tar.zst
|
||||
sha256sums = 236a8b672a9a67de9a240450f527b119bb4cbdfa0533e49578589fe83638e3dc
|
||||
|
||||
pkgname = bazaar-bin
|
||||
@@ -0,0 +1,25 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=bazaar-bin
|
||||
pkgver=0.9.1
|
||||
pkgrel=1
|
||||
pkgdesc="App store for GNOME with a focus on flatpaks and Flathub (prebuilt)"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/bazaar-org/bazaar"
|
||||
license=('GPL-3.0-only')
|
||||
depends=('appstream' 'cairo' 'dconf' 'flatpak' 'glib2' 'glycin' 'glycin-gtk4'
|
||||
'graphene' 'gtk4' 'gtksourceview5' 'json-glib' 'libadwaita' 'libdex'
|
||||
'libheif' 'libmalcontent' 'libproxy' 'libsecret' 'libsoup3' 'libxmlb'
|
||||
'libyaml' 'md4c' 'pango' 'webkitgtk-6.0' 'hicolor-icon-theme')
|
||||
optdepends=('krunner-bazaar: krunner integration'
|
||||
'malcontent: parental controls')
|
||||
provides=('bazaar')
|
||||
conflicts=('bazaar')
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('236a8b672a9a67de9a240450f527b119bb4cbdfa0533e49578589fe83638e3dc')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
# bazaar-bin - prebuilt package of https://github.com/bazaar-org/bazaar
|
||||
# (GNOME app store focused on flatpaks/Flathub, C + GTK4/blueprint).
|
||||
#
|
||||
# Upstream tags releases but ships no binaries, so build_artifact() builds
|
||||
# from the release tarball.
|
||||
|
||||
UPSTREAM_REPO="bazaar-org/bazaar"
|
||||
|
||||
# Installed in CI (pacman) before build_artifact runs.
|
||||
BUILD_DEPS=(meson ninja blueprint-compiler glib2-devel python-babel gettext
|
||||
gobject-introspection appstream flatpak gtk4 libadwaita
|
||||
gtksourceview5 libdex glycin glycin-gtk4 webkitgtk-6.0 json-glib
|
||||
libxmlb libyaml md4c libmalcontent libsecret libsoup3 libproxy
|
||||
libheif)
|
||||
|
||||
latest_version() {
|
||||
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
|
||||
}
|
||||
|
||||
# build_artifact <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/bazaar-$ver"
|
||||
|
||||
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
|
||||
meson install -C "$workdir/build" --destdir "$destdir"
|
||||
|
||||
# These caches are generated by pacman hooks; shipping them would cause
|
||||
# file conflicts on install.
|
||||
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
|
||||
"$destdir/usr/share/applications/mimeinfo.cache" \
|
||||
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
|
||||
|
||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
||||
-cf "$outfile" -C "$destdir" usr
|
||||
|
||||
rm -rf "$workdir" "$destdir"
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
pkgbase = chiaki-ng-bin
|
||||
pkgdesc = Free and Open Source PlayStation Remote Play client (prebuilt)
|
||||
pkgver = 1.10.0
|
||||
pkgrel = 1
|
||||
url = https://streetpea.github.io/chiaki-ng/
|
||||
arch = x86_64
|
||||
license = LicenseRef-AGPL-3.0-only-OpenSSL
|
||||
depends = curl
|
||||
depends = ffmpeg
|
||||
depends = fftw
|
||||
depends = gcc-libs
|
||||
depends = glibc
|
||||
depends = hicolor-icon-theme
|
||||
depends = hidapi
|
||||
depends = json-c
|
||||
depends = libidn2
|
||||
depends = libplacebo
|
||||
depends = libpsl
|
||||
depends = libssh2
|
||||
depends = miniupnpc
|
||||
depends = openssl
|
||||
depends = opus
|
||||
depends = qt6-base
|
||||
depends = qt6-declarative
|
||||
depends = qt6-svg
|
||||
depends = qt6-webengine
|
||||
depends = sdl2
|
||||
depends = speexdsp
|
||||
depends = zlib
|
||||
optdepends = intel-media-driver: vaapi backend for Intel GPUs [>= Broadwell]
|
||||
optdepends = libva-intel-driver: vaapi backend for Intel GPUs [<= Haswell]
|
||||
optdepends = libva-mesa-driver: vaapi backend for AMD GPUs
|
||||
provides = chiaki-ng
|
||||
provides = chiaki
|
||||
conflicts = chiaki-ng
|
||||
conflicts = chiaki
|
||||
source = chiaki-ng-bin-1.10.0-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/chiaki-ng-bin-1.10.0/chiaki-ng-bin-1.10.0.tar.zst
|
||||
sha256sums = 76c55be0342c651a65ffe5df5ed14930d43b844590cac9f4ea67d23e80557599
|
||||
|
||||
pkgname = chiaki-ng-bin
|
||||
@@ -0,0 +1,26 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=chiaki-ng-bin
|
||||
pkgver=1.10.0
|
||||
pkgrel=1
|
||||
pkgdesc="Free and Open Source PlayStation Remote Play client (prebuilt)"
|
||||
arch=('x86_64')
|
||||
url="https://streetpea.github.io/chiaki-ng/"
|
||||
license=('LicenseRef-AGPL-3.0-only-OpenSSL')
|
||||
depends=('curl' 'ffmpeg' 'fftw' 'gcc-libs' 'glibc' 'hicolor-icon-theme'
|
||||
'hidapi' 'json-c' 'libidn2' 'libplacebo' 'libpsl' 'libssh2'
|
||||
'miniupnpc' 'openssl' 'opus' 'qt6-base' 'qt6-declarative' 'qt6-svg'
|
||||
'qt6-webengine' 'sdl2' 'speexdsp' 'zlib')
|
||||
optdepends=('intel-media-driver: vaapi backend for Intel GPUs [>= Broadwell]'
|
||||
'libva-intel-driver: vaapi backend for Intel GPUs [<= Haswell]'
|
||||
'libva-mesa-driver: vaapi backend for AMD GPUs')
|
||||
provides=('chiaki-ng' 'chiaki')
|
||||
conflicts=('chiaki-ng' 'chiaki')
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('76c55be0342c651a65ffe5df5ed14930d43b844590cac9f4ea67d23e80557599')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
--- a/gui/CMakeLists.txt 2025-10-11 20:52:37.048868767 +0100
|
||||
+++ b/gui/CMakeLists.txt 2025-10-11 20:52:42.506427662 +0100
|
||||
@@ -7,7 +7,7 @@
|
||||
enable_language(OBJCXX)
|
||||
endif()
|
||||
|
||||
-find_package(Qt6 REQUIRED COMPONENTS Core Gui Concurrent Svg Qml Quick Widgets)
|
||||
+find_package(Qt6 REQUIRED COMPONENTS Core Gui Concurrent Svg Qml Quick Widgets GuiPrivate)
|
||||
find_package(Qt6 COMPONENTS WebEngineQuick)
|
||||
find_package(Qt6 COMPONENTS DBus)
|
||||
|
||||
@@ -154,4 +154,4 @@
|
||||
BUNDLE DESTINATION bin)
|
||||
install(FILES chiaking.desktop DESTINATION share/applications)
|
||||
install(FILES chiaking.png DESTINATION share/icons/hicolor/512x512/apps)
|
||||
-install(FILES io.github.streetpea.Chiaki4deck.appdata.xml DESTINATION share/metainfo)
|
||||
\ No newline at end of file
|
||||
+install(FILES io.github.streetpea.Chiaki4deck.appdata.xml DESTINATION share/metainfo)
|
||||
@@ -0,0 +1,60 @@
|
||||
# chiaki-ng-bin - prebuilt package of https://github.com/streetpea/chiaki-ng
|
||||
# (free PlayStation Remote Play client, C/C++ + Qt6).
|
||||
#
|
||||
# Upstream ships no plain Linux binaries (only AppImage/flatpak), so
|
||||
# build_artifact() builds from a git checkout of the release tag (the source
|
||||
# tarballs lack the required submodules). Mirrors the AUR source package:
|
||||
# system curl instead of the vendored submodule, plus the Qt6GuiPrivate
|
||||
# CMake fix carried in this directory.
|
||||
|
||||
UPSTREAM_REPO="streetpea/chiaki-ng"
|
||||
|
||||
# Installed in CI (pacman) before build_artifact runs.
|
||||
BUILD_DEPS=(cmake git python-protobuf python-setuptools protobuf
|
||||
vulkan-headers qt6-base qt6-declarative qt6-svg qt6-webengine
|
||||
sdl2 ffmpeg fftw hidapi json-c libplacebo miniupnpc opus speexdsp
|
||||
openssl curl libssh2)
|
||||
|
||||
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 pkgdir workdir destdir srctree
|
||||
pkgdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
workdir="$(mktemp -d)"
|
||||
destdir="$(mktemp -d)"
|
||||
srctree="$workdir/src"
|
||||
|
||||
git clone --branch "v$ver" --depth 1 "https://github.com/$UPSTREAM_REPO.git" "$srctree"
|
||||
|
||||
# use the system curl instead of the vendored submodule
|
||||
git -C "$srctree" rm -q third-party/curl
|
||||
sed -i 's:libcurl_shared:libcurl:' "$srctree/lib/CMakeLists.txt"
|
||||
# newer tags (>= 1.10.0) carry the GuiPrivate fix themselves
|
||||
if ! grep -q 'GuiPrivate' "$srctree/gui/CMakeLists.txt"; then
|
||||
patch -d "$srctree" -p1 < "$pkgdir/Qt6GuiPrivate-fix.patch"
|
||||
fi
|
||||
git -C "$srctree" submodule update --init
|
||||
|
||||
CFLAGS="${CFLAGS:-} -std=gnu17" cmake -B "$workdir/build" -S "$srctree" -Wno-dev \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCHIAKI_USE_SYSTEM_CURL=ON
|
||||
cmake --build "$workdir/build" -j"$(nproc)"
|
||||
DESTDIR="$destdir" cmake --install "$workdir/build"
|
||||
|
||||
# AGPL-3.0-only-OpenSSL: not a common license, ship the texts
|
||||
mkdir -p "$destdir/usr/share/licenses/chiaki-ng-bin"
|
||||
install -m644 "$srctree/LICENSES/"* "$destdir/usr/share/licenses/chiaki-ng-bin/"
|
||||
|
||||
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"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
pkgbase = chromium-widevine-helper-bin
|
||||
pkgdesc = Extension + native helper that installs Google's Widevine CDM into Chromium-based browser profiles (prebuilt)
|
||||
pkgver = 1.0.8
|
||||
pkgrel = 1
|
||||
url = https://github.com/GloriousEggroll/chromium-widevine-helper
|
||||
arch = any
|
||||
license = GPL-3.0-only
|
||||
depends = python
|
||||
depends = procps-ng
|
||||
depends = ca-certificates
|
||||
provides = chromium-widevine-helper
|
||||
conflicts = chromium-widevine-helper
|
||||
backup = etc/helium/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/net.imput.helium/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/chromium/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/chromium-browser/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/opt/chrome/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/opt/edge/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/brave/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/vivaldi/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/opera/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/thorium/native-messaging-hosts/org.chromium.widevine.json
|
||||
backup = etc/iridium/native-messaging-hosts/org.chromium.widevine.json
|
||||
source = chromium-widevine-helper-bin-1.0.8-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/chromium-widevine-helper-bin-1.0.8/chromium-widevine-helper-bin-1.0.8.tar.zst
|
||||
sha256sums = efb70f082652176710b403a2629333220c1b8b96e3f27f398ba7efb496982829
|
||||
|
||||
pkgname = chromium-widevine-helper-bin
|
||||
@@ -0,0 +1,31 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=chromium-widevine-helper-bin
|
||||
pkgver=1.0.8
|
||||
pkgrel=1
|
||||
pkgdesc="Extension + native helper that installs Google's Widevine CDM into Chromium-based browser profiles (prebuilt)"
|
||||
arch=('any')
|
||||
url="https://github.com/GloriousEggroll/chromium-widevine-helper"
|
||||
license=('GPL-3.0-only')
|
||||
depends=('python' 'procps-ng' 'ca-certificates')
|
||||
provides=('chromium-widevine-helper')
|
||||
conflicts=('chromium-widevine-helper')
|
||||
backup=('etc/helium/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/net.imput.helium/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/chromium/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/chromium-browser/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/opt/chrome/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/opt/edge/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/brave/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/vivaldi/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/opera/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/thorium/native-messaging-hosts/org.chromium.widevine.json'
|
||||
'etc/iridium/native-messaging-hosts/org.chromium.widevine.json')
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('efb70f082652176710b403a2629333220c1b8b96e3f27f398ba7efb496982829')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$srcdir/etc" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
# chromium-widevine-helper-bin - prebuilt package of
|
||||
# https://github.com/GloriousEggroll/chromium-widevine-helper
|
||||
# (Chromium extension + native messaging helper that installs Google's
|
||||
# Widevine CDM into Chromium-based browser profiles).
|
||||
#
|
||||
# Upstream publishes neither releases nor tags; the canonical version lives in
|
||||
# the Fedora RPM spec on the main branch. build_artifact() snapshots main,
|
||||
# verifies the snapshot still carries the requested version and assembles the
|
||||
# install tree following upstream's spec - with Fedora's /usr/libexec
|
||||
# relocated to /usr/lib, which Arch uses instead.
|
||||
|
||||
UPSTREAM_REPO="GloriousEggroll/chromium-widevine-helper"
|
||||
SPEC_PATH="Packaging/rpm/chromium-widevine-helper.spec"
|
||||
|
||||
# Pure noarch install tree (Python script + JSON + extension assets).
|
||||
BUILD_DEPS=()
|
||||
|
||||
spec_version() {
|
||||
grep -Po '^%global helper_version \K[0-9.]+'
|
||||
}
|
||||
|
||||
latest_version() {
|
||||
curl -sf "https://raw.githubusercontent.com/$UPSTREAM_REPO/main/$SPEC_PATH" \
|
||||
| spec_version
|
||||
}
|
||||
|
||||
# build_artifact <version> <output-file>
|
||||
build_artifact() {
|
||||
local ver="$1" outfile="$2"
|
||||
local workdir destdir
|
||||
workdir="$(mktemp -d)"
|
||||
destdir="$(mktemp -d)"
|
||||
|
||||
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/heads/main.tar.gz" \
|
||||
| tar -xz -C "$workdir" --strip-components=1
|
||||
|
||||
# main may have moved between the version check and this download.
|
||||
local specver
|
||||
specver="$(spec_version < "$workdir/$SPEC_PATH")"
|
||||
if [[ "$specver" != "$ver" ]]; then
|
||||
echo "snapshot of main is $specver, not the requested $ver - try again" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
install -Dm755 "$workdir/helper/chromium-widevine" \
|
||||
"$destdir/usr/lib/chromium-widevine/chromium-widevine"
|
||||
install -d "$destdir/usr/bin"
|
||||
ln -s /usr/lib/chromium-widevine/chromium-widevine "$destdir/usr/bin/chromium-widevine"
|
||||
|
||||
# The extension is shipped so it can be loaded unpacked from
|
||||
# chrome://extensions (chromium-widevine --install-native-hosts then
|
||||
# registers whatever ID the browser assigned it).
|
||||
mkdir -p "$destdir/usr/share/chromium-widevine"
|
||||
cp -a "$workdir/extension" "$destdir/usr/share/chromium-widevine/extension"
|
||||
find "$destdir/usr/share/chromium-widevine" -type d -exec chmod 755 {} +
|
||||
find "$destdir/usr/share/chromium-widevine" -type f -exec chmod 644 {} +
|
||||
|
||||
install -Dm644 "$workdir/README.md" \
|
||||
"$destdir/usr/share/doc/chromium-widevine-helper-bin/README.md"
|
||||
|
||||
# System-wide native messaging host manifests for the same browser lookup
|
||||
# roots upstream's RPM covers.
|
||||
local hostdir
|
||||
for hostdir in helium net.imput.helium chromium chromium-browser \
|
||||
opt/chrome opt/edge brave vivaldi opera thorium iridium; do
|
||||
install -Dm644 "$workdir/helper/chromium-widevine-native-host.json" \
|
||||
"$destdir/etc/$hostdir/native-messaging-hosts/org.chromium.widevine.json"
|
||||
done
|
||||
# The upstream manifest hardcodes Fedora's /usr/libexec helper path.
|
||||
find "$destdir/etc" -name 'org.chromium.widevine.json' -exec \
|
||||
sed -i 's|/usr/libexec/chromium-widevine/|/usr/lib/chromium-widevine/|' {} +
|
||||
|
||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
||||
-cf "$outfile" -C "$destdir" usr etc
|
||||
|
||||
rm -rf "$workdir" "$destdir"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
pkgbase = faugus-launcher-bin
|
||||
pkgdesc = Simple and lightweight app for running Windows games using UMU-Launcher (prebuilt)
|
||||
pkgver = 2.0.2
|
||||
pkgrel = 1
|
||||
url = https://github.com/Faugus/faugus-launcher
|
||||
arch = any
|
||||
license = MIT
|
||||
depends = gtk4
|
||||
depends = libadwaita
|
||||
depends = libmanette
|
||||
depends = icoextract
|
||||
depends = python
|
||||
depends = python-gobject
|
||||
depends = python-requests
|
||||
depends = python-pillow
|
||||
depends = python-vdf
|
||||
depends = python-psutil
|
||||
depends = python-dbus
|
||||
depends = umu-launcher
|
||||
optdepends = mangohud: performance overlay
|
||||
optdepends = gamemode: feral gamemode integration
|
||||
provides = faugus-launcher
|
||||
conflicts = faugus-launcher
|
||||
source = faugus-launcher-bin-2.0.2-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/faugus-launcher-bin-2.0.2/faugus-launcher-bin-2.0.2.tar.zst
|
||||
sha256sums = 5fcf441cccb1ccc0ac554760e93744d557fd05a3fc4335132a59e55aefe902af
|
||||
|
||||
pkgname = faugus-launcher-bin
|
||||
@@ -0,0 +1,24 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=faugus-launcher-bin
|
||||
pkgver=2.0.2
|
||||
pkgrel=1
|
||||
pkgdesc="Simple and lightweight app for running Windows games using UMU-Launcher (prebuilt)"
|
||||
arch=('any')
|
||||
url="https://github.com/Faugus/faugus-launcher"
|
||||
license=('MIT')
|
||||
depends=('gtk4' 'libadwaita' 'libmanette' 'icoextract' 'python'
|
||||
'python-gobject' 'python-requests' 'python-pillow' 'python-vdf'
|
||||
'python-psutil' 'python-dbus' 'umu-launcher')
|
||||
optdepends=('mangohud: performance overlay'
|
||||
'gamemode: feral gamemode integration')
|
||||
provides=('faugus-launcher')
|
||||
conflicts=('faugus-launcher')
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('5fcf441cccb1ccc0ac554760e93744d557fd05a3fc4335132a59e55aefe902af')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
# faugus-launcher-bin - prebuilt package of https://github.com/Faugus/faugus-launcher
|
||||
# (GTK4 game launcher for running Windows games through UMU-Launcher, Python).
|
||||
#
|
||||
# Upstream ships AppImage/deb/rpm but no Arch-friendly binary, so
|
||||
# build_artifact() builds the meson project from the release tarball.
|
||||
|
||||
UPSTREAM_REPO="Faugus/faugus-launcher"
|
||||
|
||||
# Installed in CI (pacman) before build_artifact runs.
|
||||
# (Translations ship as prebuilt .mo files, so no gettext needed.)
|
||||
BUILD_DEPS=(meson ninja python)
|
||||
|
||||
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 sitedir
|
||||
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/faugus-launcher-$ver"
|
||||
|
||||
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
|
||||
meson install -C "$workdir/build" --destdir "$destdir"
|
||||
|
||||
# meson installs the python modules into site-packages, whose path changes
|
||||
# with every Python minor bump and would silently break a prebuilt package.
|
||||
# Relocate to a fixed dir and put it on the launcher's PYTHONPATH (the
|
||||
# launcher script already appends any pre-set PYTHONPATH to its own).
|
||||
sitedir="$(find "$destdir/usr/lib" -maxdepth 2 -type d -name site-packages)"
|
||||
[[ -d "$sitedir/faugus" ]] || { echo "faugus module not found in $sitedir" >&2; return 1; }
|
||||
mkdir -p "$destdir/usr/lib/faugus-launcher"
|
||||
mv "$sitedir/faugus" "$destdir/usr/lib/faugus-launcher/"
|
||||
rm -rf "$destdir/usr/lib/python"*
|
||||
|
||||
head -1 "$destdir/usr/bin/faugus-launcher" | grep -qx '#!/bin/sh' \
|
||||
|| { echo "unexpected launcher script format" >&2; return 1; }
|
||||
sed -i '1a export PYTHONPATH="/usr/lib/faugus-launcher${PYTHONPATH:+:$PYTHONPATH}"' \
|
||||
"$destdir/usr/bin/faugus-launcher"
|
||||
|
||||
# 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"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
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
|
||||
@@ -0,0 +1,27 @@
|
||||
# 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/"
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
# 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"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
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
|
||||
@@ -0,0 +1,25 @@
|
||||
# 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/"
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# 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"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
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
|
||||
@@ -0,0 +1,21 @@
|
||||
# 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/"
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
# 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"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
pkgbase = lunar-client-bin
|
||||
pkgdesc = PvP modpack for all modern versions of Minecraft (upstream AppImage)
|
||||
pkgver = 3.7.12
|
||||
pkgrel = 1
|
||||
url = https://lunarclient.com
|
||||
arch = x86_64
|
||||
license = LicenseRef-proprietary
|
||||
depends = fuse2
|
||||
depends = xorg-xrandr
|
||||
provides = lunar-client
|
||||
provides = lunarclient
|
||||
conflicts = lunar-client
|
||||
conflicts = lunarclient
|
||||
options = !strip
|
||||
options = !debug
|
||||
source = lunarclient-3.7.12.AppImage::https://launcherupdates.lunarclientcdn.com/Lunar%20Client-3.7.12-ow.AppImage
|
||||
sha256sums = 7364e876a59291d8b0b7d6c0efdacb988617e35e054e9c21a5814d071710bf98
|
||||
|
||||
pkgname = lunar-client-bin
|
||||
@@ -0,0 +1,48 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=lunar-client-bin
|
||||
_pkgname=lunarclient
|
||||
pkgver=3.7.12
|
||||
pkgrel=1
|
||||
pkgdesc="PvP modpack for all modern versions of Minecraft (upstream AppImage)"
|
||||
arch=('x86_64')
|
||||
url="https://lunarclient.com"
|
||||
license=('LicenseRef-proprietary')
|
||||
depends=('fuse2' 'xorg-xrandr')
|
||||
provides=('lunar-client' 'lunarclient')
|
||||
conflicts=('lunar-client' 'lunarclient')
|
||||
options=('!strip' '!debug')
|
||||
# maintained by CI together with pkgver (upstream varies the filename suffix)
|
||||
_appimage="Lunar%20Client-3.7.12-ow.AppImage"
|
||||
source=("${_pkgname}-${pkgver}.AppImage::https://launcherupdates.lunarclientcdn.com/${_appimage}")
|
||||
sha256sums=('7364e876a59291d8b0b7d6c0efdacb988617e35e054e9c21a5814d071710bf98')
|
||||
|
||||
prepare() {
|
||||
chmod +x "${_pkgname}-${pkgver}.AppImage"
|
||||
"./${_pkgname}-${pkgver}.AppImage" --appimage-extract
|
||||
}
|
||||
|
||||
build() {
|
||||
# make the .desktop file work outside of the AppImage container
|
||||
sed -i -E "s|Exec=AppRun|Exec=env DESKTOPINTEGRATION=false /usr/bin/${_pkgname}|" \
|
||||
"squashfs-root/${_pkgname}.desktop"
|
||||
# AppImage directory permissions are 700
|
||||
chmod -R a-x+rX squashfs-root/usr
|
||||
}
|
||||
|
||||
package() {
|
||||
install -Dm755 "${srcdir}/${_pkgname}-${pkgver}.AppImage" \
|
||||
"${pkgdir}/opt/${_pkgname}/${_pkgname}.AppImage"
|
||||
|
||||
install -Dm644 "${srcdir}/squashfs-root/${_pkgname}.desktop" \
|
||||
"${pkgdir}/usr/share/applications/${_pkgname}.desktop"
|
||||
|
||||
install -Dm644 \
|
||||
"${srcdir}/squashfs-root/usr/share/icons/hicolor/1024x1024/apps/${_pkgname}.png" \
|
||||
"${pkgdir}/usr/share/icons/hicolor/512x512/apps/${_pkgname}.png"
|
||||
|
||||
install -dm755 "${pkgdir}/usr/bin"
|
||||
ln -s "/opt/${_pkgname}/${_pkgname}.AppImage" "${pkgdir}/usr/bin/${_pkgname}"
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
# lunar-client-bin - Lunar Client (https://lunarclient.com), Minecraft PvP
|
||||
# modpack launcher, proprietary Electron AppImage.
|
||||
#
|
||||
# Upstream hosts versioned AppImages itself, so there is no build_artifact():
|
||||
# on a new version pkgver, the artifact filename (_appimage) and the checksum
|
||||
# are refreshed. Upstream currently publishes on the "ow" electron-updater
|
||||
# channel (latest-ow-linux.yml) with an -ow filename suffix; the old plain
|
||||
# channel (latest-linux.yml) went stale but is still checked in case they
|
||||
# switch back - whichever carries the higher version wins.
|
||||
|
||||
DL_BASE="https://launcherupdates.lunarclientcdn.com"
|
||||
|
||||
_channel_version() {
|
||||
curl -sf "$DL_BASE/$1" | grep -Po '^version: \K\S+'
|
||||
}
|
||||
|
||||
latest_version() {
|
||||
local a b
|
||||
a="$(_channel_version latest-ow-linux.yml | sed 's/-.*//')"
|
||||
b="$(_channel_version latest-linux.yml | sed 's/-.*//')"
|
||||
[[ -n "$a" || -n "$b" ]] || return 1
|
||||
if [[ -n "$a" && -n "$b" ]]; then
|
||||
if [[ "$(vercmp "$a" "$b")" -ge 0 ]]; then echo "$a"; else echo "$b"; fi
|
||||
else
|
||||
echo "${a:-$b}"
|
||||
fi
|
||||
}
|
||||
|
||||
# refresh_checksums <version> <pkgbuild-path>
|
||||
refresh_checksums() {
|
||||
local ver="$1" pkgbuild="$2"
|
||||
local yml file sha
|
||||
for yml in latest-ow-linux.yml latest-linux.yml; do
|
||||
file="$(curl -sf "$DL_BASE/$yml" | grep -Po '^path: \K.*\.AppImage')"
|
||||
[[ "$file" == *"$ver"* ]] && break
|
||||
file=""
|
||||
done
|
||||
[[ -n "$file" ]] || { echo "no updater channel carries version $ver" >&2; return 1; }
|
||||
file="${file// /%20}"
|
||||
|
||||
sha="$(curl -sfL "$DL_BASE/$file" | sha256sum | cut -d' ' -f1)"
|
||||
sed -i \
|
||||
-e "s|^_appimage=.*|_appimage=\"$file\"|" \
|
||||
-e "s|^sha256sums=.*|sha256sums=('$sha')|" \
|
||||
"$pkgbuild"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
pkgbase = modrinth-app-bin
|
||||
pkgdesc = Minecraft mod manager and launcher from Modrinth (upstream binary)
|
||||
pkgver = 0.16.1
|
||||
pkgrel = 1
|
||||
url = https://modrinth.com/app
|
||||
arch = x86_64
|
||||
license = GPL-3.0-only
|
||||
depends = webkit2gtk-4.1
|
||||
depends = gtk3
|
||||
depends = hicolor-icon-theme
|
||||
provides = modrinth-app
|
||||
conflicts = modrinth-app
|
||||
noextract = modrinth-app-bin-0.16.1.deb
|
||||
options = !strip
|
||||
options = !debug
|
||||
source = modrinth-app-bin-0.16.1.deb::https://github.com/modrinth/code/releases/download/v0.16.1/Modrinth.App_0.16.1_amd64.deb
|
||||
sha256sums = 484c721e90f8628550d5920ea0a128fe77cc23f281ef4fdaa82bd9f044345c7e
|
||||
|
||||
pkgname = modrinth-app-bin
|
||||
@@ -0,0 +1,24 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=modrinth-app-bin
|
||||
pkgver=0.16.1
|
||||
pkgrel=1
|
||||
pkgdesc="Minecraft mod manager and launcher from Modrinth (upstream binary)"
|
||||
arch=('x86_64')
|
||||
url="https://modrinth.com/app"
|
||||
license=('GPL-3.0-only')
|
||||
depends=('webkit2gtk-4.1' 'gtk3' 'hicolor-icon-theme')
|
||||
provides=('modrinth-app')
|
||||
conflicts=('modrinth-app')
|
||||
options=('!strip' '!debug')
|
||||
source=("${pkgname}-${pkgver}.deb::https://github.com/modrinth/code/releases/download/v${pkgver}/Modrinth.App_${pkgver}_amd64.deb")
|
||||
noextract=("${pkgname}-${pkgver}.deb")
|
||||
sha256sums=('484c721e90f8628550d5920ea0a128fe77cc23f281ef4fdaa82bd9f044345c7e')
|
||||
|
||||
package() {
|
||||
bsdtar -xOf "$srcdir/${pkgname}-${pkgver}.deb" 'data.tar.*' \
|
||||
| bsdtar -xpf - -C "$pkgdir" usr
|
||||
ln -s ModrinthApp "$pkgdir/usr/bin/modrinth-app"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
# modrinth-app-bin - Modrinth App (https://github.com/modrinth/code),
|
||||
# Minecraft mod manager/launcher, Tauri.
|
||||
#
|
||||
# Upstream publishes a bundled .deb per release, so there is no
|
||||
# build_artifact() here: on a new version only pkgver and the checksum are
|
||||
# refreshed and the PKGBUILD repackages the deb directly.
|
||||
|
||||
UPSTREAM_REPO="modrinth/code"
|
||||
|
||||
latest_version() {
|
||||
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
|
||||
}
|
||||
|
||||
# refresh_checksums <version> <pkgbuild-path>
|
||||
refresh_checksums() {
|
||||
local ver="$1" pkgbuild="$2"
|
||||
local sha
|
||||
sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$ver/Modrinth.App_${ver}_amd64.deb" \
|
||||
| sha256sum | cut -d' ' -f1)"
|
||||
sed -i "s|^sha256sums=.*|sha256sums=('$sha')|" "$pkgbuild"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
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
|
||||
@@ -0,0 +1,22 @@
|
||||
# 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/"
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
# 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"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
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
|
||||
@@ -0,0 +1,21 @@
|
||||
# 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/"
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
# 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"
|
||||
}
|
||||
@@ -112,7 +112,7 @@ mv "$pkg/.SRCINFO.new" "$pkg/.SRCINFO"
|
||||
|
||||
# drop downloaded sources and build leftovers (all gitignored, never tracked)
|
||||
rm -rf "$pkg/src" "$pkg/pkg"
|
||||
rm -f "$pkg"/*.pkg.tar.* "$pkg"/*.tar.zst "$pkg"/*.tar.gz
|
||||
rm -f "$pkg"/*.pkg.tar.* "$pkg"/*.tar.zst "$pkg"/*.tar.gz "$pkg"/*.deb "$pkg"/*.AppImage
|
||||
|
||||
### 4: commit back to this repository ########################################
|
||||
|
||||
@@ -170,3 +170,22 @@ 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
|
||||
@@ -0,0 +1,27 @@
|
||||
pkgbase = sharpemu-bin
|
||||
pkgdesc = Experimental PlayStation 5 emulator (prebuilt)
|
||||
pkgver = 0.0.2_beta.5
|
||||
pkgrel = 1
|
||||
url = https://github.com/sharpemu/sharpemu
|
||||
arch = x86_64
|
||||
license = GPL-2.0-or-later
|
||||
depends = glibc
|
||||
depends = gcc-libs
|
||||
depends = icu
|
||||
depends = openssl
|
||||
depends = vulkan-icd-loader
|
||||
depends = libx11
|
||||
depends = libxcursor
|
||||
depends = libxi
|
||||
depends = libxinerama
|
||||
depends = libxrandr
|
||||
depends = libxkbcommon
|
||||
depends = wayland
|
||||
provides = sharpemu
|
||||
conflicts = sharpemu
|
||||
noextract = sharpemu-0.0.2-beta.5-linux-x64.tar.gz
|
||||
options = !strip
|
||||
source_x86_64 = https://github.com/sharpemu/sharpemu/releases/download/v0.0.2-beta.5/sharpemu-0.0.2-beta.5-linux-x64.tar.gz
|
||||
sha256sums_x86_64 = 5e75173da220832e8ca56d4b88fd7effc77772da9b785bfb721ff138d5664cc4
|
||||
|
||||
pkgname = sharpemu-bin
|
||||
@@ -0,0 +1,39 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=sharpemu-bin
|
||||
pkgver=0.0.2_beta.5
|
||||
pkgrel=1
|
||||
pkgdesc="Experimental PlayStation 5 emulator (prebuilt)"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/sharpemu/sharpemu"
|
||||
license=('GPL-2.0-or-later')
|
||||
# The self-contained .NET binary bundles its own libglfw.so.3, which in turn
|
||||
# dlopens the X11/Wayland client libraries at runtime.
|
||||
depends=('glibc' 'gcc-libs' 'icu' 'openssl' 'vulkan-icd-loader'
|
||||
'libx11' 'libxcursor' 'libxi' 'libxinerama' 'libxrandr'
|
||||
'libxkbcommon' 'wayland')
|
||||
provides=('sharpemu')
|
||||
conflicts=('sharpemu')
|
||||
options=('!strip')
|
||||
|
||||
# upstream tags use hyphens (v0.0.2-beta.4), which pkgver must not contain
|
||||
_upver="${pkgver//_/-}"
|
||||
noextract=("sharpemu-${_upver}-linux-x64.tar.gz")
|
||||
source_x86_64=("https://github.com/sharpemu/sharpemu/releases/download/v${_upver}/sharpemu-${_upver}-linux-x64.tar.gz")
|
||||
sha256sums_x86_64=('5e75173da220832e8ca56d4b88fd7effc77772da9b785bfb721ff138d5664cc4')
|
||||
|
||||
package() {
|
||||
# extracted straight into pkgdir so new files in future upstream archives
|
||||
# are picked up automatically
|
||||
install -d "$pkgdir/opt/$pkgname"
|
||||
tar -xzf "$srcdir/sharpemu-${_upver}-linux-x64.tar.gz" -C "$pkgdir/opt/$pkgname"
|
||||
chmod 755 "$pkgdir/opt/$pkgname/SharpEmu"
|
||||
|
||||
install -d "$pkgdir/usr/bin"
|
||||
ln -s "/opt/$pkgname/SharpEmu" "$pkgdir/usr/bin/sharpemu"
|
||||
|
||||
install -Dm644 "$pkgdir/opt/$pkgname/LICENSE.txt" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE.txt"
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
# sharpemu-bin - SharpEmu (https://github.com/sharpemu/sharpemu), an
|
||||
# experimental PlayStation 5 emulator written in C#.
|
||||
#
|
||||
# Upstream publishes prebuilt linux-x64 release assets itself, so there is no
|
||||
# build_artifact() here: on a new version only pkgver and the checksums are
|
||||
# refreshed and the result is pushed to the AUR.
|
||||
#
|
||||
# Upstream versions contain hyphens (v0.0.2-beta.4), which an Arch pkgver
|
||||
# must not; latest_version therefore reports the underscored form
|
||||
# (0.0.2_beta.4) and the PKGBUILD derives the upstream form back via _upver.
|
||||
|
||||
UPSTREAM_REPO="sharpemu/sharpemu"
|
||||
|
||||
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 -e 's/^v//' -e 's/-/_/g'
|
||||
}
|
||||
|
||||
# refresh_checksums <version> <pkgbuild-path>
|
||||
refresh_checksums() {
|
||||
local ver="$1" pkgbuild="$2"
|
||||
local upver="${ver//_/-}" sha
|
||||
sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$upver/sharpemu-$upver-linux-x64.tar.gz" \
|
||||
| sha256sum | cut -d' ' -f1)"
|
||||
sed -i "s|^sha256sums_x86_64=.*|sha256sums_x86_64=('$sha')|" "$pkgbuild"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
pkgbase = snapx-bin
|
||||
pkgdesc = Screenshot tool that handles images, text, and video - ShareX fork, Avalonia UI (upstream binary)
|
||||
pkgver = 0.4.0
|
||||
pkgrel = 1
|
||||
url = https://github.com/SnapXL/SnapX
|
||||
arch = x86_64
|
||||
license = GPL-3.0-or-later
|
||||
depends = glibc
|
||||
depends = gcc-libs
|
||||
depends = hicolor-icon-theme
|
||||
provides = snapx-ui
|
||||
conflicts = snapx-ui
|
||||
options = !strip
|
||||
options = !debug
|
||||
source = snapx-bin-0.4.0-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/snapx-bin-0.4.0/snapx-bin-0.4.0.tar.zst
|
||||
sha256sums = d2098cac542bca82e68be0a4fa98db22f2d84d35c683d18582382dc9206eb5ee
|
||||
|
||||
pkgname = snapx-bin
|
||||
@@ -0,0 +1,22 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=snapx-bin
|
||||
pkgver=0.4.0
|
||||
pkgrel=1
|
||||
pkgdesc="Screenshot tool that handles images, text, and video - ShareX fork, Avalonia UI (upstream binary)"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/SnapXL/SnapX"
|
||||
license=('GPL-3.0-or-later')
|
||||
depends=('glibc' 'gcc-libs' 'hicolor-icon-theme')
|
||||
provides=('snapx-ui')
|
||||
conflicts=('snapx-ui')
|
||||
options=('!strip' '!debug')
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('d2098cac542bca82e68be0a4fa98db22f2d84d35c683d18582382dc9206eb5ee')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$pkgdir/"
|
||||
cp -a "$srcdir/opt" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
# snapx-bin - SnapX (https://github.com/SnapXL/SnapX), screenshot/sharing
|
||||
# tool forked from ShareX, C#/.NET Avalonia UI.
|
||||
#
|
||||
# Upstream ships a self-contained Linux bundle per (pre)release, but the
|
||||
# asset names embed build metadata (e.g. ...-0.4.0-alpha.0+g7eafb0f-X64...)
|
||||
# that cannot be derived from the version alone. build_artifact() therefore
|
||||
# resolves the asset by pattern via the GitHub API and repackages it under
|
||||
# our own predictable name. All upstream releases are marked prerelease, so
|
||||
# latest_version() reads the release list instead of /latest.
|
||||
|
||||
UPSTREAM_REPO="SnapXL/SnapX"
|
||||
|
||||
BUILD_DEPS=()
|
||||
|
||||
latest_version() {
|
||||
gh api "repos/$UPSTREAM_REPO/releases" --jq '.[0].tag_name' | sed 's/^v//'
|
||||
}
|
||||
|
||||
# build_artifact <version> <output-file>
|
||||
build_artifact() {
|
||||
local ver="$1" outfile="$2"
|
||||
local workdir destdir asset
|
||||
workdir="$(mktemp -d)"
|
||||
destdir="$(mktemp -d)"
|
||||
|
||||
asset="$(gh api "repos/$UPSTREAM_REPO/releases/tags/v$ver" --jq '.assets[].name' \
|
||||
| grep '^SnapX-UI-Release-Linux-' | grep -v musl | grep -- '-X64\.tar\.zst$')"
|
||||
[[ "$(wc -l <<< "$asset")" -eq 1 ]] || { echo "expected exactly one UI asset, got: $asset" >&2; return 1; }
|
||||
|
||||
gh release download "v$ver" -R "$UPSTREAM_REPO" --pattern "$asset" --dir "$workdir"
|
||||
mkdir -p "$destdir/opt/snapx"
|
||||
tar -xf "$workdir/$asset" -C "$destdir/opt/snapx"
|
||||
chmod 755 "$destdir/opt/snapx/snapx-ui"
|
||||
|
||||
# upstream's launcher resolves its own directory, so a symlink from
|
||||
# /usr/bin would break it - use a wrapper instead
|
||||
mkdir -p "$destdir/usr/bin"
|
||||
cat > "$destdir/usr/bin/snapx-ui" << 'EOF'
|
||||
#!/bin/sh
|
||||
exec /opt/snapx/snapx-ui "$@"
|
||||
EOF
|
||||
chmod 755 "$destdir/usr/bin/snapx-ui"
|
||||
|
||||
# desktop file, icons and metainfo from the source tree
|
||||
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
|
||||
cp -a "$workdir/SnapX-$ver/packaging/usr/share" "$destdir/usr/"
|
||||
|
||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
||||
-cf "$outfile" -C "$destdir" usr opt
|
||||
|
||||
rm -rf "$workdir" "$destdir"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
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
|
||||
@@ -0,0 +1,24 @@
|
||||
# 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/"
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
# 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"
|
||||
}
|
||||
@@ -19,7 +19,7 @@ pkgbase = timetable-bin
|
||||
provides = timetable
|
||||
conflicts = untis
|
||||
conflicts = timetable
|
||||
source = https://github.com/Felitendo/PKGBUILDS/releases/download/timetable-bin-4.2.1/timetable-bin-4.2.1.tar.zst
|
||||
source = timetable-bin-4.2.1-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/timetable-bin-4.2.1/timetable-bin-4.2.1.tar.zst
|
||||
sha256sums = c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc
|
||||
|
||||
pkgname = timetable-bin
|
||||
@@ -13,7 +13,7 @@ depends=('gtk4' 'libadwaita' 'webkitgtk-6.0' 'libsecret' 'python' 'python-gobjec
|
||||
'python-requests' 'python-pyotp' 'glib2' 'hicolor-icon-theme')
|
||||
provides=('untis' 'timetable')
|
||||
conflicts=('untis' 'timetable')
|
||||
source=("https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc')
|
||||
|
||||
package() {
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
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
|
||||
@@ -0,0 +1,21 @@
|
||||
# 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/"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
# 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"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
pkgbase = vacuumtube-bin
|
||||
pkgdesc = YouTube Leanback (TV UI) in Electron, with a built-in adblocker (upstream binary)
|
||||
pkgver = 1.8.1
|
||||
pkgrel = 1
|
||||
url = https://github.com/shy1132/VacuumTube
|
||||
arch = x86_64
|
||||
license = MIT
|
||||
depends = gtk3
|
||||
depends = nss
|
||||
depends = alsa-lib
|
||||
depends = libnotify
|
||||
depends = libxss
|
||||
depends = libxtst
|
||||
depends = xdg-utils
|
||||
depends = at-spi2-core
|
||||
depends = util-linux-libs
|
||||
depends = libsecret
|
||||
optdepends = libappindicator-gtk3: tray icon support
|
||||
provides = vacuumtube
|
||||
conflicts = vacuumtube
|
||||
noextract = vacuumtube-bin-1.8.1.deb
|
||||
options = !strip
|
||||
options = !debug
|
||||
source = vacuumtube-bin-1.8.1.deb::https://github.com/shy1132/VacuumTube/releases/download/v1.8.1/VacuumTube-amd64.deb
|
||||
sha256sums = 652be4e29e85ed31d3a1bae4dad00e6d39967ad0cf7cc47547b0ec94bacd0d51
|
||||
|
||||
pkgname = vacuumtube-bin
|
||||
@@ -0,0 +1,27 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=vacuumtube-bin
|
||||
pkgver=1.8.1
|
||||
pkgrel=1
|
||||
pkgdesc="YouTube Leanback (TV UI) in Electron, with a built-in adblocker (upstream binary)"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/shy1132/VacuumTube"
|
||||
license=('MIT')
|
||||
depends=('gtk3' 'nss' 'alsa-lib' 'libnotify' 'libxss' 'libxtst' 'xdg-utils'
|
||||
'at-spi2-core' 'util-linux-libs' 'libsecret')
|
||||
optdepends=('libappindicator-gtk3: tray icon support')
|
||||
provides=('vacuumtube')
|
||||
conflicts=('vacuumtube')
|
||||
options=('!strip' '!debug')
|
||||
source=("${pkgname}-${pkgver}.deb::https://github.com/shy1132/VacuumTube/releases/download/v${pkgver}/VacuumTube-amd64.deb")
|
||||
noextract=("${pkgname}-${pkgver}.deb")
|
||||
sha256sums=('652be4e29e85ed31d3a1bae4dad00e6d39967ad0cf7cc47547b0ec94bacd0d51')
|
||||
|
||||
package() {
|
||||
bsdtar -xOf "$srcdir/${pkgname}-${pkgver}.deb" 'data.tar.*' \
|
||||
| bsdtar -xpf - -C "$pkgdir" --exclude './usr/share/doc' ./opt ./usr
|
||||
install -d "$pkgdir/usr/bin"
|
||||
ln -s /opt/VacuumTube/vacuumtube "$pkgdir/usr/bin/vacuumtube"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
# vacuumtube-bin - VacuumTube (https://github.com/shy1132/VacuumTube),
|
||||
# YouTube Leanback (TV UI) wrapper, Electron.
|
||||
#
|
||||
# Upstream publishes a bundled .deb per release, so there is no
|
||||
# build_artifact() here: on a new version only pkgver and the checksum are
|
||||
# refreshed and the PKGBUILD repackages the deb directly.
|
||||
|
||||
UPSTREAM_REPO="shy1132/VacuumTube"
|
||||
|
||||
latest_version() {
|
||||
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
|
||||
}
|
||||
|
||||
# refresh_checksums <version> <pkgbuild-path>
|
||||
refresh_checksums() {
|
||||
local ver="$1" pkgbuild="$2"
|
||||
local sha
|
||||
sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$ver/VacuumTube-amd64.deb" \
|
||||
| sha256sum | cut -d' ' -f1)"
|
||||
sed -i "s|^sha256sums=.*|sha256sums=('$sha')|" "$pkgbuild"
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
pkgbase = waydroid-helper-bin
|
||||
pkgdesc = GUI application for Waydroid configuration and extension installation (prebuilt)
|
||||
pkgver = 0.2.9
|
||||
pkgrel = 1
|
||||
url = https://github.com/ayasa520/waydroid-helper
|
||||
arch = any
|
||||
license = GPL-3.0-or-later
|
||||
depends = python
|
||||
depends = fakeroot
|
||||
depends = python-bidict
|
||||
depends = python-httpx
|
||||
depends = python-gobject
|
||||
depends = python-yaml
|
||||
depends = python-pywayland
|
||||
depends = python-cairo
|
||||
depends = gtk4
|
||||
depends = libadwaita
|
||||
depends = python-aiofiles
|
||||
depends = python-dbus
|
||||
depends = android-tools
|
||||
depends = vte4
|
||||
depends = hicolor-icon-theme
|
||||
optdepends = bindfs: shared folders support
|
||||
optdepends = waydroid: the container this tool configures
|
||||
provides = waydroid-helper
|
||||
conflicts = waydroid-helper
|
||||
source = waydroid-helper-bin-0.2.9-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/waydroid-helper-bin-0.2.9/waydroid-helper-bin-0.2.9.tar.zst
|
||||
sha256sums = 8a02695c6a3f102d1fa2a0b6266bb1978874338eac5a33b3391ada3243c01e56
|
||||
|
||||
pkgname = waydroid-helper-bin
|
||||
@@ -0,0 +1,25 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=waydroid-helper-bin
|
||||
pkgver=0.2.9
|
||||
pkgrel=1
|
||||
pkgdesc="GUI application for Waydroid configuration and extension installation (prebuilt)"
|
||||
arch=('any')
|
||||
url="https://github.com/ayasa520/waydroid-helper"
|
||||
license=('GPL-3.0-or-later')
|
||||
depends=('python' 'fakeroot' 'python-bidict' 'python-httpx' 'python-gobject'
|
||||
'python-yaml' 'python-pywayland' 'python-cairo' 'gtk4' 'libadwaita'
|
||||
'python-aiofiles' 'python-dbus' 'android-tools' 'vte4'
|
||||
'hicolor-icon-theme')
|
||||
optdepends=('bindfs: shared folders support'
|
||||
'waydroid: the container this tool configures')
|
||||
provides=('waydroid-helper')
|
||||
conflicts=('waydroid-helper')
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('8a02695c6a3f102d1fa2a0b6266bb1978874338eac5a33b3391ada3243c01e56')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
# waydroid-helper-bin - prebuilt package of https://github.com/ayasa520/waydroid-helper
|
||||
# (GTK4 + LibAdwaita GUI for Waydroid configuration/extensions, Python).
|
||||
#
|
||||
# Upstream only ships AppImages, so build_artifact() builds the meson project
|
||||
# from the release tarball.
|
||||
|
||||
UPSTREAM_REPO="ayasa520/waydroid-helper"
|
||||
|
||||
# Installed in CI (pacman) before build_artifact runs.
|
||||
BUILD_DEPS=(meson ninja python python-setuptools glib2 glib2-devel gettext)
|
||||
|
||||
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/waydroid-helper-$ver"
|
||||
|
||||
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
|
||||
meson install -C "$workdir/build" --destdir "$destdir"
|
||||
|
||||
# These caches are generated by pacman hooks; shipping them would cause
|
||||
# file conflicts on install.
|
||||
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
|
||||
"$destdir/usr/share/applications/mimeinfo.cache" \
|
||||
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
|
||||
|
||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
||||
-cf "$outfile" -C "$destdir" usr
|
||||
|
||||
rm -rf "$workdir" "$destdir"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
pkgbase = wiiudownloader-bin
|
||||
pkgdesc = Download encrypted Wii U files from Nintendo's official servers (prebuilt)
|
||||
pkgver = 2.99
|
||||
pkgrel = 1
|
||||
url = https://github.com/Xpl0itU/WiiUDownloader
|
||||
arch = x86_64
|
||||
license = GPL-3.0-or-later
|
||||
depends = glibc
|
||||
depends = glib2
|
||||
depends = hicolor-icon-theme
|
||||
depends = libx11
|
||||
depends = gtk3
|
||||
depends = gdk-pixbuf2
|
||||
depends = cairo
|
||||
depends = pango
|
||||
depends = fontconfig
|
||||
provides = wiiudownloader
|
||||
conflicts = wiiudownloader
|
||||
source = wiiudownloader-bin-2.99-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/wiiudownloader-bin-2.99/wiiudownloader-bin-2.99.tar.zst
|
||||
sha256sums = 1a43185b07869b8c25b71c3d43ddd829fd79af9d4cf6bfcfddb201f12cf8ff2e
|
||||
|
||||
pkgname = wiiudownloader-bin
|
||||
@@ -0,0 +1,21 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=wiiudownloader-bin
|
||||
pkgver=2.99
|
||||
pkgrel=1
|
||||
pkgdesc="Download encrypted Wii U files from Nintendo's official servers (prebuilt)"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/Xpl0itU/WiiUDownloader"
|
||||
license=('GPL-3.0-or-later')
|
||||
depends=('glibc' 'glib2' 'hicolor-icon-theme' 'libx11' 'gtk3' 'gdk-pixbuf2'
|
||||
'cairo' 'pango' 'fontconfig')
|
||||
provides=('wiiudownloader')
|
||||
conflicts=('wiiudownloader')
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('1a43185b07869b8c25b71c3d43ddd829fd79af9d4cf6bfcfddb201f12cf8ff2e')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
# wiiudownloader-bin - prebuilt package of https://github.com/Xpl0itU/WiiUDownloader
|
||||
# (Go + GTK3 downloader for Wii U titles from Nintendo's official servers).
|
||||
#
|
||||
# Upstream only ships AppImages, so build_artifact() builds the Go binary
|
||||
# from the release tarball (grabTitles.py generates the title database that
|
||||
# is compiled in).
|
||||
|
||||
UPSTREAM_REPO="Xpl0itU/WiiUDownloader"
|
||||
|
||||
# Installed in CI (pacman) before build_artifact runs.
|
||||
BUILD_DEPS=(go gtk3 python)
|
||||
|
||||
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/WiiUDownloader-$ver"
|
||||
|
||||
(cd "$srctree" && python3 grabTitles.py)
|
||||
|
||||
(cd "$srctree/cmd/WiiUDownloader" && \
|
||||
GOPATH="$workdir/gopath" \
|
||||
GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw" \
|
||||
go build -v -o "$destdir/wiiudownloader" .)
|
||||
|
||||
install -Dm755 "$destdir/wiiudownloader" "$destdir/usr/bin/wiiudownloader"
|
||||
rm "$destdir/wiiudownloader"
|
||||
install -Dm644 "$srctree/data/WiiUDownloader.png" \
|
||||
"$destdir/usr/share/icons/hicolor/256x256/apps/wiiudownloader.png"
|
||||
|
||||
mkdir -p "$destdir/usr/share/applications"
|
||||
cat > "$destdir/usr/share/applications/wiiudownloader.desktop" << 'EOF'
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=WiiUDownloader
|
||||
Comment=Download Wii U titles from Nintendo's official servers
|
||||
Exec=wiiudownloader
|
||||
Icon=wiiudownloader
|
||||
Terminal=false
|
||||
Categories=Utility;
|
||||
EOF
|
||||
|
||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
||||
-cf "$outfile" -C "$destdir" usr
|
||||
|
||||
rm -rf "$workdir" "$destdir"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
pkgbase = zapzap-bin
|
||||
pkgdesc = WhatsApp desktop client written in PyQt6 + PyQt6-WebEngine (prebuilt)
|
||||
pkgver = 7.0.3
|
||||
pkgrel = 1
|
||||
url = https://github.com/rafatosta/zapzap
|
||||
arch = any
|
||||
license = GPL-3.0-or-later
|
||||
depends = python
|
||||
depends = python-pyqt6
|
||||
depends = python-pyqt6-webengine
|
||||
depends = python-dbus
|
||||
depends = qt6-wayland
|
||||
optdepends = hunspell: spell check
|
||||
provides = zapzap
|
||||
conflicts = zapzap
|
||||
source = zapzap-bin-7.0.3-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/zapzap-bin-7.0.3/zapzap-bin-7.0.3.tar.zst
|
||||
sha256sums = 73e5415a7de9b6e3d7d3f8760c23ad3fec901a48e714d964f54293845804e3c8
|
||||
|
||||
pkgname = zapzap-bin
|
||||
@@ -0,0 +1,22 @@
|
||||
# Maintainer: Felitendo
|
||||
# This PKGBUILD is updated automatically:
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=zapzap-bin
|
||||
pkgver=7.0.3
|
||||
pkgrel=1
|
||||
pkgdesc="WhatsApp desktop client written in PyQt6 + PyQt6-WebEngine (prebuilt)"
|
||||
arch=('any')
|
||||
url="https://github.com/rafatosta/zapzap"
|
||||
license=('GPL-3.0-or-later')
|
||||
depends=('python' 'python-pyqt6' 'python-pyqt6-webengine' 'python-dbus'
|
||||
'qt6-wayland')
|
||||
optdepends=('hunspell: spell check')
|
||||
provides=('zapzap')
|
||||
conflicts=('zapzap')
|
||||
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
|
||||
sha256sums=('73e5415a7de9b6e3d7d3f8760c23ad3fec901a48e714d964f54293845804e3c8')
|
||||
|
||||
package() {
|
||||
cp -a "$srcdir/usr" "$pkgdir/"
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
# zapzap-bin - prebuilt package of https://github.com/rafatosta/zapzap
|
||||
# (WhatsApp desktop client written in PyQt6 + PyQt6-WebEngine).
|
||||
#
|
||||
# Upstream ships deb/AppImage bundles that vendor all of Qt; instead we build
|
||||
# the (pure-Python) wheel and install it against the system PyQt6 packages,
|
||||
# like the AUR source package does.
|
||||
|
||||
UPSTREAM_REPO="rafatosta/zapzap"
|
||||
|
||||
# Installed in CI (pacman) before build_artifact runs.
|
||||
BUILD_DEPS=(python python-build python-installer python-setuptools python-wheel)
|
||||
|
||||
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 staging sitedir entry
|
||||
workdir="$(mktemp -d)"
|
||||
destdir="$(mktemp -d)"
|
||||
staging="$(mktemp -d)"
|
||||
|
||||
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/$ver.tar.gz" | tar -xz -C "$workdir"
|
||||
srctree="$workdir/zapzap-$ver"
|
||||
|
||||
(cd "$srctree" && python -m build --wheel --no-isolation)
|
||||
python -m installer --destdir="$staging" "$srctree"/dist/*.whl
|
||||
|
||||
# The wheel installs into site-packages, whose path changes with every
|
||||
# Python minor bump and would silently break a prebuilt package. Relocate
|
||||
# to a fixed dir and use our own launcher instead of the generated console
|
||||
# script (entry point parsed from pyproject.toml).
|
||||
sitedir="$(find "$staging/usr/lib" -maxdepth 2 -type d -name site-packages)"
|
||||
[[ -d "$sitedir/zapzap" ]] || { echo "zapzap module not found in $sitedir" >&2; return 1; }
|
||||
mkdir -p "$destdir/usr/lib/zapzap"
|
||||
mv "$sitedir/zapzap" "$sitedir"/zapzap-*.dist-info "$destdir/usr/lib/zapzap/"
|
||||
|
||||
entry="$(python -c "import tomllib; print(tomllib.load(open('$srctree/pyproject.toml','rb'))['project']['scripts']['zapzap'])")"
|
||||
mkdir -p "$destdir/usr/bin"
|
||||
cat > "$destdir/usr/bin/zapzap" << EOF
|
||||
#!/usr/bin/python3
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, "/usr/lib/zapzap")
|
||||
from ${entry%%:*} import ${entry#*:}
|
||||
|
||||
sys.exit(${entry#*:}())
|
||||
EOF
|
||||
chmod 755 "$destdir/usr/bin/zapzap"
|
||||
|
||||
# Icon, desktop file and metainfo are not part of the wheel.
|
||||
install -Dm644 "$srctree/share/icons/com.rtosta.zapzap.svg" \
|
||||
"$destdir/usr/share/icons/hicolor/scalable/apps/com.rtosta.zapzap.svg"
|
||||
install -Dm644 "$srctree/share/applications/com.rtosta.zapzap.desktop" \
|
||||
"$destdir/usr/share/applications/com.rtosta.zapzap.desktop"
|
||||
install -Dm644 "$srctree/share/metainfo/com.rtosta.zapzap.appdata.xml" \
|
||||
"$destdir/usr/share/metainfo/com.rtosta.zapzap.appdata.xml"
|
||||
|
||||
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
|
||||
-cf "$outfile" -C "$destdir" usr
|
||||
|
||||
rm -rf "$workdir" "$destdir" "$staging"
|
||||
}
|
||||
Reference in new issue
Block a user