Compare commits

..
Author SHA1 Message Date
github-actions[bot] b14cd21d70 sharpemu-bin: update to 0.0.2_beta.5-1 [skip ci] 2026-07-23 01:08:19 +00:00
Felitendo 8b3302d335 sharpemu-bin: add package (0.0.2_beta.4-1) 2026-07-22 06:53:10 +02:00
Felitendo db74a6b65a Prune superseded GitHub releases after publishing 2026-07-21 13:36:03 +02:00
Felitendo 0d9fea0a51 Queue workflow runs instead of racing on AUR pushes 2026-07-21 13:32:03 +02:00
Felitendo f215a99c11 chromium-widevine-helper-bin: add package (1.0.8-1) 2026-07-21 13:22:18 +02:00
github-actions[bot] abe8b73474 timetable-bin: update to 4.2.1-1 [skip ci] 2026-07-21 01:06:19 +00:00
github-actions[bot] 18a2e308b8 timetable-bin: update to 4.1-1 [skip ci] 2026-07-18 18:57:34 +00:00
Felitendo 1a83bd9eb9 timetable-bin: add missing runtime deps (4.0-2)
Upstream 4.0 replaced python-webuntis with pyotp for authentication and
unconditionally imports libsecret (credential storage) and WebKitGTK 6.0
at startup. Add python-pyotp, libsecret and webkitgtk-6.0 to depends.

Stop bundling the webuntis wheel from the next artifact build on; the
existing 4.0 artifact is reused as-is (its bundled copy is unused and
inert).
2026-07-18 15:10:59 +02:00
github-actions[bot] be1973ee39 timetable-bin: update to 4.0-1 [skip ci] 2026-07-18 01:05:31 +00:00
12 changed files with 273 additions and 16 deletions

No files matched your search

+7
View File
@@ -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
+5 -2
View File
@@ -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,8 @@ 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) |
## Setup (one-time)
+27
View File
@@ -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 = 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
+31
View File
@@ -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=("https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('efb70f082652176710b403a2629333220c1b8b96e3f27f398ba7efb496982829')
package() {
cp -a "$srcdir/usr" "$srcdir/etc" "$pkgdir/"
}
+77
View File
@@ -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"
}
+19
View File
@@ -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
+27
View File
@@ -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
+39
View File
@@ -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"
}
+28
View File
@@ -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"
}
+7 -4
View File
@@ -1,22 +1,25 @@
pkgbase = timetable-bin
pkgdesc = GTK4 + LibAdwaita client for WebUntis (prebuilt, bundles python-webuntis)
pkgver = 3.1
pkgdesc = GTK4 + LibAdwaita client for WebUntis (prebuilt)
pkgver = 4.2.1
pkgrel = 1
url = https://codeberg.org/ostfriese4/untis
arch = any
license = GPL-3.0-or-later
depends = gtk4
depends = libadwaita
depends = webkitgtk-6.0
depends = libsecret
depends = python
depends = python-gobject
depends = python-requests
depends = python-pyotp
depends = glib2
depends = hicolor-icon-theme
provides = untis
provides = timetable
conflicts = untis
conflicts = timetable
source = https://github.com/Felitendo/PKGBUILDS/releases/download/timetable-bin-3.1/timetable-bin-3.1.tar.zst
sha256sums = ffd735d1a08204fe18e563815813b3a62f7625bce5bd5d4c086f1456422e0590
source = https://github.com/Felitendo/PKGBUILDS/releases/download/timetable-bin-4.2.1/timetable-bin-4.2.1.tar.zst
sha256sums = c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc
pkgname = timetable-bin
+5 -4
View File
@@ -3,17 +3,18 @@
# https://github.com/Felitendo/PKGBUILDS
pkgname=timetable-bin
pkgver=3.1
pkgver=4.2.1
pkgrel=1
pkgdesc="GTK4 + LibAdwaita client for WebUntis (prebuilt, bundles python-webuntis)"
pkgdesc="GTK4 + LibAdwaita client for WebUntis (prebuilt)"
arch=('any')
url="https://codeberg.org/ostfriese4/untis"
license=('GPL-3.0-or-later')
depends=('gtk4' 'libadwaita' 'python' 'python-gobject' 'python-requests' 'glib2' 'hicolor-icon-theme')
depends=('gtk4' 'libadwaita' 'webkitgtk-6.0' 'libsecret' 'python' 'python-gobject'
'python-requests' 'python-pyotp' 'glib2' 'hicolor-icon-theme')
provides=('untis' 'timetable')
conflicts=('untis' 'timetable')
source=("https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('ffd735d1a08204fe18e563815813b3a62f7625bce5bd5d4c086f1456422e0590')
sha256sums=('c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
+1 -6
View File
@@ -8,7 +8,7 @@
UPSTREAM_REPO="ostfriese4/untis"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(meson ninja glib2 glib2-devel gtk4 libadwaita python python-gobject python-pip gettext)
BUILD_DEPS=(meson ninja glib2 glib2-devel gtk4 libadwaita python python-gobject gettext)
latest_version() {
curl -sf "https://codeberg.org/api/v1/repos/$UPSTREAM_REPO/releases/latest" \
@@ -31,11 +31,6 @@ build_artifact() {
meson setup "$workdir/build" "$workdir/untis" --prefix=/usr --buildtype=release
meson install -C "$workdir/build" --destdir "$destdir"
# Bundle the pure-python webuntis library: it is packaged neither in the
# Arch repos nor on the AUR. /usr/share/untis is on the launcher's sys.path.
pip download --no-deps --only-binary :all: --dest "$workdir/wheels" webuntis
python -m zipfile -e "$workdir"/wheels/webuntis-*.whl "$destdir/usr/share/untis/"
# 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" \