perplexity: stop shipping upstream's /lib, fail closed on strays
26.9.1 added /lib/systemd/system/perplexity-local-runtime-setup.service to the deb, and wholesale extraction made the package own /lib -- a symlink owned by filesystem -- so pacman refused every install and upgrade. The unit could never work here anyway: its setup script apt-installs Docker and the NVIDIA Container Toolkit and exits on any distro but Ubuntu, so the Arch equivalents ride optdepends instead. package() now allowlists what leaves the deb: opt/, usr/, and that one known unit path (deleted). Anything else stops the build rather than shipping the next filesystem conflict. Verified in a clean container: the published -1 reproduces the /lib conflict; -2 installs fresh and upgrades from 26.8.4 cleanly.
This commit is contained in:
1 file changed
+20
-1
@@ -6,7 +6,7 @@
|
||||
|
||||
pkgname=perplexity
|
||||
pkgver=26.9.1+build61614
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Official Perplexity desktop app"
|
||||
arch=('x86_64' 'aarch64')
|
||||
url="https://www.perplexity.ai"
|
||||
@@ -56,6 +56,8 @@ depends=(
|
||||
optdepends=(
|
||||
'apparmor: confine the app with the bundled user-namespace profile'
|
||||
'libappindicator-gtk3: tray icon support'
|
||||
'docker: containerized local GPU runtime for on-device models'
|
||||
'nvidia-container-toolkit: containerized local GPU runtime for on-device models'
|
||||
)
|
||||
|
||||
makedepends=('libarchive')
|
||||
@@ -91,6 +93,23 @@ package() {
|
||||
bsdtar -xOf "${deb}" data.tar.xz |
|
||||
bsdtar --no-same-owner -xf - -C "${pkgdir}"
|
||||
|
||||
# 26.9.1 started shipping a systemd unit under /lib, and owning /lib -- a
|
||||
# symlink owned by the filesystem package -- makes pacman refuse the whole
|
||||
# transaction. The unit is also a no-op here:
|
||||
# its setup script apt-installs Docker and the NVIDIA Container Toolkit and
|
||||
# exits on any distro but Ubuntu (install those yourself; see optdepends).
|
||||
# Delete it, but only it: anything else arriving outside the trees this
|
||||
# PKGBUILD expects stops the build rather than shipping the next conflict.
|
||||
local unexpected
|
||||
unexpected=$(cd "${pkgdir}" && find . \( -type f -o -type l \) | grep -vE \
|
||||
'^\./(opt|usr)/|^\./lib/systemd/system/perplexity-local-runtime-setup\.service$' || true)
|
||||
if [[ -n "${unexpected}" ]]; then
|
||||
echo "Unexpected files outside opt/ and usr/ in the upstream deb:" >&2
|
||||
echo "${unexpected}" >&2
|
||||
return 1
|
||||
fi
|
||||
rm -rf "${pkgdir}/lib"
|
||||
|
||||
# pacman never runs the deb's postinst, so the /usr/bin entry it would have
|
||||
# symlinked is a launcher here instead, and the menu entry goes through it so
|
||||
# the flags file applies there too. The scheme handler stays upstream's.
|
||||
|
||||
Reference in new issue
Block a user