summary refs log tree commit diff
path: root/pkgs/tools/system/mcron
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/system/mcron')
-rw-r--r--pkgs/tools/system/mcron/default.nix39
-rw-r--r--pkgs/tools/system/mcron/install-vixie-programs.patch23
2 files changed, 62 insertions, 0 deletions
diff --git a/pkgs/tools/system/mcron/default.nix b/pkgs/tools/system/mcron/default.nix
new file mode 100644
index 00000000000..485df4231ec
--- /dev/null
+++ b/pkgs/tools/system/mcron/default.nix
@@ -0,0 +1,39 @@
+{ fetchurl, lib, stdenv, guile, which, ed, libtool }:
+
+stdenv.mkDerivation rec {
+  pname = "mcron";
+  version = "1.0.6";
+
+  src = fetchurl {
+    url = "mirror://gnu/mcron/mcron-${version}.tar.gz";
+    sha256 = "0yvrfzzdy2m7fbqkr61fw01wd9r2jpnbyabxhcsfivgxywknl0fy";
+  };
+
+  patches = [ ./install-vixie-programs.patch ];
+
+  # don't attempt to chmod +s files in the nix store
+  postPatch = ''
+    substituteInPlace makefile.in --replace "rwxs" "rwx"
+  '';
+
+  buildInputs = [ guile which ed libtool ];
+
+  doCheck = true;
+
+  meta = {
+    description = "Flexible implementation of `cron' in Guile";
+
+    longDescription = ''
+      The GNU package mcron (Mellor's cron) is a 100% compatible
+      replacement for Vixie cron.  It is written in pure Guile, and
+      allows configuration files to be written in scheme (as well as
+      Vixie's original format) for infinite flexibility in specifying
+      when jobs should be run.  Mcron was written by Dale Mellor.
+    '';
+
+    homepage = "https://www.gnu.org/software/mcron/";
+
+    license = lib.licenses.gpl3Plus;
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/pkgs/tools/system/mcron/install-vixie-programs.patch b/pkgs/tools/system/mcron/install-vixie-programs.patch
new file mode 100644
index 00000000000..d268ecb4a0a
--- /dev/null
+++ b/pkgs/tools/system/mcron/install-vixie-programs.patch
@@ -0,0 +1,23 @@
+This patch allows us to install the Vixie-compatible binaries as
+non-root without creating /var/run, etc.
+
+--- mcron-1.0.6/makefile.in	2010-06-19 20:44:17.000000000 +0200
++++ mcron-1.0.6/makefile.in	2010-07-04 16:16:25.000000000 +0200
+@@ -1004,15 +1004,11 @@ mcron.c : main.scm crontab.scm makefile.
+ 	@rm -f mcron.escaped.scm > /dev/null 2>&1
+ 
+ install-exec-hook:
+-	@if [ "x@NO_VIXIE_CLOBBER@" != "xyes"   -a   "`id -u`" -eq "0" ]; then \
++	@if [ "x@NO_VIXIE_CLOBBER@" != "xyes" ]; then \
+        rm -f $(fpp)cron$(EXEEXT) > /dev/null 2>&1; \
+        $(INSTALL) --mode='u=rwx' mcron$(EXEEXT) $(fpp)cron$(EXEEXT); \
+        rm -f $(fpp)crontab$(EXEEXT) > /dev/null 2>&1; \
+        $(INSTALL) --mode='u=rwxs,og=rx' mcron$(EXEEXT) $(fpp)crontab$(EXEEXT); \
+-       $(INSTALL) -d --mode='u=rwx' $(DESTDIR)/var/cron; \
+-       $(INSTALL) -d --mode='u=rwx,og=rx' $(DESTDIR)/var/run; \
+-       $(INSTALL) -d --mode='u=rwx,og=rx' $(DESTDIR)@GUILE_SITE@; \
+-       $(INSTALL) -d --mode='u=rwx,og=rx' $(DESTDIR)@GUILE_SITE@/mcron; \
+     elif [ "x@NO_VIXIE_CLOBBER@" = "xyes" ]; then \
+        echo "Not installing Vixie-style programs"; \
+     else \
+