Date: Friday, February 14, 2020 @ 10:58:12 Author: dvzrv Revision: 570989
Adding profile-sync-daemon from the AUR. Added: profile-sync-daemon/ profile-sync-daemon/repos/ profile-sync-daemon/trunk/ profile-sync-daemon/trunk/PKGBUILD profile-sync-daemon/trunk/profile-sync-daemon.install -----------------------------+ PKGBUILD | 26 +++++++ profile-sync-daemon.install | 156 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 182 insertions(+) Added: profile-sync-daemon/trunk/PKGBUILD =================================================================== --- profile-sync-daemon/trunk/PKGBUILD (rev 0) +++ profile-sync-daemon/trunk/PKGBUILD 2020-02-14 10:58:12 UTC (rev 570989) @@ -0,0 +1,26 @@ +# Maintainer: David Runge <[email protected]> +# Contributor: graysky <graysky AT archlinux DOT us> + +pkgname=profile-sync-daemon +pkgver=6.35 +pkgrel=2 +pkgdesc="Symlinks and syncs browser profile dirs to RAM" +arch=('any') +url="https://github.com/graysky2/profile-sync-daemon" +license=('MIT') +depends=('findutils' 'procps-ng' 'rsync' 'systemd') +install="${pkgname}.install" +source=("$pkgname-$pkgver.tar.gz::https://github.com/graysky2/$pkgname/archive/v$pkgver.tar.gz") +sha512sums=('e406d39c4edeabc8baa45320a97656791d4099cc8db84aac2cb9f72ef2ed034c82bba73d53457f4ae4201c945af106717d2d979df5a3f154e307f2e6cc41411a') + +build() { + cd "$pkgname-$pkgver" + make +} + +package() { + cd "$pkgname-$pkgver" + make DESTDIR="$pkgdir/" install + install -vDm 644 MIT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -vDm 644 README.md -t "${pkgdir}/usr/share/doc/${pkgname}" +} Added: profile-sync-daemon/trunk/profile-sync-daemon.install =================================================================== --- profile-sync-daemon/trunk/profile-sync-daemon.install (rev 0) +++ profile-sync-daemon/trunk/profile-sync-daemon.install 2020-02-14 10:58:12 UTC (rev 570989) @@ -0,0 +1,156 @@ +## arg 1: the new package version +## arg 2: the old package version +# shellcheck disable=SC2016 + + +users=$(loginctl --no-legend list-users | awk '{ print $2 }' | sed ':a;N;$!ba;s/\n/ /g') + +pre_upgrade() { + # version 6.00 is a major rebuild + # yes, I realize that pacman should not stop services but in this case it + # is required or else browser profiles (user data) can get renamed and confuse + # people if it does not happen + if [ "$(vercmp "$2" 6.00)" -lt 0 ]; then + echo 'Attention: Major changes have been introduced with 6.00+' + echo 'Instead of a system service a user service is now used.' + echo 'Only $HOME/.config/psd/psd.conf is used (and automatically created on first start).' + echo 'To use overlayfs additional setup steps are required (see `man 1 psd`).' + + # stop system service now since it will be removed upon updating + if systemctl is-active psd.service &>/dev/null; then + systemctl stop psd.service &>/dev/null + fi + fi + + # version 6.01 redefines the location of tmpfs for the software so it is + # required that pacman stop the user service here if running + if [ "$(vercmp "$2" 6.01)" -lt 0 ]; then + for user in $users; do + if _psd_running_for_user "$user"; then + _stop_psd_for_user "$user" + _diff_recommendation + fi + done + fi + + if [ "$(vercmp "$2" 6.03)" -lt 0 ]; then + for user in $users; do + HOMEDIR="$(getent passwd "$user" | cut -d: -f6)" + if [[ -d "$HOMEDIR"/.psd ]]; then + echo 'The use of $HOME/.psd for configuration is deprecated.' + echo 'Psd will move it for you upon next invocation to $XDG_CONFIG_HOME/psd' + fi + done + + # version 6.05 impliments changes to both the service and the way overlayfs is mounted/umount + # so it is required that pacman stop the user service here if running + if [ "$(vercmp "$2" 6.05)" -lt 0 ]; then + for user in $users; do + if _psd_running_for_user "$user"; then + _stop_psd_for_user "$user" + echo 'Users of overlayfs: Before starting the service `psd p` must be run.' + fi + done + fi + fi + + # version 6.07 has minor changes to config file + if [ "$(vercmp "$2" 6.07)" -lt 0 ]; then + _diff_recommendation + fi + + # version 6.10 relocates pid file + if [ "$(vercmp "$2" 6.10)" -lt 0 ]; then + for user in $users; do + if _psd_running_for_user "$user"; then + _stop_psd_for_user "$user" + fi + done + fi + + # version 6.14 changes the way overlayfs works + if [ "$(vercmp "$2" 6.14)" -lt 0 ]; then + for user in $users; do + if _psd_running_for_user "$user"; then + _stop_psd_for_user "$user" + fi + done + fi + + # version 6.16 has minor changes to config file + if [ "$(vercmp "$2" 6.16)" -lt 0 ]; then + _diff_recommendation + fi + + # version 6.22 has minor changes to config file + if [ "$(vercmp "$2" 6.22)" -lt 0 ]; then + _diff_recommendation + fi + + # version 6.30 has minor changes to config file + if [ "$(vercmp "$2" 6.30)" -lt 0 ]; then + _diff_recommendation + fi +} + +post_upgrade() { + # version 6.01 redefines the location of tmpfs for the software so it is + # required that pacman stop the user service here if running + if [ "$(vercmp "$2" 6.01)" -lt 0 ]; then + _daemon_refresh + fi + + # version 6.05 impliments changes to both the service and the way overlayfs is mounted/umount + # so it is required that pacman stop the user service here if running + if [ "$(vercmp "$2" 6.05)" -lt 0 ]; then + _daemon_refresh + fi + + # version 6.10 relocates pid file + if [ "$(vercmp "$2" 6.10)" -lt 0 ]; then + _daemon_refresh + fi + + # version 6.11 modified services + if [ "$(vercmp "$2" 6.11)" -lt 0 ]; then + _daemon_refresh + fi + + # version 6.14 modified services + if [ "$(vercmp "$2" 6.14)" -lt 0 ]; then + _daemon_refresh + fi +} + +pre_remove() { + for user in $users; do + if _psd_running_for_user "$user"; then + _stop_psd_for_user "$user" + fi + done +} + +_daemon_refresh() { + for i in $users; do + su "$i" -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user daemon-reload' + done +} + +_psd_running_for_user() { + running="$(su "$1" -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user is-active psd')" + if [[ "$running" = "active" ]]; then + return 0 + else + return 1 + fi +} + +_stop_psd_for_user() { + echo "In order to preserve the browser profiles, all psd user services will be stopped." + echo "Any running and managed browsers will be exited." + su "$1" -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user stop psd.service' +} + +_diff_recommendation() { + echo 'It is recommend to diff /usr/share/psd/psd.conf against ~/.config/psd/psd.conf' +}
