diff options
author | Claudia Pellegrino | 2021-10-24 21:23:14 +0200 |
---|---|---|
committer | Claudia Pellegrino | 2021-12-20 15:02:05 +0100 |
commit | 219f20a08c36a0d3d41918769c98b616ec7cee3e (patch) | |
tree | a17bedaf56921d94292843913f80319d27ca09ac | |
parent | f6f65127f6989a4abb121bc89ccb03b63b3f9d1f (diff) | |
download | aur-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-- | .SRCINFO | 15 | ||||
-rw-r--r-- | PKGBUILD | 33 | ||||
-rw-r--r-- | firefox-developer-edition-firefox-symlink.hook | 12 | ||||
-rw-r--r-- | firefox-developer-edition-firefox-symlink.install | 18 | ||||
-rw-r--r-- | firefox-developer-edition-firefox-symlinks-create.bash | 14 | ||||
-rw-r--r-- | firefox-developer-edition-firefox-symlinks-delete.bash | 15 |
6 files changed, 98 insertions, 9 deletions
@@ -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 @@ -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 + ' _ '{}' ';' |