summaryrefslogtreecommitdiff
path: root/core/dcron
diff options
context:
space:
mode:
authorParabola <dev@list.parabolagnulinux.org>2011-04-05 14:26:38 +0000
committerParabola <dev@list.parabolagnulinux.org>2011-04-05 14:26:38 +0000
commit415856bdd4f48ab4f2732996f0bae58595092bbe (patch)
treeede2018b591f6dfb477fe9341ba17b9bc000fab9 /core/dcron
Tue Apr 5 14:26:38 UTC 2011
Diffstat (limited to 'core/dcron')
-rw-r--r--core/dcron/PKGBUILD50
-rw-r--r--core/dcron/dcron-logname.patch25
-rw-r--r--core/dcron/dcron.conf.d4
-rw-r--r--core/dcron/dcron.install10
-rw-r--r--core/dcron/dcron.rc.d47
5 files changed, 136 insertions, 0 deletions
diff --git a/core/dcron/PKGBUILD b/core/dcron/PKGBUILD
new file mode 100644
index 000000000..61999c950
--- /dev/null
+++ b/core/dcron/PKGBUILD
@@ -0,0 +1,50 @@
+# Maintainer: Paul Mattal <paul.archlinux.org>
+
+pkgname=dcron
+pkgver=4.4
+pkgrel=2
+pkgdesc="dillon's lightweight cron daemon"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.jimpryor.net/linux/dcron"
+backup=(var/spool/cron/root etc/conf.d/crond)
+depends=('glibc')
+provides=('cron')
+groups=('base')
+source=("http://www.jimpryor.net/linux/releases/${pkgname}-${pkgver}.tar.gz"
+ 'dcron-logname.patch'
+ 'dcron.rc.d'
+ 'dcron.conf.d')
+md5sums=('02d848ba043a9df5bf2102a9f4bc04bd'
+ 'c6054421b48100f7a2a7a36e2d33c92a'
+ '73693cdd59df526e729cdec99c5ed8fb'
+ '5bfa07beb54d0beaf3f38225e4d5a9fa')
+optdepends=('smtp-server: sending cron job output via email')
+install=$pkgname.install
+
+build() {
+ cd "$srcdir/${pkgname}-${pkgver}" || return 1
+
+ # patch to add LOGNAME environment variable
+ patch -p1 -i $srcdir/dcron-logname.patch || return 1
+
+ # by default, any member of group "users" can edit their own crontab
+ make \
+ PREFIX=/usr \
+ CRONTAB_GROUP=users \
+ CRONTABS=/var/spool/cron \
+ CRONSTAMPS=/var/spool/cronstamps \
+ || return 1
+ make DESTDIR="$pkgdir" install || return 1
+
+ # install standard configuration and scripts
+ install -d -m755 "$pkgdir/etc/cron."{hourly,daily,weekly,monthly} \
+ || return 1
+ install -D -m755 extra/run-cron "$pkgdir/usr/sbin/run-cron" || return 1
+ install -D -m0600 extra/root.crontab "$pkgdir/var/spool/cron/root" \
+ || return 1
+
+ # install Arch configuration and launch scripts
+ install -D -m755 "$srcdir/dcron.rc.d" "$pkgdir/etc/rc.d/crond" || return 1
+ install -D -m0644 "$srcdir/dcron.conf.d" "$pkgdir/etc/conf.d/crond" || return 1
+}
diff --git a/core/dcron/dcron-logname.patch b/core/dcron/dcron-logname.patch
new file mode 100644
index 000000000..c37c5f45f
--- /dev/null
+++ b/core/dcron/dcron-logname.patch
@@ -0,0 +1,25 @@
+diff -aur dcron-4.4/chuser.c dcron-4.4.logname/chuser.c
+--- dcron-4.4/chuser.c 2010-02-15 11:18:13.111967483 +0100
++++ dcron-4.4.logname/chuser.c 2010-02-15 11:18:29.615531204 +0100
+@@ -25,6 +25,7 @@
+ return(-1);
+ }
+ setenv("USER", pas->pw_name, 1);
++ setenv("LOGNAME", pas->pw_name, 1);
+ setenv("HOME", pas->pw_dir, 1);
+ setenv("SHELL", "/bin/sh", 1);
+
+diff -aur dcron-4.4/crontab.1 dcron-4.4.logname/crontab.1
+--- dcron-4.4/crontab.1 2010-02-15 11:18:13.111967483 +0100
++++ dcron-4.4.logname/crontab.1 2010-02-15 11:19:48.295707950 +0100
+@@ -57,8 +57,8 @@
+ .PP
+ Nor does it do any special environment handling.
+ A shell script is better-suited to doing that than a cron daemon.
+-This cron daemon sets up only three environment variables: USER,
+-HOME, and SHELL.
++This cron daemon sets up only four environment variables: USER,
++LOGNAME, HOME, and SHELL.
+ .PP
+ Our crontab format is roughly similar to that used by vixiecron.
+ Individual fields may contain a time, a time range, a time range
diff --git a/core/dcron/dcron.conf.d b/core/dcron/dcron.conf.d
new file mode 100644
index 000000000..763c71263
--- /dev/null
+++ b/core/dcron/dcron.conf.d
@@ -0,0 +1,4 @@
+#
+# Parameters to be passed to crond
+#
+CROND_ARGS="-S -l info"
diff --git a/core/dcron/dcron.install b/core/dcron/dcron.install
new file mode 100644
index 000000000..ba08b3af1
--- /dev/null
+++ b/core/dcron/dcron.install
@@ -0,0 +1,10 @@
+## arg 1: the new package version
+## arg 2: the old package version
+post_upgrade() {
+ if [ "`vercmp $2 4.0`" -lt 0 ]
+ then
+ echo "Restart crond, since you're upgrading to the dcron 4.x series."
+ fi
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/core/dcron/dcron.rc.d b/core/dcron/dcron.rc.d
new file mode 100644
index 000000000..b1a5770e6
--- /dev/null
+++ b/core/dcron/dcron.rc.d
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/crond
+
+PID=$(pidof -o %PPID /usr/sbin/crond)
+case $1 in
+start)
+ stat_busy "Starting Cron Daemon"
+
+ # defaults to using syslog, and sendmail-ing cron output to local user
+ # to mail output to remote address instead, add "-m user@host"
+ # to CROND_ARGS in /etc/conf.d/crond
+ if [[ -z $PID ]] && /usr/sbin/crond $CROND_ARGS; then
+
+ PID=$(pidof -o %PPID /usr/sbin/crond)
+ echo "$PID" > /var/run/crond.pid
+ add_daemon crond
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+stop)
+ stat_busy "Stopping Cron Daemon"
+ if [[ ! -z $PID ]] && kill "$PID" &>/dev/null; then
+ rm_daemon crond
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+restart)
+ $0 stop
+ $0 start
+ ;;
+
+*)
+ echo "Usage: $0 {start|stop|restart}" >&2
+ exit 1
+
+esac