diff options
-rw-r--r-- | pcr/profile-sync-daemon/PKGBUILD | 28 | ||||
-rw-r--r-- | pcr/profile-sync-daemon/psd.install | 150 |
2 files changed, 178 insertions, 0 deletions
diff --git a/pcr/profile-sync-daemon/PKGBUILD b/pcr/profile-sync-daemon/PKGBUILD new file mode 100644 index 000000000..c1583c241 --- /dev/null +++ b/pcr/profile-sync-daemon/PKGBUILD @@ -0,0 +1,28 @@ +# Maintainer (Arch): graysky <graysky AT archlinux DOT us> +# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe> + +pkgname='profile-sync-daemon' +pkgver=6.31 +pkgrel=1.parabola1 +pkgdesc='Syncs browser profiles to tmpfs reducing SSD/HDD calls and speeding-up browsers.' +arch=('any') +url='https://github.com/graysky2/profile-sync-daemon' +license=('MIT') +depends=('procps-ng' 'rsync' 'systemd' 'findutils') +conflicts=('goanysync' 'go-anysync-git' 'iceweasel-sync' +'tmpfs-store' 'tmpfs-sync' 'user-profile-sync-daemon') +source=("http://repo-ck.com/source/$pkgname/$pkgname-$pkgver.tar.xz") +install=psd.install +sha256sums=('3aa6f83ad5cb47653d486124233d6af7cf79e58bd1e57a4bcd34029012be9a13') + +build() { + cd "$pkgname-$pkgver" + make +} + +package() { + cd "$pkgname-$pkgver" + make DESTDIR="$pkgdir" install + install -Dm644 MIT "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + rm -f "$pkgdir/usr/share/man/man1/psd-overlay-helper.1.gz" +} diff --git a/pcr/profile-sync-daemon/psd.install b/pcr/profile-sync-daemon/psd.install new file mode 100644 index 000000000..4b8639d70 --- /dev/null +++ b/pcr/profile-sync-daemon/psd.install @@ -0,0 +1,150 @@ +## arg 1: the new package version +## arg 2: the old package version + +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 TO PSD WITH VERSION 6.00+' + echo '-> 1. A global /etc/psd.conf is no longer used. $HOME/.config/psd/psd.conf will be' + echo '-> created when psd is invoked the first time.' + echo '-> 2. A system service is no longer used. A user service is provided and can be' + echo '-> used like this: systemctl --user start psd.service' + echo '-> 3. Users wanting to use overlayfs mode MUST have sudo access with nopasswd to' + echo '-> /usr/bin/psd-overlay-helper. See the man page for an example configured with visudo.' + + # stop system service now since it will be removed upon updating + systemctl is-active psd.service &>/dev/null + if [ $? -eq 0 ]; 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 i in "$users"; do + running="$(su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user is-active psd')" + if [[ "$running" = "active" ]]; then + su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user stop psd.service' + echo '-> Internal changes to psd require it to be stopped now before updating.' + echo '-> Recommend that you diff /usr/share/doc/psd/psd.conf against ~/.config/psd/psd.conf' + fi + done + fi + + if [ $(vercmp $2 6.03) -lt 0 ]; then + for i in "$users"; do + HOMEDIR="$(getent passwd $i | cut -d: -f6)" + if [[ -d "$HOMEDIR"/.psd ]]; then + echo '-> The use of $HOME/.psd 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 i in "$users"; do + running="$(su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user is-active psd')" + if [[ "$running" = "active" ]]; then + su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user stop psd.service' + echo '-> Internal changes to psd require it to be stopped now before updating.' + echo '-> Users of overlayfs: you must run the following before starting the service: psd p' + fi + done + fi + fi + + # version 6.07 has minor changes to config file + if [ $(vercmp $2 6.07) -lt 0 ]; then + echo '-> Recommend that you diff /usr/share/psd/psd.conf against ~/.config/psd/psd.conf' + fi + + # version 6.10 relocates pid file + if [ $(vercmp $2 6.10) -lt 0 ]; then + for i in "$users"; do + running="$(su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user is-active psd')" + if [[ "$running" = "active" ]]; then + su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user stop psd.service' + echo '-> Internal changes to psd require it to be stopped now before updating.' + fi + done + fi + + # version 6.14 changes the way overlayfs works + if [ $(vercmp $2 6.14) -lt 0 ]; then + for i in "$users"; do + running="$(su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user is-active psd')" + if [[ "$running" = "active" ]]; then + su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user stop psd.service' + echo '-> Internal changes to psd require it to be stopped now before updating.' + fi + done + fi + + # version 6.16 has minor changes to config file + if [ $(vercmp $2 6.16) -lt 0 ]; then + echo '-> Recommend that you diff /usr/share/psd/psd.conf against ~/.config/psd/psd.conf' + fi + + # version 6.22 has minor changes to config file + if [ $(vercmp $2 6.22) -lt 0 ]; then + echo '-> Recommend that you diff /usr/share/psd/psd.conf against ~/.config/psd/psd.conf' + fi + + # version 6.30 has minor changes to config file + if [ $(vercmp $2 6.30) -lt 0 ]; then + echo '-> Recommend that you diff /usr/share/psd/psd.conf against ~/.config/psd/psd.conf' + 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 i in "$users"; do + running="$(su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user is-active psd')" + if [[ "$running" = "active" ]]; then + echo "--> In order to preserve your profiles, pacman will now stop your psd service." + echo "--> Any running and managed browsers will be exited." + su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user stop psd.service' + 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 +} |