commit:     dc1afc0e320e959cbf212b4e5f1f0bfae87778f2
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 25 12:51:20 2017 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Tue Jul 25 12:51:54 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dc1afc0e

sys-process/fcron: Add support for /etc/conf.d/fcron (bug #622990)

Package-Manager: Portage-2.3.5, Repoman-2.3.2

 ...ron-3.3.0_beta.ebuild => fcron-3.2.1-r2.ebuild} |  13 ++-
 ....3.0_beta.ebuild => fcron-3.3.0_beta-r1.ebuild} |   4 +-
 sys-process/fcron/files/fcron.confd                |   7 ++
 sys-process/fcron/files/fcron.init-r5              | 100 +++++++++++++++++++++
 4 files changed, 115 insertions(+), 9 deletions(-)

diff --git a/sys-process/fcron/fcron-3.3.0_beta.ebuild 
b/sys-process/fcron/fcron-3.2.1-r2.ebuild
similarity index 96%
copy from sys-process/fcron/fcron-3.3.0_beta.ebuild
copy to sys-process/fcron/fcron-3.2.1-r2.ebuild
index 0ec297cae21..604e9afb710 100644
--- a/sys-process/fcron/fcron-3.3.0_beta.ebuild
+++ b/sys-process/fcron/fcron-3.2.1-r2.ebuild
@@ -7,15 +7,12 @@ WANT_AUTOMAKE=none
 
 inherit cron pam flag-o-matic user autotools versionator systemd
 
-MY_PV=${PV/_beta/}
-MY_P=${PN}-${MY_PV}
-
 DESCRIPTION="A command scheduler with extended capabilities over cron and 
anacron"
 HOMEPAGE="http://fcron.free.fr/";
-SRC_URI="http://fcron.free.fr/archives/${MY_P}.src.tar.gz -> ${P}.tar.gz"
+SRC_URI="http://fcron.free.fr/archives/${P}.src.tar.gz";
 
 LICENSE="GPL-2"
-KEYWORDS=""
+KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
 IUSE="audit debug pam selinux l10n_fr +mta +system-crontab readline"
 
 DEPEND="audit? ( sys-process/audit )
@@ -33,8 +30,6 @@ PATCHES=(
        "${FILESDIR}"/${PN}-3.2.1-configure-fix-audit-parameter-check.patch
 )
 
