blob: 4b8639d705e90cd9d7ea9ba3d66a84b804747998 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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
}
|