forked from agama-project/agama
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup-service.sh
executable file
·63 lines (54 loc) · 1.61 KB
/
setup-service.sh
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
#!/bin/sh
# Using a git checkout in the current directory,
# set up the service (backend) part of agama
# so that it can be used by
# - the web frontend (as set up by setup.sh)
# - the CLI
# or both
# Exit on error; unset variables are an error
set -eu
MYDIR=$(realpath $(dirname $0))
# Helper:
# Ensure root privileges for the installation.
# In a testing container, we are root but there is no sudo.
if [ $(id --user) != 0 ]; then
SUDO=sudo
if [ $($SUDO id --user) != 0 ]; then
echo "We are not root and cannot sudo, cannot continue."
exit 1
fi
else
SUDO=""
fi
# Helper:
# Like "sed -e $1 < $2 > $3" but $3 is a system file owned by root
sudosed() {
echo "$2 -> $3"
sed -e "$1" "$2" | $SUDO tee "$3" > /dev/null
}
# - Install the service dependencies
(
cd $MYDIR/service
bundle config set --local path 'vendor/bundle'
bundle install
)
# - D-Bus configuration
$SUDO cp -v $MYDIR/service/share/dbus.conf /usr/share/dbus-1/agama.conf
# - D-Bus activation configuration
# (this could be left out but then we would rely
# on the manual startup via bin/agamactl)
(
cd $MYDIR/service/share
DBUSDIR=/usr/share/dbus-1/agama-services
$SUDO mkdir -p $DBUSDIR
for SVC in org.opensuse.Agama*.service; do
sudosed "s@\(Exec\)=/usr/bin/@\1=$MYDIR/service/bin/@" $SVC $DBUSDIR/$SVC
done
sudosed "s@\(ExecStart\)=/usr/bin/@\1=$MYDIR/service/bin/@" \
systemd.service /usr/lib/systemd/system/agama.service
$SUDO systemctl daemon-reload
# Start the separate dbus-daemon for Agama
$SUDO systemctl start agama.service
)
# - Make sure NetworkManager is running
$SUDO systemctl start NetworkManager