-S="${WORKDIR}/${MY_P}"
-
 pkg_setup() {
        enewgroup fcron
        enewuser fcron -1 -1 -1 fcron
@@ -166,9 +161,11 @@ src_install() {
        EOF
        newpamd "${T}"/fcrontab.pam fcrontab
 
-       newinitd "${FILESDIR}"/fcron.init.4 fcron
+       newinitd "${FILESDIR}"/fcron.init-r5 fcron
        systemd_newunit "${S}/script/fcron.init.systemd" fcron.service
 
+       newconfd "${FILESDIR}"/fcron.confd fcron
+
        local DOCS=( MANIFEST VERSION "${WORKDIR}/crontab")
        DOCS+=( doc/en/txt/{readme,thanks,faq,todo,relnotes,changes}.txt )
 

diff --git a/sys-process/fcron/fcron-3.3.0_beta.ebuild 
b/sys-process/fcron/fcron-3.3.0_beta-r1.ebuild
similarity index 98%
rename from sys-process/fcron/fcron-3.3.0_beta.ebuild
rename to sys-process/fcron/fcron-3.3.0_beta-r1.ebuild
index 0ec297cae21..10f03c92f51 100644
--- a/sys-process/fcron/fcron-3.3.0_beta.ebuild
+++ b/sys-process/fcron/fcron-3.3.0_beta-r1.ebuild
@@ -166,9 +166,11 @@ src_install() {
        EOF
        newpamd "${T}"/fcrontab.pam fcrontab
 
-       newinitd "${FILESDIR}"/fcron.init.4 fcron
+       newinitd "${FILESDIR}"/fcron.init-r5 fcron
        systemd_newunit "${S}/script/fcron.init.systemd" fcron.service
 
+       newconfd "${FILESDIR}"/fcron.confd fcron
+
        local DOCS=( MANIFEST VERSION "${WORKDIR}/crontab")
        DOCS+=( doc/en/txt/{readme,thanks,faq,todo,relnotes,changes}.txt )
 

diff --git a/sys-process/fcron/files/fcron.confd 
b/sys-process/fcron/files/fcron.confd
new file mode 100644
index 00000000000..ea907d8e80b
--- /dev/null
+++ b/sys-process/fcron/files/fcron.confd
@@ -0,0 +1,7 @@
+# /etc/conf.d/fcron
+
+# Options to fcron
+# See fcron(8) for more details
+# Notes:
+# * Do not specify another CONFIGFILE
+#FCRON_OPTS=""

diff --git a/sys-process/fcron/files/fcron.init-r5 
b/sys-process/fcron/files/fcron.init-r5
new file mode 100644
index 00000000000..4021cb2fbb3
--- /dev/null
+++ b/sys-process/fcron/files/fcron.init-r5
@@ -0,0 +1,100 @@
+#!/sbin/openrc-run
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+FCRON_INSTANCE="${SVCNAME##*.}"
+FCRON_OPTS=${FCRON_OPTS:-""}
+
+if [ -n "${FCRON_INSTANCE}" ] && [ "${SVCNAME}" != "fcron" ]; then
+       FCRON_CONFIGFILE="/etc/fcron/fcron.${FCRON_INSTANCE}.conf"
+else
+       FCRON_CONFIGFILE="/etc/fcron/fcron.conf"
+fi
+
+getconfig() {
+       local key="$1"
+       local value_default="$2"
+       local value=
+
+       if service_started; then
+               value="$(service_get_value "${key}")"
+       fi
+
+       if [ -z "${value}" ] && [ -r "${FCRON_CONFIGFILE}" ]; then
+               value="$(sed -n -e 's:^'"${key}"'[ \t]*=[ \t]*::p' 
"${FCRON_CONFIGFILE}")"
+       fi
+
+       if [ -z "${value}" ]; then
+               # Value not explicitly set in the configfile or configfile does 
not exist
+               # or is not readable
+               echo "${value_default}"
+       else
+               echo "${value}"
+       fi
+
+       return 0
+}
+
+depend() {
+       config "${FCRON_CONFIGFILE}"
+
+       use clock logger
+       need hostname
+
+       # provide the cron service if we are the main instance
+       [ "${SVCNAME}" = "fcron" ] && provide cron
+}
+
+
+command="/usr/libexec/fcron"
+command_args="${FCRON_OPTS} -c \"${FCRON_CONFIGFILE}\""
+start_stop_daemon_args=${FCRON_SSDARGS:-"--wait 1000"}
+pidfile="$(getconfig pidfile /run/fcron.pid)"
+fcrontabs="$(getconfig fcrontabs /var/spool/fcron)"
+fifofile="$(getconfig fifofile /run/fcron.fifo)"
+required_files="${FCRON_CONFIGFILE}"
+
+extra_started_commands="reload"
+
+reload() {
+        start-stop-daemon --signal HUP --pidfile "${pidfile}"
+}
+
+start_pre() {
+       if [ "${SVCNAME}" != "fcron" ]; then
+               local _has_invalid_instance_cfg=0
+
+               if [ "${pidfile}" = "/run/fcron.pid" ]; then
+                       eerror "You cannot use the same pidfile like the 
default instance!"
+                       eerror "Please adjust your 'pidfile' setting in 
'${FCRON_CONFIGFILE}'."
+                       _has_invalid_instance_cfg=1
+               fi
+
+               if [ "${fcrontabs}" = "/var/spool/fcron" ]; then
+                       eerror "You cannot use the same fcrontabs location like 
the default instance!"
+                       eerror "Please adjust your 'fcrontabs' setting in 
'${FCRON_CONFIGFILE}'."
+                       _has_invalid_instance_cfg=1
+               fi
+
+               if [ "${fifofile}" = "/run/fcron.fifo" ]; then
+                       eerror "You cannot use the same fifo file like the 
default instance!"
+                       eerror "Please adjust your 'fifofile' setting in 
'${FCRON_CONFIGFILE}'."
+                       _has_invalid_instance_cfg=1
+               fi
+
+               [ ${_has_invalid_instance_cfg} -ne 0 ] && return 1
+       fi
+
+       checkpath --file "${FCRON_CONFIGFILE}" --owner root:fcron --mode 0640
+
+       if [ ! -d "${fcrontabs}" ]; then
+               ebegin "Creating missing spooldir '${fcrontabs}'"
+               ${command} --newspooldir "${fcrontabs}"
+               eend $?
+       fi
+}
+
+start_post() {
+       service_set_value fcrontabs "${fcrontabs}"
+       service_set_value fifofile "${fifofile}"
+}

Reply via email to