summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /sys-process/cronbase
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'sys-process/cronbase')
-rw-r--r--sys-process/cronbase/cronbase-0.3.3.ebuild45
-rw-r--r--sys-process/cronbase/cronbase-0.3.4.ebuild33
-rw-r--r--sys-process/cronbase/cronbase-0.3.5-r1.ebuild33
-rw-r--r--sys-process/cronbase/cronbase-0.3.6.ebuild33
-rw-r--r--sys-process/cronbase/cronbase-0.3.7.ebuild33
-rwxr-xr-xsys-process/cronbase/files/run-crons-0.3.3110
-rwxr-xr-xsys-process/cronbase/files/run-crons-0.3.4114
-rwxr-xr-xsys-process/cronbase/files/run-crons-0.3.5130
-rwxr-xr-xsys-process/cronbase/files/run-crons-0.3.6133
-rwxr-xr-xsys-process/cronbase/files/run-crons-0.3.7195
-rw-r--r--sys-process/cronbase/metadata.xml5
11 files changed, 864 insertions, 0 deletions
diff --git a/sys-process/cronbase/cronbase-0.3.3.ebuild b/sys-process/cronbase/cronbase-0.3.3.ebuild
new file mode 100644
index 000000000000..b8cedbd679c3
--- /dev/null
+++ b/sys-process/cronbase/cronbase-0.3.3.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+inherit user
+
+DESCRIPTION="base for all cron ebuilds"
+HOMEPAGE="http://www.gentoo.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
+IUSE=""
+
+pkg_setup() {
+ enewgroup cron 16
+ enewuser cron 16 -1 /var/spool/cron cron
+}
+
+src_install() {
+ newsbin "${FILESDIR}"/run-crons-${PV} run-crons || die
+
+ diropts -m0750; keepdir /etc/cron.hourly
+ diropts -m0750; keepdir /etc/cron.daily
+ diropts -m0750; keepdir /etc/cron.weekly
+ diropts -m0750; keepdir /etc/cron.monthly
+
+ diropts -m0750 -o root -g cron; keepdir /var/spool/cron
+
+ diropts -m0750; keepdir /var/spool/cron/lastrun
+}
+
+pkg_postinst() {
+ #Portage doesn't enforce proper permissions on already existing"
+ #directories (bug 141619).
+ echo
+ elog "Forcing proper permissions on"
+ elog "${ROOT}etc/cron.{hourly,daily,weekly,monthly},"
+ elog "${ROOT}var/spool/cron/ and ${ROOT}var/spool/cron/lastrun/"
+ echo
+ chmod 0750 "${ROOT}"etc/cron.{hourly,daily,weekly,monthly} \
+ || die "chmod failed"
+ chmod 0750 "${ROOT}"var/spool/{cron,cron/lastrun} || die "chmod failed"
+ chown root:cron "${ROOT}var/spool/cron" || die "chown failed"
+}
diff --git a/sys-process/cronbase/cronbase-0.3.4.ebuild b/sys-process/cronbase/cronbase-0.3.4.ebuild
new file mode 100644
index 000000000000..a05a141f612e
--- /dev/null
+++ b/sys-process/cronbase/cronbase-0.3.4.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit user
+
+DESCRIPTION="base for all cron ebuilds"
+HOMEPAGE="http://www.gentoo.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
+IUSE=""
+
+S=${WORKDIR}
+
+pkg_setup() {
+ enewgroup cron 16
+ enewuser cron 16 -1 /var/spool/cron cron
+}
+
+src_install() {
+ newsbin "${FILESDIR}"/run-crons-${PV} run-crons
+
+ diropts -m0750
+ keepdir /etc/cron.{hourly,daily,weekly,monthly}
+
+ keepdir /var/spool/cron/lastrun
+ diropts -m0750 -o root -g cron
+ keepdir /var/spool/cron
+}
diff --git a/sys-process/cronbase/cronbase-0.3.5-r1.ebuild b/sys-process/cronbase/cronbase-0.3.5-r1.ebuild
new file mode 100644
index 000000000000..a05a141f612e
--- /dev/null
+++ b/sys-process/cronbase/cronbase-0.3.5-r1.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit user
+
+DESCRIPTION="base for all cron ebuilds"
+HOMEPAGE="http://www.gentoo.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
+IUSE=""
+
+S=${WORKDIR}
+
+pkg_setup() {
+ enewgroup cron 16
+ enewuser cron 16 -1 /var/spool/cron cron
+}
+
+src_install() {
+ newsbin "${FILESDIR}"/run-crons-${PV} run-crons
+
+ diropts -m0750
+ keepdir /etc/cron.{hourly,daily,weekly,monthly}
+
+ keepdir /var/spool/cron/lastrun
+ diropts -m0750 -o root -g cron
+ keepdir /var/spool/cron
+}
diff --git a/sys-process/cronbase/cronbase-0.3.6.ebuild b/sys-process/cronbase/cronbase-0.3.6.ebuild
new file mode 100644
index 000000000000..a05a141f612e
--- /dev/null
+++ b/sys-process/cronbase/cronbase-0.3.6.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit user
+
+DESCRIPTION="base for all cron ebuilds"
+HOMEPAGE="http://www.gentoo.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
+IUSE=""
+
+S=${WORKDIR}
+
+pkg_setup() {
+ enewgroup cron 16
+ enewuser cron 16 -1 /var/spool/cron cron
+}
+
+src_install() {
+ newsbin "${FILESDIR}"/run-crons-${PV} run-crons
+
+ diropts -m0750
+ keepdir /etc/cron.{hourly,daily,weekly,monthly}
+
+ keepdir /var/spool/cron/lastrun
+ diropts -m0750 -o root -g cron
+ keepdir /var/spool/cron
+}
diff --git a/sys-process/cronbase/cronbase-0.3.7.ebuild b/sys-process/cronbase/cronbase-0.3.7.ebuild
new file mode 100644
index 000000000000..a05a141f612e
--- /dev/null
+++ b/sys-process/cronbase/cronbase-0.3.7.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit user
+
+DESCRIPTION="base for all cron ebuilds"
+HOMEPAGE="http://www.gentoo.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
+IUSE=""
+
+S=${WORKDIR}
+
+pkg_setup() {
+ enewgroup cron 16
+ enewuser cron 16 -1 /var/spool/cron cron
+}
+
+src_install() {
+ newsbin "${FILESDIR}"/run-crons-${PV} run-crons
+
+ diropts -m0750
+ keepdir /etc/cron.{hourly,daily,weekly,monthly}
+
+ keepdir /var/spool/cron/lastrun
+ diropts -m0750 -o root -g cron
+ keepdir /var/spool/cron
+}
diff --git a/sys-process/cronbase/files/run-crons-0.3.3 b/sys-process/cronbase/files/run-crons-0.3.3
new file mode 100755
index 000000000000..1fbc3eee1332
--- /dev/null
+++ b/sys-process/cronbase/files/run-crons-0.3.3
@@ -0,0 +1,110 @@
+#!/bin/bash
+#
+# $Id$
+#
+# 12 Oct 2008; Thilo Bangert <bangert@gentoo.org> run-crons:
+# ignore emacs backup files (bug #237200)
+# include logging patch (bug #140869)
+#
+# 08 Mar 2005; Aaron Walker <ka0ttic@gentoo.org> run-crons:
+# Ignore the error messages from find caused by race conditions, since
+# we could care less about the error as long as the file has been removed.
+# See bug 8506.
+#
+# 06 May 2004; Aron Griffis <agriffis@gentoo.org> run-crons:
+# Make the locking actually work. The old code was racy.
+# Thanks to Mathias Gumz in bug 45155 for some cleanups.
+#
+# 23 Jun 2002; Jon Nelson <jnelson@gentoo.org> run-crons:
+# fixed a race condition, where cron jobs and run-crons wanted to
+# delete touch files
+#
+# 20 Apr 2002; Thilo Bangert <bangert@gentoo.org> run-crons:
+# moved lastrun directory to /var/spool/cron/lastrun
+#
+# Author: Achim Gottinger <achim@gentoo.org>
+#
+# Mostly copied from SuSE
+#
+# this script looks into /etc/cron.[hourly|daily|weekly|monthly]
+# for scripts to be executed. The info about last run is stored in
+# /var/spool/cron/lastrun
+
+LOCKDIR=/var/spool/cron/lastrun
+LOCKFILE=${LOCKDIR}/lock
+
+mkdir -p ${LOCKDIR}
+
+# Make sure we're not running multiple instances at once.
+# Try twice to lock, otherwise give up.
+for ((i = 0; i < 2; i = i + 1)); do
+ ln -sn $$ ${LOCKFILE} 2>/dev/null && break
+
+ # lock failed, check for a running process.
+ # handle both old- and new-style locking.
+ cronpid=$(readlink ${LOCKFILE} 2>/dev/null) ||
+ cronpid=$(cat ${LOCKFILE} 2>/dev/null) ||
+ continue # lockfile disappeared? try again
+
+ # better than kill -0 because we can verify that it's really
+ # another run-crons process
+ if [[ $(</proc/${cronpid}/cmdline) == $(</proc/$$/cmdline) ]] 2>/dev/null; then
+ # whoa, another process is really running
+ exit 0
+ else
+ rm -f ${LOCKFILE}
+ fi
+done
+
+# Check to make sure locking was successful
+if [[ ! -L ${LOCKFILE} ]]; then
+ echo "Can't create or read existing ${LOCKFILE}, giving up"
+ exit 1
+fi
+
+# Set a trap to remove the lockfile when we're finished
+trap "rm -f ${LOCKFILE}" 0 1 2 3 15
+
+
+for BASE in hourly daily weekly monthly ; do
+ CRONDIR=/etc/cron.${BASE}
+
+ test -d $CRONDIR || continue
+
+ if [ -e ${LOCKDIR}/cron.$BASE ] ; then
+ case $BASE in
+ hourly)
+ #>= 1 hour, 5 min -=> +65 min
+ TIME="-cmin +65" ;;
+ daily)
+ #>= 1 day, 5 min -=> +1445 min
+ TIME="-cmin +1445" ;;
+ weekly)
+ #>= 1 week, 5 min -=> +10085 min
+ TIME="-cmin +10085" ;;
+ monthly)
+ #>= 31 days, 5 min -=> +44645 min
+ TIME="-cmin +44645" ;;
+ esac
+
+ find ${LOCKDIR} -name cron.$BASE $TIME -exec rm {} \; &>/dev/null || true
+ fi
+
+ # if there is no touch file, make one then run the scripts
+ if [ ! -e ${LOCKDIR}/cron.$BASE ] ; then
+ touch ${LOCKDIR}/cron.$BASE
+
+ set +e
+ GLOBIGNORE="*~"
+ for SCRIPT in $CRONDIR/* ; do
+ if [[ -x $SCRIPT && ! -d $SCRIPT ]]; then
+ [ -x /usr/bin/logger ] && /usr/bin/logger -i -p cron.info -t run-crons "(`whoami`) CMD ($SCRIPT)"
+ $SCRIPT
+ fi
+ done
+ fi
+done
+
+# Clean out bogus cron.$BASE files with future times
+touch ${LOCKDIR}
+find ${LOCKDIR} -newer ${LOCKDIR} -exec /bin/rm -f {} \; &>/dev/null || true
diff --git a/sys-process/cronbase/files/run-crons-0.3.4 b/sys-process/cronbase/files/run-crons-0.3.4
new file mode 100755
index 000000000000..928b95d784b4
--- /dev/null
+++ b/sys-process/cronbase/files/run-crons-0.3.4
@@ -0,0 +1,114 @@
+#!/bin/bash
+#
+# $Id$
+#
+# 12 Oct 2008; Thilo Bangert <bangert@gentoo.org> run-crons:
+# ignore emacs backup files (bug #237200)
+# include logging patch (bug #140869)
+#
+# 08 Mar 2005; Aaron Walker <ka0ttic@gentoo.org> run-crons:
+# Ignore the error messages from find caused by race conditions, since
+# we could care less about the error as long as the file has been removed.
+# See bug 8506.
+#
+# 06 May 2004; Aron Griffis <agriffis@gentoo.org> run-crons:
+# Make the locking actually work. The old code was racy.
+# Thanks to Mathias Gumz in bug 45155 for some cleanups.
+#
+# 23 Jun 2002; Jon Nelson <jnelson@gentoo.org> run-crons:
+# fixed a race condition, where cron jobs and run-crons wanted to
+# delete touch files
+#
+# 20 Apr 2002; Thilo Bangert <bangert@gentoo.org> run-crons:
+# moved lastrun directory to /var/spool/cron/lastrun
+#
+# Author: Achim Gottinger <achim@gentoo.org>
+#
+# Mostly copied from SuSE
+#
+# this script looks into /etc/cron.[hourly|daily|weekly|monthly]
+# for scripts to be executed. The info about last run is stored in
+# /var/spool/cron/lastrun
+
+LOCKDIR=/var/spool/cron/lastrun
+LOCKFILE=${LOCKDIR}/lock
+
+mkdir -p ${LOCKDIR}
+
+# Make sure we're not running multiple instances at once.
+# Try twice to lock, otherwise give up.
+for ((i = 0; i < 2; i = i + 1)); do
+ ln -sn $$ ${LOCKFILE} 2>/dev/null && break
+
+ # lock failed, check for a running process.
+ # handle both old- and new-style locking.
+ cronpid=$(readlink ${LOCKFILE} 2>/dev/null) ||
+ cronpid=$(cat ${LOCKFILE} 2>/dev/null) ||
+ continue # lockfile disappeared? try again
+
+ # better than kill -0 because we can verify that it's really
+ # another run-crons process
+ if [[ $(</proc/${cronpid}/cmdline) == $(</proc/$$/cmdline) ]] 2>/dev/null; then
+ # whoa, another process is really running
+ exit 0
+ else
+ rm -f ${LOCKFILE}
+ fi
+done
+
+# Check to make sure locking was successful
+if [[ ! -L ${LOCKFILE} ]]; then
+ echo "Can't create or read existing ${LOCKFILE}, giving up"
+ exit 1
+fi
+
+# Set a trap to remove the lockfile when we're finished
+trap "rm -f ${LOCKFILE}" 0 1 2 3 15
+
+
+for BASE in hourly daily weekly monthly ; do
+ CRONDIR=/etc/cron.${BASE}
+
+ test -d $CRONDIR || continue
+
+ if [ -e ${LOCKDIR}/cron.$BASE ] ; then
+ case $BASE in
+ hourly)
+ #>= 1 hour, 5 min -=> +65 min
+ TIME="-cmin +65" ;;
+ daily)
+ #>= 1 day, 5 min -=> +1445 min
+ TIME="-cmin +1445" ;;
+ weekly)
+ #>= 1 week, 5 min -=> +10085 min
+ TIME="-cmin +10085" ;;
+ monthly)
+ #>= 31 days, 5 min -=> +44645 min
+ TIME="-cmin +44645" ;;
+ esac
+
+ find ${LOCKDIR} -name cron.$BASE $TIME -exec rm {} \; &>/dev/null || true
+ fi
+
+ # if there is no touch file, make one then run the scripts
+ if [ ! -e ${LOCKDIR}/cron.$BASE ] ; then
+ touch ${LOCKDIR}/cron.$BASE
+
+ set +e
+ for SCRIPT in $CRONDIR/* ; do
+ if [[ -x $SCRIPT && ! -d $SCRIPT ]]; then
+ # Filter out files people do not expect to be executed.
+ case ${SCRIPT} in
+ .*|*~) continue ;;
+ esac
+
+ [ -x /usr/bin/logger ] && /usr/bin/logger -i -p cron.info -t run-crons "(`whoami`) CMD ($SCRIPT)"
+ $SCRIPT
+ fi
+ done
+ fi
+done
+
+# Clean out bogus cron.$BASE files with future times
+touch ${LOCKDIR}
+find ${LOCKDIR} -newer ${LOCKDIR} -exec /bin/rm -f {} \; &>/dev/null || true
diff --git a/sys-process/cronbase/files/run-crons-0.3.5 b/sys-process/cronbase/files/run-crons-0.3.5
new file mode 100755
index 000000000000..305341ac31fa
--- /dev/null
+++ b/sys-process/cronbase/files/run-crons-0.3.5
@@ -0,0 +1,130 @@
+#!/bin/bash
+#
+# $Id$
+#
+# 12 Oct 2008; Thilo Bangert <bangert@gentoo.org> run-crons:
+# ignore emacs backup files (bug #237200)
+# include logging patch (bug #140869)
+#
+# 08 Mar 2005; Aaron Walker <ka0ttic@gentoo.org> run-crons:
+# Ignore the error messages from find caused by race conditions, since
+# we could care less about the error as long as the file has been removed.
+# See bug 8506.
+#
+# 06 May 2004; Aron Griffis <agriffis@gentoo.org> run-crons:
+# Make the locking actually work. The old code was racy.
+# Thanks to Mathias Gumz in bug 45155 for some cleanups.
+#
+# 23 Jun 2002; Jon Nelson <jnelson@gentoo.org> run-crons:
+# fixed a race condition, where cron jobs and run-crons wanted to
+# delete touch files
+#
+# 20 Apr 2002; Thilo Bangert <bangert@gentoo.org> run-crons:
+# moved lastrun directory to /var/spool/cron/lastrun
+#
+# Author: Achim Gottinger <achim@gentoo.org>
+#
+# Mostly copied from SuSE
+#
+# this script looks into /etc/cron.[hourly|daily|weekly|monthly]
+# for scripts to be executed. The info about last run is stored in
+# /var/spool/cron/lastrun
+
+LOCKDIR=/var/spool/cron/lastrun
+LOCKFILE=${LOCKDIR}/lock
+
+# Usage: log <level> <args to logger>
+# Log a message via syslog.
+log() {
+ local level=$1
+ shift
+ logger -i -p "cron.${level}" -t run-crons "$@"
+}
+
+mkdir -p ${LOCKDIR}
+
+# Make sure we're not running multiple instances at once.
+# Try twice to lock, otherwise give up.
+for ((i = 0; i < 2; i = i + 1)); do
+ ln -sn $$ ${LOCKFILE} 2>/dev/null && break
+
+ # lock failed, check for a running process.
+ # handle both old- and new-style locking.
+ cronpid=$(readlink ${LOCKFILE} 2>/dev/null) ||
+ cronpid=$(cat ${LOCKFILE} 2>/dev/null) ||
+ continue # lockfile disappeared? try again
+
+ # better than kill -0 because we can verify that it's really
+ # another run-crons process
+ if [[ $(</proc/${cronpid}/cmdline) == $(</proc/$$/cmdline) ]] 2>/dev/null; then
+ # whoa, another process is really running
+ exit 0
+ else
+ rm -f ${LOCKFILE}
+ fi
+done
+
+# Check to make sure locking was successful
+if [[ ! -L ${LOCKFILE} ]]; then
+ echo "Can't create or read existing ${LOCKFILE}, giving up"
+ exit 1
+fi
+
+# Set a trap to remove the lockfile when we're finished
+trap "rm -f ${LOCKFILE}" 0 1 2 3 15
+
+
+EXIT_STATUS=0
+for BASE in hourly daily weekly monthly ; do
+ CRONDIR=/etc/cron.${BASE}
+
+ test -d $CRONDIR || continue
+
+ if [ -e ${LOCKDIR}/cron.$BASE ] ; then
+ case $BASE in
+ hourly)
+ #>= 1 hour, 5 min -=> +65 min
+ TIME="-cmin +65" ;;
+ daily)
+ #>= 1 day, 5 min -=> +1445 min
+ TIME="-cmin +1445" ;;
+ weekly)
+ #>= 1 week, 5 min -=> +10085 min
+ TIME="-cmin +10085" ;;
+ monthly)
+ #>= 31 days, 5 min -=> +44645 min
+ TIME="-cmin +44645" ;;
+ esac
+
+ find ${LOCKDIR} -name cron.$BASE $TIME -exec rm {} \; &>/dev/null || true
+ fi
+
+ # if there is no touch file, make one then run the scripts
+ if [ ! -e ${LOCKDIR}/cron.$BASE ] ; then
+ touch ${LOCKDIR}/cron.$BASE
+
+ set +e
+ for SCRIPT in $CRONDIR/* ; do
+ if [[ -x $SCRIPT && ! -d $SCRIPT ]]; then
+ # Filter out files people do not expect to be executed.
+ case ${SCRIPT} in
+ .*|*~) continue ;;
+ esac
+
+ log info "($(whoami)) CMD (${SCRIPT})"
+ $SCRIPT
+ ret=$?
+ if [ ${ret} -ne 0 ] ; then
+ log err "CMD (${SCRIPT}) failed with exit status ${ret}"
+ EXIT_STATUS=1
+ fi
+ fi
+ done
+ fi
+done
+
+# Clean out bogus cron.$BASE files with future times
+touch ${LOCKDIR}
+find ${LOCKDIR} -newer ${LOCKDIR} -exec /bin/rm -f {} \; &>/dev/null || true
+
+exit ${EXIT_STATUS}
diff --git a/sys-process/cronbase/files/run-crons-0.3.6 b/sys-process/cronbase/files/run-crons-0.3.6
new file mode 100755
index 000000000000..d5e609715d9b
--- /dev/null
+++ b/sys-process/cronbase/files/run-crons-0.3.6
@@ -0,0 +1,133 @@
+#!/bin/sh
+#
+# $Id$
+#
+# 12 Oct 2008; Thilo Bangert <bangert@gentoo.org> run-crons:
+# ignore emacs backup files (bug #237200)
+# include logging patch (bug #140869)
+#
+# 08 Mar 2005; Aaron Walker <ka0ttic@gentoo.org> run-crons:
+# Ignore the error messages from find caused by race conditions, since
+# we could care less about the error as long as the file has been removed.
+# See bug 8506.
+#
+# 06 May 2004; Aron Griffis <agriffis@gentoo.org> run-crons:
+# Make the locking actually work. The old code was racy.
+# Thanks to Mathias Gumz in bug 45155 for some cleanups.
+#
+# 23 Jun 2002; Jon Nelson <jnelson@gentoo.org> run-crons:
+# fixed a race condition, where cron jobs and run-crons wanted to
+# delete touch files
+#
+# 20 Apr 2002; Thilo Bangert <bangert@gentoo.org> run-crons:
+# moved lastrun directory to /var/spool/cron/lastrun
+#
+# Author: Achim Gottinger <achim@gentoo.org>
+#
+# Mostly copied from SuSE
+#
+# this script looks into /etc/cron.[hourly|daily|weekly|monthly]
+# for scripts to be executed. The info about last run is stored in
+# /var/spool/cron/lastrun
+
+LOCKDIR=/var/spool/cron/lastrun
+LOCKFILE=${LOCKDIR}/lock
+
+# Usage: log <level> <args to logger>
+# Log a message via syslog.
+log() {
+ local level="$1"
+ shift
+ logger -i -p "cron.${level}" -t run-crons "$@"
+}
+
+mkdir -p ${LOCKDIR}
+
+# Make sure we're not running multiple instances at once.
+# Try twice to lock, otherwise give up.
+i=0
+while [ $(( i += 1 )) -le 2 ] ; do
+ ln -sn $$ ${LOCKFILE} 2>/dev/null && break
+
+ # lock failed, check for a running process.
+ # handle both old- and new-style locking.
+ cronpid=$(readlink ${LOCKFILE} 2>/dev/null) ||
+ cronpid=$(cat ${LOCKFILE} 2>/dev/null) ||
+ continue # lockfile disappeared? try again
+
+ # better than kill -0 because we can verify that it's really
+ # another run-crons process
+ cmdline1=$(cat /proc/${cronpid}/cmdline 2>/dev/null) || :
+ cmdline2=$(cat /proc/$$/cmdline)
+ if [ "${cmdline1}" = "${cmdline2}" ] ; then
+ # whoa, another process is really running
+ exit 0
+ else
+ rm -f ${LOCKFILE}
+ fi
+done
+
+# Check to make sure locking was successful
+if [ ! -L "${LOCKFILE}" ] ; then
+ echo "Can't create or read existing ${LOCKFILE}, giving up"
+ exit 1
+fi
+
+# Set a trap to remove the lockfile when we're finished
+trap "rm -f ${LOCKFILE}" EXIT HUP INT QUIT TERM
+
+
+EXIT_STATUS=0
+for BASE in hourly daily weekly monthly ; do
+ CRONDIR=/etc/cron.${BASE}
+
+ test -d $CRONDIR || continue
+
+ if [ -e ${LOCKDIR}/cron.$BASE ] ; then
+ case $BASE in
+ hourly)
+ #>= 1 hour, 5 min -=> +65 min
+ TIME="-cmin +65" ;;
+ daily)
+ #>= 1 day, 5 min -=> +1445 min
+ TIME="-cmin +1445" ;;
+ weekly)
+ #>= 1 week, 5 min -=> +10085 min
+ TIME="-cmin +10085" ;;
+ monthly)
+ #>= 31 days, 5 min -=> +44645 min
+ TIME="-cmin +44645" ;;
+ esac
+
+ find ${LOCKDIR} -name cron.$BASE $TIME -exec rm {} \; 2>/dev/null || :
+ fi
+
+ # if there is no touch file, make one then run the scripts
+ if [ ! -e ${LOCKDIR}/cron.$BASE ] ; then
+ touch ${LOCKDIR}/cron.$BASE
+
+ set +e
+ for SCRIPT in $CRONDIR/* ; do
+ if [ -x "${SCRIPT}" ] && [ ! -d "${SCRIPT}" ] ; then
+ # Filter out files people do not expect to be executed.
+ case ${SCRIPT} in
+ .*|*~) continue ;;
+ esac
+
+ log info "($(whoami)) CMD (${SCRIPT})"
+ $SCRIPT
+ ret=$?
+ if [ ${ret} -ne 0 ] ; then
+ log err "CMD (${SCRIPT}) failed with exit status ${ret}"
+ EXIT_STATUS=1
+ fi
+ fi
+ done
+ fi
+done
+
+# Clean out bogus cron.$BASE files with future times
+touch ${LOCKDIR}
+find ${LOCKDIR} -newer ${LOCKDIR} -exec /bin/rm -f {} \; 2>/dev/null || :
+
+exit ${EXIT_STATUS}
diff --git a/sys-process/cronbase/files/run-crons-0.3.7 b/sys-process/cronbase/files/run-crons-0.3.7
new file mode 100755
index 000000000000..c966d64fbc56
--- /dev/null
+++ b/sys-process/cronbase/files/run-crons-0.3.7
@@ -0,0 +1,195 @@
+#!/bin/sh
+#
+# $Id$
+#
+# 12 Oct 2008; Thilo Bangert <bangert@gentoo.org> run-crons:
+# ignore emacs backup files (bug #237200)
+# include logging patch (bug #140869)
+#
+# 08 Mar 2005; Aaron Walker <ka0ttic@gentoo.org> run-crons:
+# Ignore the error messages from find caused by race conditions, since
+# we could care less about the error as long as the file has been removed.
+# See bug 8506.
+#
+# 06 May 2004; Aron Griffis <agriffis@gentoo.org> run-crons:
+# Make the locking actually work. The old code was racy.
+# Thanks to Mathias Gumz in bug 45155 for some cleanups.
+#
+# 23 Jun 2002; Jon Nelson <jnelson@gentoo.org> run-crons:
+# fixed a race condition, where cron jobs and run-crons wanted to
+# delete touch files
+#
+# 20 Apr 2002; Thilo Bangert <bangert@gentoo.org> run-crons:
+# moved lastrun directory to /var/spool/cron/lastrun
+#
+# Author: Achim Gottinger <achim@gentoo.org>
+#
+# Mostly copied from SuSE
+#
+# this script looks into /etc/cron.[hourly|daily|weekly|monthly]
+# for scripts to be executed. The info about last run is stored in
+# /var/spool/cron/lastrun
+
+LOCKDIR="/var/run/lock"
+CRONSPOOLDIR="/var/spool/cron"
+LASTRUNDIR="${CRONSPOOLDIR}/lastrun"
+# This is the legacy lockfile that we need to clean up.
+GLOBAL_LOCKFILE="${LASTRUNDIR}/lock"
+
+# Usage: log <level> <args to logger>
+# Log a message via syslog.
+log() {
+ local level="$1"
+ shift
+ logger -i -p "cron.${level}" -t run-crons "$@"
+}
+
+# Usage: grab_lock <class>
+# Grab the lock for <class> to make sure we are the only instance.
+grab_lock() {
+ local i cronpid cmdline1 cmdline2
+ local lockfile
+
+ # Free whatever previous lock (if any) we held.
+ free_lock
+
+ # For the legacy global lock, don't try to create a full path.
+ case $1 in
+ /*) lockfile=$1 ;;
+ *) lockfile="${LOCKDIR}/cron.$1" ;;
+ esac
+
+ # Try twice to lock, otherwise give up.
+ i=0
+ while [ $(( i += 1 )) -le 2 ] ; do
+ # Normally we should be able to grab the lock and get out of here fast.
+ if ln -sn $$ "${lockfile}" 2>/dev/null ; then
+ break
+ fi
+
+ # Locking failed, so check for a running process.
+ # Handle both old- and new-style locking.
+ # Delete the cat logic when GLOBAL_LOCKFILE is purged.
+ # Note: Does not handle PID namespaces ...
+ if ! cronpid=$(readlink "${lockfile}" 2>/dev/null) ; then
+ if ! cronpid=$(cat "${lockfile}" 2>/dev/null) ; then
+ # The lockfile disappeared? Try the whole thing again ...
+ continue
+ fi
+ fi
+
+ # This is better than kill -0 because we can verify that it's really
+ # another run-crons process.
+ cmdline1=$(cat "/proc/${cronpid}/cmdline" 2>/dev/null) || :
+ cmdline2=$(cat /proc/$$/cmdline)
+ if [ "${cmdline1}" = "${cmdline2}" ] ; then
+ # Whoa, another run-crons is really running.
+ return 1
+ fi
+
+ # The lockfile is pointing to a dead process so break it.
+ # TODO: This is still racy if we're running more than one run-crons.
+ rm -f "${lockfile}"
+ done
+
+ # Check to make sure locking was successful.
+ if [ ! -L "${lockfile}" ] ; then
+ echo "Can't create or read existing ${lockfile}, giving up"
+ exit 1
+ fi
+
+ # Set the lock file for free_lock to clean up.
+ _LOCKFILE="${lockfile}"
+
+ return 0
+}
+# Prevent random env vars from messing with us.
+_LOCKFILE=
+# Set a trap to release the lockfile when we're finished.
+trap 'free_lock' EXIT HUP INT QUIT TERM
+
+# Usage: free_lock
+# Release the lock that we last grabbed. This does not nest!
+free_lock() {
+ if [ -n "${_LOCKFILE}" ] ; then
+ rm -f "${_LOCKFILE}"
+ # Only break the lock once.
+ _LOCKFILE=
+ fi
+}
+
+
+EXIT_STATUS=0
+
+# Grab the legacy global lock to smoothly handle upgrades.
+# We should drop this after like Dec 2016.
+if [ -L "${GLOBAL_LOCKFILE}" -o -f "${GLOBAL_LOCKFILE}" ] ; then
+ if ! grab_lock "${GLOBAL_LOCKFILE}" ; then
+ # An old process is still running -- abort.
+ exit 0
+ fi
+ # Now release the lock since we no longer care about it.
+ free_lock
+fi
+
+for BASE in hourly daily weekly monthly ; do
+ CRONDIR=/etc/cron.${BASE}
+
+ test -d $CRONDIR || continue
+
+ # Grab the lock for this specific dir.
+ if ! grab_lock "${BASE}" ; then
+ # Someone else is processing this dir, so skip it.
+ continue
+ fi
+
+ # Blow away stale states for this particular dir.
+ lastrunfile="${LASTRUNDIR}/cron.${BASE}"
+ if [ -e "${lastrunfile}" ] ; then
+ case $BASE in
+ hourly)
+ #>= 1 hour, 5 min -=> +65 min
+ TIME="-cmin +65" ;;
+ daily)
+ #>= 1 day, 5 min -=> +1445 min
+ TIME="-cmin +1445" ;;
+ weekly)
+ #>= 1 week, 5 min -=> +10085 min
+ TIME="-cmin +10085" ;;
+ monthly)
+ #>= 31 days, 5 min -=> +44645 min
+ TIME="-cmin +44645" ;;
+ esac
+
+ find "${LASTRUNDIR}/" -name cron.$BASE $TIME -exec rm {} \; 2>/dev/null || :
+ fi
+
+ # if there is no state file, make one, then run the scripts.
+ if [ ! -e "${lastrunfile}" ] ; then
+ touch "${lastrunfile}"
+
+ set +e
+ for SCRIPT in $CRONDIR/* ; do
+ if [ -x "${SCRIPT}" ] && [ ! -d "${SCRIPT}" ] ; then
+ # Filter out files people do not expect to be executed.
+ case ${SCRIPT} in
+ .*|*~) continue ;;
+ esac
+
+ log info "($(whoami)) CMD (${SCRIPT})"
+ $SCRIPT
+ ret=$?
+ if [ ${ret} -ne 0 ] ; then
+ log err "CMD (${SCRIPT}) failed with exit status ${ret}"
+ EXIT_STATUS=1
+ fi
+ fi
+ done
+ fi
+done
+
+# Clean out bogus state files with future times.
+touch "${LASTRUNDIR}"
+find "${LASTRUNDIR}/" -newer "${LASTRUNDIR}" -exec /bin/rm -f {} \; 2>/dev/null || :
+
+exit ${EXIT_STATUS}
diff --git a/sys-process/cronbase/metadata.xml b/sys-process/cronbase/metadata.xml
new file mode 100644
index 000000000000..3f399e92bcff
--- /dev/null
+++ b/sys-process/cronbase/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>cron</herd>
+</pkgmetadata>