From 237f41644e6c146e1112e671442f9eb5502d9b4a Mon Sep 17 00:00:00 2001 From: Felitendo Date: Fri, 21 Aug 2026 10:00:02 +0200 Subject: [PATCH] plezy-bin: new package --- README.md | 1 + plezy-bin/.SRCINFO | 34 +++++++++++++++++++++++++++++ plezy-bin/PKGBUILD | 54 ++++++++++++++++++++++++++++++++++++++++++++++ plezy-bin/pkg.sh | 47 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+) create mode 100644 plezy-bin/.SRCINFO create mode 100644 plezy-bin/PKGBUILD create mode 100644 plezy-bin/pkg.sh diff --git a/README.md b/README.md index ced0581..41a0904 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ source in the `PKGBUILD` (and drop the `-bin` suffix), or don't package it. | `nextcloud-native` | [Obiente/nc-native](https://github.com/Obiente/nc-native) — adaptive native Nextcloud client for files, media and installed server apps (Compose Multiplatform, unofficial) | *built from source* | [nextcloud-native](https://aur.archlinux.org/packages/nextcloud-native) | | `nextcloud-native-bin` | [Obiente/nc-native](https://github.com/Obiente/nc-native) — prebuilt release of `nextcloud-native` | `.deb` | [nextcloud-native-bin](https://aur.archlinux.org/packages/nextcloud-native-bin) | | `nextcloud-native-git` | [Obiente/nc-native](https://github.com/Obiente/nc-native) — `main` branch of `nextcloud-native` | *built from source* | [nextcloud-native-git](https://aur.archlinux.org/packages/nextcloud-native-git) | +| `plezy-bin` | [edde746/plezy](https://github.com/edde746/plezy) — Plex, Jellyfin and Emby client (Flutter); the source package [lives in `extra`](https://archlinux.org/packages/extra/x86_64/plezy/) | `.deb` | [plezy-bin](https://aur.archlinux.org/packages/plezy-bin) | | `sharpemu-bin` | [sharpemu/sharpemu](https://github.com/sharpemu/sharpemu) — experimental PlayStation 5 emulator | tarball | [sharpemu-bin](https://aur.archlinux.org/packages/sharpemu-bin) | | `snapx-bin` | [SnapXL/SnapX](https://github.com/SnapXL/SnapX) — ShareX-fork screenshot/sharing tool | self-contained tarball | [snapx-bin](https://aur.archlinux.org/packages/snapx-bin) | | `timetable` | [ostfriese4/untis](https://codeberg.org/ostfriese4/untis) — "Timetable", a GTK4 + LibAdwaita client for WebUntis | *built from source* | [timetable](https://aur.archlinux.org/packages/timetable) | diff --git a/plezy-bin/.SRCINFO b/plezy-bin/.SRCINFO new file mode 100644 index 0000000..03b3925 --- /dev/null +++ b/plezy-bin/.SRCINFO @@ -0,0 +1,34 @@ +pkgbase = plezy-bin + pkgdesc = Modern client for Plex, Jellyfin and Emby (upstream binary) + pkgver = 2.16.0 + pkgrel = 1 + url = https://plezy.app + arch = x86_64 + arch = aarch64 + license = GPL-3.0-or-later + depends = alsa-lib + depends = glib2 + depends = gtk3 + depends = hicolor-icon-theme + depends = libdrm + depends = libepoxy + depends = libevdev + depends = libglvnd + depends = libva + depends = libx11 + depends = libxcb + depends = libxext + depends = mesa + depends = wayland + provides = plezy=2.16.0 + conflicts = plezy + noextract = plezy-bin-2.16.0-x86_64.deb + noextract = plezy-bin-2.16.0-aarch64.deb + options = !strip + options = !debug + source_x86_64 = plezy-bin-2.16.0-x86_64.deb::https://github.com/edde746/plezy/releases/download/2.16.0/plezy-linux-x64.deb + sha256sums_x86_64 = f07f95fe6df0fda280a0a0dd94a6315c326ed9613ad34696a61ede769cbac118 + source_aarch64 = plezy-bin-2.16.0-aarch64.deb::https://github.com/edde746/plezy/releases/download/2.16.0/plezy-linux-arm64.deb + sha256sums_aarch64 = 883234b646763a235a6882d38983af31ba0b63a2200a3414b5af7ce81b36ca79 + +pkgname = plezy-bin diff --git a/plezy-bin/PKGBUILD b/plezy-bin/PKGBUILD new file mode 100644 index 0000000..82b17a2 --- /dev/null +++ b/plezy-bin/PKGBUILD @@ -0,0 +1,54 @@ +# Maintainer: Felitendo +# This PKGBUILD is updated automatically: +# https://github.com/Felitendo/PKGBUILDS + +pkgname=plezy-bin +pkgver=2.16.0 +pkgrel=1 +pkgdesc="Modern client for Plex, Jellyfin and Emby (upstream binary)" +arch=('x86_64' 'aarch64') +url="https://plezy.app" +license=('GPL-3.0-or-later') +# Upstream's own pacman dependency list, taken from the manifest that produces +# the release packages (linux/packaging/build-packages.py) and kept in that +# shape on purpose: the .deb repackaged here is the same bundle upstream's +# .pkg.tar.zst carries. Almost everything the app links travels inside +# /opt/plezy/lib - including GTK, glib, libmpv and ffmpeg - so what is declared +# here is mostly what upstream deliberately does not bundle, because it is +# coupled to the running compositor and GPU driver. libmpv in particular has to +# be the bundled, Wayland-enabled build: a distro libmpv silently drops hwdec +# to vaapi-copy on the native video plane. +depends=('alsa-lib' 'glib2' 'gtk3' 'hicolor-icon-theme' 'libdrm' 'libepoxy' + 'libevdev' 'libglvnd' 'libva' 'libx11' 'libxcb' 'libxext' 'mesa' + 'wayland') +provides=("plezy=${pkgver}") +conflicts=('plezy') +# prebuilt, and the runner finds its bundled libraries through the wrapper's +# LD_LIBRARY_PATH rather than an RPATH +options=('!strip' '!debug') +# Release tags carry no v prefix (2.16.0), so the tag is pkgver as-is. +source_x86_64=("${pkgname}-${pkgver}-x86_64.deb::https://github.com/edde746/plezy/releases/download/${pkgver}/plezy-linux-x64.deb") +source_aarch64=("${pkgname}-${pkgver}-aarch64.deb::https://github.com/edde746/plezy/releases/download/${pkgver}/plezy-linux-arm64.deb") +noextract=("${pkgname}-${pkgver}-x86_64.deb" "${pkgname}-${pkgver}-aarch64.deb") +sha256sums_x86_64=('f07f95fe6df0fda280a0a0dd94a6315c326ed9613ad34696a61ede769cbac118') +sha256sums_aarch64=('883234b646763a235a6882d38983af31ba0b63a2200a3414b5af7ce81b36ca79') + +package() { + # the Flutter bundle in /opt/plezy plus the /usr/bin wrapper, desktop entry + # and icons upstream's .deb installs + bsdtar -xOf "$srcdir/${pkgname}-${pkgver}-${CARCH}.deb" 'data.tar.*' \ + | bsdtar -xpf - -C "$pkgdir" --exclude './usr/share/doc' ./opt ./usr + + # upstream ships this one non-executable and fixes it up in the .deb's + # postinst, which pacman never runs + chmod 755 "$pkgdir/opt/plezy/lib/crashpad_handler" + + # GPL-3.0-or-later is a common license (/usr/share/licenses/common/GPL3) and + # the .deb carries no license text of its own. + + # Upstream builds its release binaries with ENABLE_UPDATE_CHECK=true, so + # unlike the [extra] package this one does check GitHub for new versions. + # On Linux that only ever opens a dialog with a browser link - there is no + # in-app install path to collide with pacman - and the dialog can be + # dismissed per version or turned off in the app's settings. +} diff --git a/plezy-bin/pkg.sh b/plezy-bin/pkg.sh new file mode 100644 index 0000000..cc3a569 --- /dev/null +++ b/plezy-bin/pkg.sh @@ -0,0 +1,47 @@ +# plezy-bin - Plezy (https://github.com/edde746/plezy), a Plex, Jellyfin and +# Emby client built with Flutter. +# +# Upstream builds the Linux release itself and publishes a .deb (plus .rpm, +# .pkg.tar.zst and a portable tarball) per release, so there is no build step +# here: on a new version only pkgver and the two checksums are refreshed and +# the PKGBUILD repackages the .deb directly. +# +# plezy itself is in [extra], built from source by an Arch packager, so only +# the -bin variant belongs in the AUR - a second source package would be a +# duplicate the AUR rejects outright. The two conflict, and plezy-bin provides +# plezy so either one satisfies a dependency on it. What it buys over the +# repository package is release-day updates without the Flutter build, which +# needs an fvm-pinned SDK and takes the better part of an hour. +# +# Release tags are plain versions with no v prefix (2.16.0), every release is a +# full release, and the asset names are fixed (plezy-linux-x64.deb / +# plezy-linux-arm64.deb), so /releases/latest is enough to track upstream. + +UPSTREAM_REPO="edde746/plezy" + +latest_version() { + gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//' +} + +# refresh_checksums +refresh_checksums() { + local ver="$1" pkgbuild="$2" + local base sha_x64 sha_arm64 + + base="https://github.com/$UPSTREAM_REPO/releases/download/$ver" + sha_x64="$(curl -sfL "$base/plezy-linux-x64.deb" | sha256sum | cut -d' ' -f1)" + sha_arm64="$(curl -sfL "$base/plezy-linux-arm64.deb" | sha256sum | cut -d' ' -f1)" + + # curl -f keeps a 404 page out of the sums; a missing asset ends up empty here + for sha in "$sha_x64" "$sha_arm64"; do + if [[ "$sha" == "$(printf '' | sha256sum | cut -d' ' -f1)" ]]; then + echo "one of the $ver .deb assets is missing or empty - try again" >&2 + return 1 + fi + done + + sed -i \ + -e "s|^sha256sums_x86_64=.*|sha256sums_x86_64=('$sha_x64')|" \ + -e "s|^sha256sums_aarch64=.*|sha256sums_aarch64=('$sha_arm64')|" \ + "$pkgbuild" +}