## arg 1: the new package version ## arg 2: the old package version 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' su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user daemon-reload' 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' su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user daemon-reload' 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' su $i -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID systemctl --user daemon-reload' echo '-> Internal changes to psd require it to be stopped now before updating.' fi done 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 }