net-misc/chrony: Set default PID file and check for it
authorJeroen Roovers <jer@gentoo.org>
Tue, 4 Sep 2018 09:31:04 +0000 (11:31 +0200)
committerJeroen Roovers <jer@gentoo.org>
Tue, 4 Sep 2018 09:32:19 +0000 (11:32 +0200)
Fixes: https://bugs.gentoo.org/665212
Package-Manager: Portage-2.3.49, Repoman-2.3.10

net-misc/chrony/chrony-3.4_pre1-r1.ebuild [moved from net-misc/chrony/chrony-3.4_pre1.ebuild with 93% similarity]
net-misc/chrony/files/chronyd.init-r2 [new file with mode: 0644]

similarity index 93%
rename from net-misc/chrony/chrony-3.4_pre1.ebuild
rename to net-misc/chrony/chrony-3.4_pre1-r1.ebuild
index c3aed38aa99e79d0bf5bf015fe6471ce300758dd..a39dc7b24dce2f8b614839db3dd2b8a2f014d4be 100644 (file)
@@ -38,9 +38,8 @@ S="${WORKDIR}/${P/_/-}"
 
 src_prepare() {
        sed -i \
-               -e 's:/etc/chrony\.:/etc/chrony/chrony.:g' \
-               -e 's:/var/run:/run:g' \
-               conf.c doc/*.man.in examples/* || die
+               -e 's:/etc/chrony\.conf:/etc/chrony/chrony.conf:g' \
+               doc/* examples/* || die
 
        default
 }
@@ -75,12 +74,13 @@ src_configure() {
                $(usex rtc '' --disable-rtc) \
                ${CHRONY_EDITLINE} \
                ${EXTRA_ECONF} \
-               --docdir=/usr/share/doc/${PF} \
                --chronysockdir=/run/chrony \
+               --disable-sechash \
+               --docdir=/usr/share/doc/${PF} \
                --mandir=/usr/share/man \
                --prefix=/usr \
                --sysconfdir=/etc/chrony \
-               --disable-sechash \
+               --with-pidfile="${EPREFIX}/run/chrony/chronyd.pid"
                --without-nss \
                --without-tomcrypt
        "
@@ -97,7 +97,7 @@ src_compile() {
 src_install() {
        default
 
-       newinitd "${FILESDIR}"/chronyd.init-r1 chronyd
+       newinitd "${FILESDIR}"/chronyd.init-r2 chronyd
        newconfd "${FILESDIR}"/chronyd.conf chronyd
 
        insinto /etc/${PN}
diff --git a/net-misc/chrony/files/chronyd.init-r2 b/net-misc/chrony/files/chronyd.init-r2
new file mode 100644 (file)
index 0000000..4892a57
--- /dev/null
@@ -0,0 +1,70 @@
+#!/sbin/openrc-run
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+       use dns
+}
+
+checkconfig() {
+       # Note that /etc/chrony/chrony.keys is *NOT* checked. This
+       # is because the user may have specified another key
+       # file, and we don't want to force the user to use that
+       # exact name for the key file.
+       if [ ! -f "${CFGFILE}" ] ; then
+               eerror "Please create ${CFGFILE} and the"
+               eerror "chrony key file (usually /etc/chrony/chrony.keys)"
+               eerror "by using the"
+               eerror ""
+               eerror "        chrony.conf.example"
+               eerror "        chrony.keys.example"
+               eerror ""
+               eerror "files (from the documentation directory)"
+               eerror "as templates."
+               return 1
+       else
+               # Actually, I tried it, and chrony seems to ignore the pidfile
+               # option. I'm going to leave it here anyway, since you never
+               # know if it might be handy
+               PIDFILE=`awk '/^ *pidfile/{print $2}' "${CFGFILE}"`
+               [ -z "${PIDFILE}" ] && PIDFILE=/run/chrony/chronyd.pid
+       fi
+       return 0
+}
+
+setxtrarg() {
+       if [ -c /dev/rtc ]; then
+               grep -q '^rtcfile' "${CFGFILE}" && ARGS="${ARGS} -s"
+       fi
+       grep -q '^dumponexit$' "${CFGFILE}" && ARGS="${ARGS} -r"
+       return 0
+}
+
+start() {
+       checkconfig || return $?
+       setxtrarg
+
+       [ -n "${PIDFILE}" ] || PIDFILE=/run/chronyd.pid
+
+       ebegin "Starting chronyd"
+       start-stop-daemon \
+               --start \
+               --quiet \
+               --exec /usr/sbin/chronyd \
+               --pidfile "${PIDFILE}" \
+               -- -f "${CFGFILE}" ${ARGS}
+       eend $? "Failed to start chronyd"
+}
+
+stop() {
+       checkconfig || return $?
+
+       [ -n "${PIDFILE}" ] || PIDFILE=/run/chronyd.pid
+
+       ebegin "Stopping chronyd"
+       start-stop-daemon \
+               --stop \
+               --quiet \
+               --pidfile "${PIDFILE}"
+       eend $? "Failed to stop chronyd"
+}