updated RDEPEND to use pkgconfig olny if a init script is provided
[flow-s-ebuilds:flow-s-ebuilds.git] / net-p2p / bitcoin / files / bitcoin.initd
1 #!/sbin/runscript
2 # Distributed under the terms of the GNU General Public License, v2 or later
3
4 depend() {
5         need net
6 }
7
8 checkconfig() {
9         if [[ "${BITCOIN_USER}" == "" ]] ; then
10                 eerror "Please edit /etc/conf.d/bitcoin"
11                 eerror "A user must be specified to run bitcoin as that user."
12                 eerror "Modify USER to your needs (you may also add a group after a colon)"
13                 return 1
14         fi
15         if ! `getent passwd | cut -d ':' -f 1 | grep $( echo "${BITCOIN_USER}" | cut -d ':' -f 1 ) -sq` ; then
16                 eerror "Please edit /etc/conf.d/bitcoin"
17                 eerror "Specified user must exist!"
18                 return 1
19         fi
20         if ! `echo "${BITCOIN_USER}" | grep ':' -sq` ; then
21                 return 0
22         else
23                 if ! `cut -d ':' -f 1 /etc/group | grep $( echo "${BITCOIN_USER}" | cut -d ':' -f 2 ) -sq` ; then
24                         eerror "Please edit /etc/conf.d/bitcoin"
25                         eerror "Specified group must exist!"
26                         return 1
27                 fi
28         fi
29         return 0
30 }
31
32 start() {
33         checkconfig || return 1
34         ebegin "Starting Bitcoin daemon"
35         if test -z "${BITCOIN_OPTS}"; then
36            BITCOIN_OPTS="-min"
37         fi
38
39         pkg-config openrc
40         if [ $? = 0 ]; then
41            start_openrc
42         else
43            start_baselayout
44         fi
45 }
46
47 stop() {
48        ebegin "Stopping Bitcoin daemon"
49
50        pkg-config openrc
51        if [ $? = 0 ]; then
52            stop_openrc
53        else
54            stop_baselayout
55        fi
56 }
57
58 start_openrc() {
59         start-stop-daemon \
60         --start --user "${BITCOIN_USER}" --name bitcoind \
61         --pidfile /var/run/bitcoind.pid --make-pidfile \
62         --env HOME="/var/lib/bitcoin" --exec /usr/bin/bitcoind \
63         --chuid "${BITCOIN_USER}" \
64         --nicelevel "${NICELEVEL}" \
65         --background \
66         --wait 2000 \
67         -- "${BITCOIN_OPTS}"
68         eend $?
69 }
70
71 stop_openrc() {
72         start-stop-daemon --stop --user "${BITCOIN_USER}" \
73         --name bitcoind --pidfile /var/run/bitcoind.pid \
74         --wait 10000 \
75         --progress
76         eend $?
77 }
78
79 start_baselayout() {
80         start-stop-daemon \
81         start --user "${BITCOIN_USER}" --name bitcoind \
82         pidfile /var/run/bitcoind.pid --make-pidfile \
83         env HOME="/var/lib/bitcoin" --exec /usr/bin/bitcoind \
84         chuid "${BITCOIN_USER}" \
85         nicelevel "${NICELEVEL}" \
86         background \
87         "${BITCOIN_OPTS}"
88         eend $?
89 }
90
91 stop_baselayout() {
92         start-stop-daemon \
93         --stop \
94         --user "${BITCOIN_USER}" \
95         --name bitcoind \
96         --pidfile /var/run/bitcoind.pid
97         eend $?
98 }