summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorClaudia Pellegrino2021-10-24 21:23:14 +0200
committerClaudia Pellegrino2021-12-20 15:02:05 +0100
commit219f20a08c36a0d3d41918769c98b616ec7cee3e (patch)
treea17bedaf56921d94292843913f80319d27ca09ac
parentf6f65127f6989a4abb121bc89ccb03b63b3f9d1f (diff)
downloadaur-219f20a08c36a0d3d41918769c98b616ec7cee3e.tar.gz
Symlink everything we can find in /usr/lib/firefox
The Arch Linux repositories have many packages which add features or extensions to Firefox. The AUR has even more. However, all those packages keep their files inside the `/usr/lib/firefox` hierarchy so they never worked for `firefox-developer-edition` users. This commit enables many such extension and feature packages, for example: - firefox-noscript - firefox-ublock-origin - firefox-extension-multi-account-containers (AUR) to work with `firefox-developer-edition`. How it works: This commit adds install scripts and an ALPM hook. Together, those scripts and the hook will keep `/usr/lib/firefox` and `/usr/lib/firefox-developer-edition` in sync. They achieve that by creating symlinks pointing to each file in the `/usr/lib/firefox` hierarchy. Pacman will run that hook whenever adding or removing something in that hierarchy. Pacman will also run the install script whenever this package gets installed, updated, or removed. The scripts and the hook will handle the following events: - When pacman installs anything into the `/usr/lib/firefox` hierarchy while this package is installed, the ALPM hook deletes and recreates the symlinks. - The same thing happens when pacman modifies or removes anything in the `/usr/lib/firefox` hierarchy while this package is installed. - When pacman removes the `/usr/lib/firefox` hierarchy while this package is installed, the ALPM hook deletes all the symlinks. - When pacman first installs this package, the install script creates the symlinks. - When pacman updates this package, the install script deletes and recreates the symlinks. - When pacman removes this package, the install script deletes all the symlinks.
-rw-r--r--.SRCINFO15
-rw-r--r--PKGBUILD33
-rw-r--r--firefox-developer-edition-firefox-symlink.hook12
-rw-r--r--firefox-developer-edition-firefox-symlink.install18
-rw-r--r--firefox-developer-edition-firefox-symlinks-create.bash14
-rw-r--r--firefox-developer-edition-firefox-symlinks-delete.bash15
6 files changed, 98 insertions, 9 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 088aaf878963..2ccc8b143143 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,16 +1,23 @@
pkgbase = firefox-developer-edition-firefox-symlink-latest
- pkgdesc = Adds a 'firefox'-symlink for 'firefox-developer-edition'. Also symlinks icon- and .desktop-files.
- pkgver = 95.0b4
+ pkgdesc = Adds a 'firefox'-symlink for 'firefox-developer-edition'. Also symlinks extensions, icon- and .desktop-files.
+ pkgver = 96.0b6
pkgrel = 1
url = https://aur.archlinux.org/packages/firefox-developer-edition-firefox-symlink-latest
+ install = firefox-developer-edition-firefox-symlink.install
arch = any
license = custom: public domain
depends = firefox-developer-edition
- provides = firefox-developer-edition-firefox-symlink=95.0b4
- provides = firefox=95.0b4
+ provides = firefox-developer-edition-firefox-symlink=96.0b6
+ provides = firefox=96.0b6
conflicts = firefox-developer-edition-firefox-symlink
conflicts = firefox
+ source = firefox-developer-edition-firefox-symlinks-create.bash
+ source = firefox-developer-edition-firefox-symlinks-delete.bash
+ source = firefox-developer-edition-firefox-symlink.hook
source = license-metapackage-pd.txt
+ sha256sums = d64c249647cf5c31757a2398e067b48009941d24395637e974aeb842d13b8b95
+ sha256sums = 2c0a6ff047c163df20d9b3248595ee19de7498d8b5a9c65df4a07260014b3538
+ sha256sums = 24ef877acd05f7e352f1841efce4e1bcd1d9163b3883f73e9cc6de918301f50e
sha256sums = 1e86f8ac1ad7315c76f4db8bf6a1dbdde6825ac95ff468e431bbe452b6865ae6
pkgname = firefox-developer-edition-firefox-symlink-latest
diff --git a/PKGBUILD b/PKGBUILD
index bc3f9c16f442..329f6e234756 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,10 +1,11 @@
# Maintainer: dreieck
+# Contributor: Claudia Pellegrino <aur ät cpellegrino.de>
_pkgname="firefox-developer-edition-firefox-symlink"
pkgname="${_pkgname}-latest"
-pkgver=95.0b4
+pkgver=96.0b6
pkgrel=1
-pkgdesc="Adds a 'firefox'-symlink for 'firefox-developer-edition'. Also symlinks icon- and .desktop-files."
+pkgdesc="Adds a 'firefox'-symlink for 'firefox-developer-edition'. Also symlinks extensions, icon- and .desktop-files."
arch=("any")
url='https://aur.archlinux.org/packages/firefox-developer-edition-firefox-symlink-latest'
license=('custom: public domain')
@@ -17,9 +18,20 @@ conflicts=(
"${_pkgname}"
"firefox"
)
+install="${_pkgname}.install"
-source=('license-metapackage-pd.txt')
-sha256sums=('1e86f8ac1ad7315c76f4db8bf6a1dbdde6825ac95ff468e431bbe452b6865ae6')
+source=(
+ 'firefox-developer-edition-firefox-symlinks-create.bash'
+ 'firefox-developer-edition-firefox-symlinks-delete.bash'
+ "${_pkgname}.hook"
+ 'license-metapackage-pd.txt'
+)
+sha256sums=(
+ 'd64c249647cf5c31757a2398e067b48009941d24395637e974aeb842d13b8b95'
+ '2c0a6ff047c163df20d9b3248595ee19de7498d8b5a9c65df4a07260014b3538'
+ '24ef877acd05f7e352f1841efce4e1bcd1d9163b3883f73e9cc6de918301f50e'
+ '1e86f8ac1ad7315c76f4db8bf6a1dbdde6825ac95ff468e431bbe452b6865ae6'
+)
pkgver() {
pacman -Qi firefox-developer-edition | grep -E '^Version[[:space:]]*:' | head -n 1 | awk -F ':' '{print $2}' | sed -E 's|-.*||' | tr -d '[[:space:]]'
@@ -46,5 +58,16 @@ package() {
fi
done
- install -D -m644 "${srcdir}/license-metapackage-pd.txt" "${pkgdir}/usr/share/licenses/${pkgname}/copying.txt"
+ install -D -m 755 -T \
+ "${srcdir}/${_pkgname}s-create.bash" \
+ "${pkgdir}/usr/share/libalpm/scripts/${_pkgname}s-create"
+ install -D -m 755 -T \
+ "${srcdir}/${_pkgname}s-delete.bash" \
+ "${pkgdir}/usr/share/libalpm/scripts/${_pkgname}s-delete"
+ install -D -m 644 -T \
+ "${srcdir}/${_pkgname}.hook" \
+ "${pkgdir}/usr/share/libalpm/hooks/${_pkgname}.hook"
+ install -D -m 644 -T \
+ "${srcdir}/license-metapackage-pd.txt" \
+ "${pkgdir}/usr/share/licenses/${pkgname}/copying.txt"
}
diff --git a/firefox-developer-edition-firefox-symlink.hook b/firefox-developer-edition-firefox-symlink.hook
new file mode 100644
index 000000000000..7e7b6269e5ac
--- /dev/null
+++ b/firefox-developer-edition-firefox-symlink.hook
@@ -0,0 +1,12 @@
+[Trigger]
+Type = Path
+Operation = Install
+Operation = Upgrade
+Operation = Remove
+Target = usr/lib/firefox/*
+
+[Action]
+Description = Updating symlinks for firefox-developer-edition...
+Exec = /bin/bash -c "cd /usr/share/libalpm/scripts && ./firefox-developer-edition-firefox-symlinks-delete && ./firefox-developer-edition-firefox-symlinks-create"
+When = PostTransaction
+Depends = firefox-developer-edition
diff --git a/firefox-developer-edition-firefox-symlink.install b/firefox-developer-edition-firefox-symlink.install
new file mode 100644
index 000000000000..297c17c58f24
--- /dev/null
+++ b/firefox-developer-edition-firefox-symlink.install
@@ -0,0 +1,18 @@
+post_install() {
+ echo >&2 'Removing symlinks for firefox-developer-edition...'
+ /usr/share/libalpm/scripts/firefox-developer-edition-firefox-symlinks-delete
+ echo >&2 'Creating symlinks for firefox-developer-edition...'
+ /usr/share/libalpm/scripts/firefox-developer-edition-firefox-symlinks-create
+}
+
+post_upgrade() {
+ echo >&2 'Removing symlinks for firefox-developer-edition...'
+ /usr/share/libalpm/scripts/firefox-developer-edition-firefox-symlinks-delete
+ echo >&2 'Creating symlinks for firefox-developer-edition...'
+ /usr/share/libalpm/scripts/firefox-developer-edition-firefox-symlinks-create
+}
+
+pre_remove() {
+ echo >&2 'Removing symlinks for firefox-developer-edition...'
+ /usr/share/libalpm/scripts/firefox-developer-edition-firefox-symlinks-delete
+}
diff --git a/firefox-developer-edition-firefox-symlinks-create.bash b/firefox-developer-edition-firefox-symlinks-create.bash
new file mode 100644
index 000000000000..927f030a0a7c
--- /dev/null
+++ b/firefox-developer-edition-firefox-symlinks-create.bash
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+if [[ ! -d /usr/lib/firefox ]]; then
+ exit 0
+fi
+
+# Walk the /usr/lib/firefox hierarchy and symlink everything
+exec find /usr/lib/firefox -type f \
+ -exec bash -c '
+ set -eu
+ link="/usr/lib/firefox-developer-edition/${1#/usr/lib/firefox/}"
+ mkdir -pv "$(dirname "${link}")"
+ ln -s -v -T "$1" "${link}"
+ ' _ '{}' ';'
diff --git a/firefox-developer-edition-firefox-symlinks-delete.bash b/firefox-developer-edition-firefox-symlinks-delete.bash
new file mode 100644
index 000000000000..0831344d5d27
--- /dev/null
+++ b/firefox-developer-edition-firefox-symlinks-delete.bash
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if [[ ! -d /usr/lib/firefox-developer-edition ]]; then
+ exit 0
+fi
+
+# Remove all existing symlinks that point to /usr/lib/firefox
+exec find /usr/lib/firefox-developer-edition -type l \
+ -exec bash -c '
+ set -eu
+ target="$(readlink -m "$1")"
+ if [[ "${target}" == /usr/lib/firefox/* ]]; then
+ rm -v "$1"
+ fi
+ ' _ '{}' ';'