forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
EBuild changes: =============== - Migrated to EAPI=6. - Automagic on sys-process/audit removed. (Bug #540446) - Previously we did only install cronjobs which remove lastrun lock files however we did not install a cronjob which actually called "run-crons" in the default systab when using USE=-system-crontab with the result that we never actually executed any cronjob from /etc/cron.{hourly,daily,weekly,monthly}. This was fixed by adding the missing job. (Bug #464278) - Default systab rewritten to clarify the purpose of /etc/crontab when the package was built with USE=system-crontab. (Bug #466900, #467316) - Systab commands are now using absolute path. (Bug #525242) - OpenRC runscript updated - Shebang updated to use openrc-run. (Bug #573846) - Multi instance support fixed which was broken due to missing quotes in getconfig(). (Bug #520264, #533786) - Runscript now "use clock" instead of "need clock". (Bug #546138) - Runscript is now more reliable because it waits 1000ms per default to ensure that fcron daemon is really up and running and has not terminated due to a problem. Gentoo-Bug: https://bugs.gentoo.org/464278 Gentoo-Bug: https://bugs.gentoo.org/466900 Gentoo-Bug: https://bugs.gentoo.org/467316 Gentoo-Bug: https://bugs.gentoo.org/520264 Gentoo-Bug: https://bugs.gentoo.org/525242 Gentoo-Bug: https://bugs.gentoo.org/533786 Gentoo-Bug: https://bugs.gentoo.org/540446 Gentoo-Bug: https://bugs.gentoo.org/546138 Gentoo-Bug: https://bugs.gentoo.org/573846 Package-Manager: portage-2.3.2
- Loading branch information
Showing
5 changed files
with
384 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
DIST fcron-3.1.1.src.tar.gz 597094 SHA256 449e21f09f80bd419d87165ba15dad94ad8ab215b7946fcf805b5340f019e952 SHA512 ce20f0aee72521f809af2be13ba797e0f6ac65f12f7797e67a4db56c3b111d24c499c135ec1c948d8385ded415da25a258daf90051a75f603f7322c23dbca945 WHIRLPOOL e3f4d056dd9926629c7ea36de2d5d768f510f256c6cdf0b051baaf5fda776d6295dd8a3213c32765d871cd6bdfc8bbb0bc7b5b0ab1da42c78441e19458594abe | ||
DIST fcron-3.1.2.src.tar.gz 592409 SHA256 1c9299baab86e2b141031193c98ccd2e1b52d97a023b45a9e80266372ab11a5d SHA512 14aec35031449bb8abb81bee781215a09a6cd1d8e08a002ca391ea84c05b9c1cd07ef383e4fc3ee4ae928b60ad75f3f91114a41336110283a07fab64dc770503 WHIRLPOOL 0ec40e9921c187d87247a2bd5b0f807dda6a780e313608ba5c0933d1c470313b9db7f6d5b0ff15b7a853e966bb738c4bbac1c80a54541f402c2c51044f53cca9 | ||
DIST fcron-3.2.0.src.tar.gz 595408 SHA256 eb13b86ed96805d117e19847f1da30b834f1990f7ef4c38f5007234d44679564 SHA512 97b200dfec02ca0aba76abf3cf71f54608fbadf46aa29d81d7316920fb1bebbba81d0118925f658cd9062f362b6075467c7f595e736b47616995a95958ae776b WHIRLPOOL 58cd9e7484181354518a53b99a2465608ba94001cf5908342b0e195b7436c0296b6a60a428f6d4136c65ce02644fa568e3a706962d76f6e59fcbe948b4bf0afc | ||
DIST fcron-3.2.1.src.tar.gz 601142 SHA256 6114d0a39a32853669c0c0ba0f96d92920e7cabca3ff1edf37d25750403e5f6a SHA512 ddfd3e3a297b843c924aacccffaa5c1c6b300497f39daa1cdb90dc4cf4bc757042b0b2c1f055c119c8128c64d830ee0e8757091610432f5ffcacca25d369e5cd WHIRLPOOL 39b44f88b09be40705ca5d1f421aa4bff6d9a00fbcb572b9012fb1dd65a24c3b1b746196e722bc544a6c0db062625d9981c60956a7fb7c34e6cb630202bd5a2b |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,254 @@ | ||
# Copyright 1999-2016 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
# $Id$ | ||
|
||
EAPI="6" | ||
|
||
WANT_AUTOMAKE=none | ||
|
||
inherit cron pam flag-o-matic user autotools versionator systemd | ||
|
||
DESCRIPTION="A command scheduler with extended capabilities over cron and anacron" | ||
HOMEPAGE="http://fcron.free.fr/" | ||
SRC_URI="http://fcron.free.fr/archives/${P}.src.tar.gz" | ||
|
||
LICENSE="GPL-2" | ||
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 ) | ||
pam? ( virtual/pam ) | ||
readline? ( sys-libs/readline:= ) | ||
selinux? ( sys-libs/libselinux )" | ||
|
||
RDEPEND="${DEPEND} | ||
app-misc/editor-wrapper | ||
mta? ( virtual/mta ) | ||
pam? ( sys-auth/pambase )" | ||
|
||
PATCHES=( | ||
"${FILESDIR}"/${PN}-3.1.1-noreadline.patch | ||
"${FILESDIR}"/${PN}-3.2.1-configure-fix-audit-parameter-check.patch | ||
) | ||
|
||
pkg_setup() { | ||
enewgroup fcron | ||
enewuser fcron -1 -1 -1 fcron | ||
rootuser=$(egetent passwd 0 | cut -d ':' -f 1) | ||
[[ ${rootuser} ]] || rootuser=root | ||
rootgroup=$(egetent group 0 | cut -d ':' -f 1) | ||
[[ ${rootgroup} ]] || rootgroup=root | ||
} | ||
|
||
src_prepare() { | ||
default | ||
|
||
# respect LDFLAGS | ||
sed -i "s:\(@LIBS@\):\$(LDFLAGS) \1:" Makefile.in || die "sed failed" | ||
|
||
# Adjust fcrontab path | ||
sed -i -e 's:/etc/fcrontab:/etc/fcron/fcrontab:' script/check_system_crontabs.sh || die | ||
|
||
mv configure.in configure.ac || die | ||
|
||
eautoconf | ||
} | ||
|
||
src_configure() { | ||
# Don't try to pass --with-debug as it'll play with cflags as | ||
# well, and run foreground which is a _very_ nasty idea for | ||
# Gentoo. | ||
use debug && append-cppflags -DDEBUG | ||
|
||
# bindir is used just for calling fcronsighup | ||
econf \ | ||
--with-cflags="${CFLAGS}" \ | ||
--bindir=/usr/libexec \ | ||
--sbindir=/usr/libexec \ | ||
$(use_with audit) \ | ||
$(use_with mta sendmail) \ | ||
$(use_with pam) \ | ||
$(use_with readline) \ | ||
$(use_with selinux) \ | ||
--sysconfdir=/etc/fcron \ | ||
--with-username=fcron \ | ||
--with-groupname=fcron \ | ||
--with-piddir=/run \ | ||
--with-spooldir=/var/spool/fcron \ | ||
--with-fifodir=/run \ | ||
--with-fcrondyn=yes \ | ||
--disable-checks \ | ||
--with-editor=/usr/libexec/editor \ | ||
--with-shell=/bin/sh \ | ||
--without-db2man \ | ||
--without-dsssl-dir \ | ||
--with-rootname=${rootuser} \ | ||
--with-rootgroup=${rootgroup} \ | ||
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)" | ||
} | ||
|
||
src_compile() { | ||
default | ||
|
||
# bug #216460 | ||
sed -i \ | ||
-e 's:/usr/local/etc/fcron:/etc/fcron/fcron:g' \ | ||
-e 's:/usr/local/etc:/etc:g' \ | ||
-e 's:/usr/local/:/usr/:g' \ | ||
doc/*/*/*.{txt,1,5,8,html} \ | ||
|| die "unable to fix documentation references" | ||
} | ||
|
||
src_install() { | ||
keepdir /var/spool/fcron | ||
|
||
exeinto /usr/libexec | ||
doexe fcron fcronsighup | ||
|
||
dobin fcrondyn fcrontab | ||
|
||
insinto /etc/fcron | ||
doins files/fcron.{allow,deny,conf} | ||
|
||
if use system-crontab; then | ||
dosym fcrontab /usr/bin/crontab | ||
|
||
exeinto /usr/libexec | ||
newexe script/check_system_crontabs.sh check_system_crontabs | ||
|
||
insinto /etc/fcron | ||
newins "${FILESDIR}"/fcrontab.2 fcrontab | ||
|
||
fowners ${rootuser}:fcron /etc/fcron/fcrontab | ||
fperms 0640 /etc/fcron/fcrontab | ||
|
||
insinto /etc | ||
newins "${FILESDIR}"/crontab.2 crontab | ||
fi | ||
|
||
fowners fcron:fcron \ | ||
/var/spool/fcron \ | ||
/usr/bin/fcron{dyn,tab} | ||
|
||
# fcronsighup needs to be suid root, because it sends a HUP to the | ||
# running fcron daemon, but only has to be called by the fcron group | ||
# anyway | ||
fowners ${rootuser}:fcron \ | ||
/usr/libexec/fcronsighup \ | ||
/etc/fcron/fcron.{allow,deny,conf} \ | ||
/etc/fcron | ||
|
||
fperms 6770 /var/spool/fcron | ||
fperms 6775 /usr/bin/fcron{dyn,tab} | ||
|
||
fperms 4710 /usr/libexec/fcronsighup | ||
|
||
fperms 0750 /etc/fcron | ||
fperms 0640 /etc/fcron/fcron.{allow,deny,conf} | ||
|
||
pamd_mimic system-services fcron auth account session | ||
cat > "${T}"/fcrontab.pam <<- EOF | ||
# Don't ask for the user's password; fcrontab will only allow to | ||
# change user if running as root. | ||
auth sufficient pam_permit.so | ||
# Still use the system-auth stack for account and session as the | ||
# sysadmin might have set up stuff properly, and also avoids | ||
# sidestepping limits (since fcrontab will run \$EDITOR). | ||
account include system-auth | ||
session include system-auth | ||
EOF | ||
newpamd "${T}"/fcrontab.pam fcrontab | ||
|
||
newinitd "${FILESDIR}"/fcron.init.4 fcron | ||
systemd_newunit "${S}/script/fcron.init.systemd" fcron.service | ||
|
||
local DOCS=( MANIFEST VERSION "${FILESDIR}/crontab") | ||
DOCS+=( doc/en/txt/{readme,thanks,faq,todo,relnotes,changes}.txt ) | ||
|
||
local HTML_DOCS=( doc/en/HTML/. ) | ||
|
||
einstalldocs | ||
|
||
newdoc files/fcron.conf fcron.conf.sample | ||
doman doc/en/man/*.{1,5,8} | ||
|
||
for lang in fr; do | ||
use l10n_${lang} || continue | ||
|
||
doman -i18n=${lang} doc/${lang}/man/*.{1,5,8} | ||
|
||
docinto html/${lang} | ||
dodoc -r doc/${lang}/HTML/. | ||
done | ||
} | ||
|
||
pkg_postinst() { | ||
if [[ -z "${REPLACING_VERSIONS}" ]]; then | ||
# This is a new installation | ||
elog "Make sure you execute" | ||
elog "" | ||
elog " # emerge --config ${CATEGORY}/${PN}" | ||
elog "" | ||
elog "to install the default systab on this system." | ||
else | ||
local v | ||
for v in ${REPLACING_VERSIONS}; do | ||
if ! version_is_at_least "3.2.1" ${v}; then | ||
# This is an upgrade | ||
|
||
elog "fcron's default systab was updated since your last installation." | ||
elog "You can use" | ||
elog "" | ||
elog " # emerge --config ${CATEGORY}/${PN}" | ||
elog "" | ||
elog "to re-install systab (do not call this command before you" | ||
elog "have merged your configuration files)." | ||
|
||
# Show this elog only once | ||
break | ||
fi | ||
done | ||
fi | ||
|
||
if ! use system-crontab; then | ||
echo "" | ||
ewarn "Remember that fcron will *not* use /etc/cron.d in this configuration" | ||
ewarn "due to USE=-system-crontab!" | ||
echo "" | ||
fi | ||
} | ||
|
||
pkg_config() { | ||
if [[ $(fcrontab -l -u systab 2>/dev/null) ]]; then | ||
eerror "We're not going to make any change to your systab as long as" | ||
eerror "it contains data; please clear it before proceeding." | ||
eerror "You can do that with" | ||
eerror "" | ||
eerror " # fcrontab -u systab -r" | ||
eerror "" | ||
eerror "However you are advised to do this by hand to review existing" | ||
eerror "systab just in case." | ||
return 1 | ||
fi | ||
|
||
if use system-crontab; then | ||
elog "This is going to set up fcron to execute check_system_crontabs." | ||
elog "In this configuration, /etc/crontab and /etc/cron.d are respected." | ||
elog "Per default fcron will check for modifications every 10 minutes." | ||
/usr/libexec/check_system_crontabs -v -i -f | ||
else | ||
elog "This is going to set up fcron to set up a default systab that" | ||
elog "executes /etc/cron.{hourly,daily,weekly,monthly} but will ignore" | ||
elog "/etc/crontab and /etc/cron.d." | ||
fcrontab -u systab - <<- EOF | ||
!serial(true) | ||
00 * * * * /bin/rm -f /var/spool/cron/lastrun/cron.hourly | ||
00 00 * * * /bin/rm -f /var/spool/cron/lastrun/cron.daily | ||
00 00 * * 6 /bin/rm -f /var/spool/cron/lastrun/cron.weekly | ||
00 00 1 * * /bin/rm -f /var/spool/cron/lastrun/cron.monthly | ||
*/10 * * * * /usr/bin/test -x /usr/sbin/run-crons && /usr/sbin/run-crons | ||
!serial(false) | ||
EOF | ||
fi | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# /etc/crontab: | ||
# This is fcron's special systab and *not* root's crontab! | ||
|
||
# Global variables | ||
SHELL=/bin/bash | ||
PATH=/sbin:/bin:/usr/sbin:/usr/bin | ||
MAILTO=root | ||
HOME=/ | ||
|
||
# "run-crons" from sys-process/cronbase package doesn't allow selective | ||
# runs like "run-parts" from sys-apps/debianutils. So every time | ||
# "run-crons" gets executed it loops through | ||
# /etc/cron.{hourly,daily,weekly,monthly} and executes one after another if | ||
# lastrun lock file isn't in place. | ||
# Without fcron's "serial(true)" option it would be possible that a lastrun | ||
# lock file which should have been removed still exists when "run-crons" | ||
# starts so that a promptly execution of all cronjobs isn't always | ||
# guaranteed. | ||
|
||
!serial(true) | ||
00 * * * * /bin/rm -f /var/spool/cron/lastrun/cron.hourly | ||
00 00 * * * /bin/rm -f /var/spool/cron/lastrun/cron.daily | ||
00 00 * * 6 /bin/rm -f /var/spool/cron/lastrun/cron.weekly | ||
00 00 1 * * /bin/rm -f /var/spool/cron/lastrun/cron.monthly | ||
*/10 * * * * /usr/bin/test -x /usr/sbin/run-crons && /usr/sbin/run-crons | ||
!serial(false) |
30 changes: 30 additions & 0 deletions
30
sys-process/fcron/files/fcron-3.2.1-configure-fix-audit-parameter-check.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
From cc7a684862fee31c442c49d6a537d86979c23220 Mon Sep 17 00:00:00 2001 | ||
From: Thomas Deutschmann <[email protected]> | ||
Date: Thu, 17 Nov 2016 17:19:35 +0100 | ||
Subject: [PATCH] configure: Fix --with-audit parameter check | ||
|
||
Due to a missing "$" the variable "$useaudit" was never checked for | ||
0 value with the result that you cannot disable building against | ||
libaudit. | ||
|
||
Gentoo-Bug: https://bugs.gentoo.org/540446 | ||
--- | ||
configure.in | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
diff --git a/configure.in b/configure.in | ||
index 7e7634f..708d1dd 100644 | ||
--- a/configure.in | ||
+++ b/configure.in | ||
@@ -822,7 +822,7 @@ AC_ARG_WITH(audit, | ||
;; | ||
esac ] | ||
) | ||
-if test useaudit = "0"; then | ||
+if test "$useaudit" = 0; then | ||
AC_MSG_RESULT(no) | ||
elif test "$useaudit" = "1" && test "$auditavail" != 1; then | ||
useaudit=0 | ||
-- | ||
2.10.2 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#!/sbin/openrc-run | ||
# Copyright 1999-2016 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
# $Id$ | ||
|
||
FCRON_INSTANCE="${SVCNAME##*.}" | ||
|
||
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="-c \"${FCRON_CONFIGFILE}\"" | ||
start_stop_daemon_args=${FCRON_SSDARGS:-"--wait 1000"} | ||
pidfile="$(getconfig pidfile /run/fcron.pid)" | ||
fcrontabs="$(getconfig fcrontabs /var/spool/fcron)" | ||
required_files="${FCRON_CONFIGFILE}" | ||
|
||
extra_started_commands="reload" | ||
|
||
reload() { | ||
start-stop-daemon --signal HUP --pidfile "${pidfile}" | ||
} | ||
|
||
start_pre() { | ||
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}" | ||
} |