summary refs log tree commit diff
path: root/gnu/tests/base.scm
AgeCommit message (Collapse)Author
2019-05-15tests: Skip unreliable "herd invalidate nscd" test.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test)["nscd invalidate action, wrong table"]: Skip unconditionally.
2019-05-15tests: 'getlogin' test creates its file atomically.Ludovic Courtès
Previously we could end up reading an empty /root/login-id file. * gnu/tests/base.scm (run-basic-test)["getlogin on tty1"]: Create /root/login-id atomically.
2019-05-09services: Log-in services now require "pam_loginuid".Ludovic Courtès
Fixes <https://bugs.gnu.org/35553>. Reported by Bruno Haible <bruno@clisp.org>. * gnu/services/base.scm (login-pam-service): Pass #:login-uid? #t to 'unix-pam-service'. * gnu/services/ssh.scm (lsh-pam-services, openssh-pam-services): Likewise. * gnu/services/xorg.scm (slim-pam-service): Likewise. (gdm-pam-service): Likewise for "gdm-autologin" and "gdm-password". * gnu/tests/base.scm (run-basic-test)["getlogin on tty1"]: New test. * gnu/tests/ssh.scm (run-ssh-test): Add #:test-getlogin? parameter. ["getlogin"]: New test. (%test-dropbear): Pass #:test-getlogin? #f.
2019-03-08activation: Shared system home directories are now 555 and root-owned.Ludovic Courtès
Fixes <https://bugs.gnu.org/34788>. Reported by Jack Hill <jackhill@jackhill.us>. Regression introduced by the combination of 8bb76f3d44c1f5ffec8011819494db306a51d801 and 0ae735bcc8ff7fdc89d67b492bdee9091ee19e86: /var/empty would be 700 and owned by one of the system accounts (thus inaccessible to others), and /var/run/dbus would be 700 as well, thereby preventing D-Bus clients from connecting to the daemon. * gnu/build/activation.scm (duplicates): New procedure. (activate-users+groups)[system-accounts]: New variable. Use it. Make shared system account home directories #o555 and root-owned. * gnu/services/dbus.scm (dbus-activation): Make /var/run/dbus #o755. * gnu/tests/base.scm (run-basic-test): Test the ownership and permissions of /var/empty.
2019-03-04tests: Use non-deprecated (guix store) API.Ludovic Courtès
This is a followup to f9e8a12379c6fefc9e5c3c7fc3926599bbefc013. * gnu/tests/base.scm (run-basic-test)["/run/current-system is a GC root"]: Use 'store-protocol-error?' instead of 'nix-protocol-error?'.
2019-01-16services: avahi: Deprecate the 'avahi-service' procedure.Ludovic Courtès
* gnu/services/avahi.scm (<avahi-configuration>): Export getters. Add default values. (avahi-service-type)[default-value]: New field. (avahi-service): Mark as deprecated. * gnu/services/desktop.scm (%desktop-services): Use the 'service' form instead of calling 'avahi-service'. * gnu/tests/base.scm (%avahi-os): Likewise. * doc/guix.texi (Base Services): Adjust example accordingly. (Networking Services): Update accordingly.
2019-01-11services: Deprecate a few more service procedures.Ludovic Courtès
These procedures were already either undocumented (and de facto deprecated) or documented as deprecated or redundant. * gnu/services/base.scm (guix-service, guix-publish-service): Mark as deprecated. * gnu/services/mcron.scm (mcron-service): Likewise. * gnu/services/networking.scm (tor-service): Likewise. * doc/guix.texi (Scheduled Job Execution): Remove 'mcron-service' and adjust example. (Networking Services): Remove 'tor-service'. * gnu/tests/base.scm (%mcron-os): Use 'mcron-service-type' instead of 'mcron-service'. * gnu/tests/networking.scm (%tor-os): Use 'tor-service-type' instead of 'tor-service'. * tests/guix-system.sh: Likewise.
2018-12-18file-systems: Spawn a REPL only when interaction is possible.Ludovic Courtès
Fixes <https://bugs.gnu.org/23697>. Reported by Jan Nieuwenhuizen <janneke@gnu.org>. * gnu/build/file-systems.scm (check-file-system): Call 'start-repl' only if current-input-port passes 'isatty?'. * gnu/services/shepherd.scm (shepherd-configuration-file): After 'for-each' expression, call 'redirect-port'. * gnu/tests/base.scm (run-basic-test)["stdin is /dev/null"]: New test.
2018-11-18activation: Aways pass '-d HOME' to 'useradd'.Ludovic Courtès
Fixes <https://bugs.gnu.org/33422>. Reported by fps. * gnu/build/activation.scm (add-user): Always pass "-d HOME" when HOME is true. Pass "--create-home" only when HOME, CREATE-HOME?, and SYSTEM? are true. (activate-users+groups): Pass #:create-home? create-home? to 'ensure-user'. * gnu/tests/base.scm (run-basic-test)["accounts"]: Test 'passwd:dir' as well.
2018-11-13services: nscd: Add 'invalidate' and 'statistics' actions.Ludovic Courtès
* gnu/services/base.scm (nscd-action-procedure, nscd-actions): New procedures. (nscd-shepherd-service): Add 'modules' and 'actions' fields. * gnu/tests/base.scm (run-basic-test)["nscd invalidate action"] ["nscd invalidate action, wrong table"]: New tests. * doc/guix.texi (Services): Mention 'herd doc nscd action'. (Base Services): Document the actions.
2018-10-18services: dhcp-client: Deprecate 'dhcp-client-service' procedure.Ludovic Courtès
* gnu/services/networking.scm (dhcp-client-service-type): Add default value. * gnu/system/examples/bare-bones.tmpl: Use (service dhcp-client-service-type) instead of (dhcp-client-service). * gnu/system/examples/beaglebone-black.tmpl: Likewise. * gnu/tests/base.scm (%avahi-os): Likewise. * gnu/tests/databases.scm (%memcached-os): Likewise. (%mongodb-os): Likewise. * gnu/tests/dict.scm (%dicod-os): Likewise. * gnu/tests/mail.scm (%opensmtpd-os): Likewise. (%exim-os): Likewise. (%dovecot-os): Likewise. * gnu/tests/messaging.scm (run-xmpp-test): Likewise. (run-bitlbee-test): Likewise. * gnu/tests/monitoring.scm (%prometheus-node-exporter-os): Likewise. * gnu/tests/networking.scm (%inetd-os): Likewise. (run-iptables-test): Likewise. * gnu/tests/nfs.scm (%base-os): Likewise. * gnu/tests/rsync.scm (%rsync-os): Likewise. * gnu/tests/ssh.scm (run-ssh-test): Likewise. * gnu/tests/version-control.scm (%cgit-os): Likewise. (%git-http-os): Likewise. (%gitolite-os): Likewise. * gnu/tests/virtualization.scm (%libvirt-os): Likewise. * gnu/tests/web.scm (%httpd-os): Likewise. (%nginx-os): Likewise. (%varnish-os): Likewise. (%php-fpm-os): Likewise. (%hpcguix-web-os): Likewise. (%tailon-os): Likewise. * tests/guix-system.sh: Likewise. * doc/guix.texi (Networking Services): Document 'dhcp-client-service-type' and remove 'dhcp-client-service'.
2018-09-08tests: base: Add Guile-Gcrypt & co. to the search path.Ludovic Courtès
Fixes a regression introduced in ca719424455465fca4b872c371daf2a46de88b33, whereby (gcrypt hash) would not be found in the system under test, leading to a failure of the "/run/current-system is a GC root" test. * gnu/tests/base.scm (run-basic-test)[guix&co]: New variable. [test]: Add all of GUIX&CO to %LOAD-PATH.
2018-07-13services: mcron: Add 'schedule' action.Ludovic Courtès
Inspired by <https://lists.gnu.org/archive/html/help-guix/2018-07/msg00035.html>. * gnu/services/mcron.scm (shepherd-schedule-action): New procedure. (mcron-shepherd-services): Add 'actions' field. * gnu/tests/base.scm (run-mcron-test)["schedule action"]: New test. * doc/guix.texi (Scheduled Job Execution): Mention 'herd schedule'.
2018-07-03tests: basic: Wait for /var/run/shepherd/socket to be ready.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test)["shepherd socket ready"]: New test.
2018-06-20services: boot: Take gexps instead of monadic gexps.Ludovic Courtès
* gnu/services.scm (compute-boot-script): Rename 'mexps' to 'gexps' and remove 'mlet' form. (boot-service-type): Update comment. (cleanup-gexp): Remove 'with-monad' and 'return'. (activation-script): Rewrite in non-monadic style: use 'scheme-file' instead of 'gexp->file'. (gexps->activation-gexp): Remove 'mlet', return a gexp. * gnu/services/shepherd.scm (shepherd-boot-gexp): Remove 'with-monad' and 'return'. * gnu/system.scm (operating-system-boot-script): Remove outdated comment. * gnu/tests/base.scm (%cleanup-os): For 'dirty-service', remove 'with-monad' and 'return'.
2018-06-20services: cleanup: Expect file names to be UTF-8-encoded.Ludovic Courtès
Fixes <https://bugs.gnu.org/26353>. Reported by Danny Milosavljevic <dannym@scratchpost.org>. * gnu/services.scm (cleanup-gexp): Add 'setenv' and 'setlocale' calls before 'delete-file-recursively'. * gnu/tests/base.scm (%cleanup-os, %test-cleanup): New variables. (run-cleanup-test): New procedure.
2018-06-13tests: Honor the return value of 'start-service'.Clément Lassieur
Since commit dc7b3e56337ee9d8dcd8fe7d5cab71ef536d024f, 'start-service' returns the Shepherd's representation of the service as a sexp, and '#f' if the service fails to start. Also, it doesn't throw an exception when the service fails to start, so relying on an exception instead of relying on its return value is a false positive. * gnu/tests/base.scm (run-nss-mdns-test): Split tests so to check the return value of 'start-service'. (run-mcron-test, run-nss-mdns-test): Use 'test-assert' with the return value of 'start-service'. * gnu/tests/admin.scm (run-tailon-test): Idem. * gnu/tests/dict.scm (run-dicod-test): Idem. * gnu/tests/mail.scm (run-opensmtpd-test, run-exim-test, run-dovecot-test): Idem. * gnu/tests/messaging.scm (run-xmpp-test, run-bitlbee-test): Idem. * gnu/tests/nfs.scm (run-nfs-test): Idem. * gnu/tests/rsync.scm (run-rsync-test): Idem. * gnu/tests/ssh.scm (run-ssh-test): Idem. * gnu/tests/version-control.scm (run-cgit-test, run-git-http-test): Idem. * gnu/tests/web.scm (run-php-fpm-test): Idem.
2018-04-19gnu: mcron: Update to 1.1.1.Ludovic Courtès
Fixes <https://bugs.gnu.org/31113>. Reported by George myglc2 Clemmer <myglc2@gmail.com>. * gnu/packages/guile.scm (mcron): Update to 1.1.1. [arguments]: Change timezone in 'set-timezone' phase. Remove 'disable-schedule-test' and 'wrap-programs' phases. Add 'adjust-tests' phase. * gnu/tests/base.scm (%mcron-os): Change JOB1 to use the 'next-seconds' form.
2018-03-19gnu: mcron: Update to 1.1 and deprecate "mcron2".Ludovic Courtès
* gnu/packages/guile.scm (mcron): Update to 1.1. [native-inputs]: Add TZDATA-FOR-TESTS. [arguments]: New field. (mcron2): Define using 'deprecated-package'. * gnu/services/mcron.scm: Replace 'mcron2' with 'mcron'. * doc/guix.texi (Scheduled Job Execution): Likewise. * gnu/tests/base.scm (%mcron-os): Remove comment about mcron2.
2018-02-19tests: Remove outdated comment.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test): Remove outdated comment.
2017-09-26tests: mcron: Adjust use of 'wait-for-file'.Ludovic Courtès
Fixes a regression introduced in 8bd5231485cdeb02078c4294badb3a1e7caa0fe0, whereby returning #<eof> would no longer work (since #<eof> would be in the cdr of the result, and thus it would not get converted to a string.) * gnu/tests/base.scm (run-mcron-test)["root's job with command"]: Pass #:read to 'wait-for-file'.
2017-09-08marionette: 'wait-for-file' can be passed a read procedure.Ludovic Courtès
* gnu/build/marionette.scm (wait-for-file): Add #:read parameter and honor it. * gnu/tests/base.scm (run-basic-test)["login on tty1"]: Use 'wait-for-file' instead of inline code.
2017-08-28services: user-processes: Reap child processes.Ludovic Courtès
Fixes <http://bugs.gnu.org/26931>. Reported by Leo Famulari <leo@famulari.name>. * gnu/services/base.scm (user-processes-service-type)[stop]: Add 'reap-children' loop. * gnu/tests/base.scm (run-halt-test): New procedure. (%test-halt): New variable.
2017-07-20tests: Use 'virtual-machine' records instead of monadic procedures.Ludovic Courtès
* gnu/tests/base.scm (%test-basic-os): Use 'let*' instead of 'mlet*' and 'virtual-machine' instead of 'system-qemu-image/shared-store-script'. (run-mcron-test): Likewise. (run-nss-mdns-test): Likewise. * gnu/tests/dict.scm (run-dicod-test): Likewise. * gnu/tests/mail.scm (run-opensmtpd-test): Likewise. (run-exim-test): Likewise. * gnu/tests/messaging.scm (run-xmpp-test): Likewise. * gnu/tests/networking.scm (run-inetd-test): Likewise. * gnu/tests/nfs.scm (run-nfs-test): Likewise. * gnu/tests/ssh.scm (run-ssh-test): Likewise. * gnu/tests/web.scm (run-nginx-test): Likewise.
2017-06-12marionette: Factorize 'wait-for-file'.Ludovic Courtès
* gnu/build/marionette.scm (wait-for-file): New procedure. * gnu/tests/base.scm (run-mcron-test)[test](wait-for-file): Remove. Pass second argument in 'wait-for-file' calls. * gnu/tests/ssh.scm (run-ssh-test)[test](wait-for-file): Remove. Pass second argument in 'wait-for-file' calls. * gnu/tests/messaging.scm (run-xmpp-test)[test](guest-wait-for-file): Remove. Use 'wait-for-file' instead, with second argument.
2017-05-30activation: Change permissions on /root to #o700.Ludovic Courtès
Reported by Alex Griffin <a@ajgrf.com>. Fixes <http://bugs.gnu.org/27135>. * gnu/build/activation.scm (add-user): When UID is zero, add 'chmod' call. * gnu/tests/base.scm (run-basic-test)["permissions on /root"]: New test.
2017-05-18services: user-homes: Do not create home directories marked as no-create.Ludovic Courtès
Fixes a bug whereby GuixSD would create the /nonexistent directory, from user 'nobody', even though it has 'create-home-directory?' set to #f. * gnu/build/activation.scm (activate-users+groups): Add comment for \#:create-home?. (activate-user-home)[ensure-user-home]: Skip when CREATE-HOME? is #f or SYSTEM? is #t. * gnu/tests/base.scm (run-basic-test)["no extra home directories"]: New tests.
2017-05-13tests: "basic" test loads (guix …) modules from the right place.Ludovic Courtès
This is a followup to 7561881f2a5d2dc463c24713745eca03e67044bf. * gnu/tests/base.scm (run-basic-test)["/run/current-system is a GC root"]: Remove 'set!' statements, add 'add-to-load-path' statement for GUIX.
2017-05-13tests: Strengthen GC root test.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test)["/run/current-system is a GC root"]: Check for a specific return value, 'success!.
2017-04-16services: 'service-parameters' becomes 'service-value'.Ludovic Courtès
* gnu/services.scm (<service>)[parameters]: Rename to... [value]: ... this. Change calls to 'service-parameters' to 'service-value'. * gnu/system.scm, gnu/tests/base.scm, guix/scripts/system.scm, tests/services.scm: Likewise. * doc/guix.texi (Service Reference): Adjust accordingly.
2017-04-01tests: Introduce 'simple-operating-system' and use it.Ludovic Courtès
* gnu/tests.scm (%simple-os): New macro. (simple-operating-system): New macro. * gnu/tests/base.scm (%simple-os): Define using 'simple-operating-system'. (%mcron-os): Use 'simple-operating-system'. * gnu/tests/mail.scm (%opensmtpd-os): Likewise. * gnu/tests/messaging.scm (%base-os, os-with-service): Remove. (run-xmpp-test): Use 'simple-operating-system'. * gnu/tests/networking.scm (%inetd-os): Likewise. * gnu/tests/ssh.scm (%base-os, os-with-service): Remove. (run-ssh-test): Use 'simple-operating-system'. * gnu/tests/web.scm (%nginx-os): Likewise.
2017-02-08services: Add 'special-files-service-type'.Ludovic Courtès
* gnu/build/activation.scm (activate-/bin/sh): Remove. (activate-special-files): New procedure. * gnu/services.scm (activation-script): Remove call to 'activate-/bin/sh'. (special-files-service-type): New variable. (extra-special-file): New procedure. * gnu/services/base.scm (%base-services): Add SPECIAL-FILES-SERVICE-TYPE instance. * gnu/tests/base.scm (run-basic-test)[special-files]: New variables. ["special files"]: New test.
2017-02-04activation: Set the right owner for home directories.Ludovic Courtès
This fixes a regression introduced in ae763b5b0b7d5e7316a3d0efe991fe8ab2261031 whereby home directories and skeletons would be root-owned. * gnu/build/activation.scm (copy-account-skeletons): Make 'directory' a keyword parameter. Add #:uid and #:gid and honor them. [set-owner]: New procedure. (activate-user-home): Add call to 'getpw' and 'chown'. Pass UID and GID to 'copy-account-skeletons'. * gnu/tests/base.scm (run-basic-test)["skeletons in home directories"]: Test file ownership under HOME.
2017-02-01system: Create home directories once 'file-systems' is up.Ludovic Courtès
Fixes <http://bugs.gnu.org/21108>. Reported by Andy Patterson <ajpatter@uwaterloo.ca> and Leo Famulari <leo@famulari.name>. * gnu/build/activation.scm (activate-users+groups)[activate-user]: Pass #:create-home? #t iff CREATE-HOME? and SYSTEM?. (activate-user-home): New procedure. * gnu/system/shadow.scm (account-shepherd-service): New procedure. (account-service-type)[extensions]: Add SHEPHERD-ROOT-SERVICE-TYPE extension. * gnu/tests/base.scm (run-basic-test)["home"] ["skeletons in home directories"]: New tests. * gnu/tests/install.scm (%separate-home-os, %separate-home-os-source) (%test-separate-home-os): New variables.
2017-01-24services: Create /var/log/wtmp upon activation.Ludovic Courtès
This fixes a bug whereby /var/log/wtmp would never be created, and thus accounting information would be lost. * gnu/services.scm (activation-script): Create /var/log/wtmp. * gnu/tests/base.scm (run-basic-test)["wtmp entry"]: New test.
2017-01-19services: Create /var/run/utmpx upon activation.Ludovic Courtès
This fixes a bug whereby /var/run/utmpx would never be created, and thus accounting information would be missing. * gnu/services.scm (activation-script): Create /var/run/utmpx. * gnu/tests/base.scm (run-basic-test)["utmpx entry"]: New test.
2016-11-23tests: Remove 'GUIX_LOCPATH' hack that had been added for glibc@2.23.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test)[test]("locale"): Remove 'GUIX_LOCPATH' hack, which is no longer needed since commit 9f58fe3d1c32e3f0ced065e286532a10cad1b5e3.
2016-11-23install: Enable "cryptodisk" handling in GRUB.Ludovic Courtès
This allows 'grub-install' to do the right thing when / or /boot is a LUKS-encrypted partition. Fixes <http://bugs.gnu.org/21843>. * gnu/build/install.scm (install-grub): Add 'setenv' to set 'GRUB_ENABLE_CRYPTODISK'. (wait-for-screen-text): New test. * gnu/tests/base.scm (run-basic-test): Add #:initialization parameter and honor it. * gnu/tests/install.scm (%encrypted-root-os)[kernel-arguments]: Remove. (%encrypted-root-installation-script): Pass '--uuid' to 'cryptsetup luksFormat'. Remove 'sed' invocation. (enter-luks-passphrase): New procedure. (%test-encrypted-os)[value]: Pass #:initialization to 'run-basic-test'.
2016-11-23marionette: Add 'marionette-screen-text' using OCR.Ludovic Courtès
* gnu/build/marionette.scm (marionette-screen-text): New procedure. * gnu/tests/base.scm (run-basic-test)["screen text"]: New test.
2016-11-17tests: basic: Fix harmless thinko.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test)["login on tty1"]: Move the file-waiting loop inside the 'marionette-eval' body. Before that, we were waiting for the file to appear on the host, which would never happen, meaning that we were always waiting for 15 seconds.
2016-09-06services: syslog: Use syslog-configuration.David Craven
* gnu/services/base.scm (<syslog-configuration>): New variable. (syslog-service-type): Use <syslog-configuration>. (syslog-service): Use <syslog-configuration>. * gnu/tests/base.scm (%avahi-os): Use <syslog-configuration>. * doc/guix.texi (syslog-configuration-type): Add @deftp. (syslog-service): Update @deffn.
2016-08-31services: herd: Provide <live-service> objects.Ludovic Courtès
* gnu/services/herd.scm (<live-service>): New record type. (current-services): Change to return a single value: #f or a list of <live-service>. * guix/scripts/system.scm (call-with-service-upgrade-info): Adjust accordingly. * gnu/tests/base.scm (run-basic-test)["shepherd services"]: Adjust accordingly.
2016-08-29tests: Make sure /var/guix/gcroots/profiles is a valid symlink.Ludovic Courtès
Reported by csanchezdll@gmail.com (Carlos Sánchez de La Lama) at <https://lists.gnu.org/archive/html/guix-devel/2016-08/msg01641.html>. * gnu/build/install.scm (directives): Add /var/guix/gcroots/profiles symlink. * gnu/tests/base.scm (run-basic-test)["/var/guix/gcroots/profiles is a valid symlink"]: New test.
2016-08-29tests: Make sure /run/current-system is a GC root.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test)["/run/current-system is a GC root"]: New test.
2016-08-02system: Define 'GUIX_LOCPATH' to work around 'glibc' package defect.Ludovic Courtès
Our 'glibc' package currently ignores /run/current-system/locale, although the intent is to look for locales in that directory. * gnu/packages/base.scm (glibc/linux): Add comment about /run/current-system/locale being ignored. * gnu/system.scm (operating-system-environment-variables): Add 'GUIX_LOCPATH'. * gnu/tests/base.scm (run-basic-test): Add "locale" test.
2016-07-12gnu: Switch to 'with-imported-modules'.Ludovic Courtès
* gnu/services.scm (directory-union): Use 'with-imported-modules' instead of the '#:modules' argument of 'computed-file'. * gnu/services/base.scm (udev-rules-union): Likewise. * gnu/services/dbus.scm (system-service-directory): Likewise. * gnu/services/desktop.scm (wrapped-dbus-service): (polkit-directory): Likewise. * gnu/services/networking.scm (tor-configuration->torrc): Likewise. * gnu/services/xorg.scm (xorg-configuration-directory): Likewise. * gnu/system/install.scm (self-contained-tarball): Likewise. * gnu/system/linux-container.scm (container-script): Likewise. * gnu/system/linux-initrd.scm (expression->initrd): Likewise, and remove #:modules parameter. (flat-linux-module-directory): Use 'with-imported-modules'. (base-initrd): Likewise. * gnu/system/locale.scm (locale-directory): Likewise. * gnu/system/shadow.scm (default-skeletons): Likewise. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Likewise. * gnu/tests/base.scm (run-basic-test): Likewise. * gnu/tests/install.scm (run-install): Likewise. * doc/guix.texi (Initial RAM Disk): Update 'expression->initrd' documentation.
2016-06-27tests: Add Avahi and NSS-mDNS test.Ludovic Courtès
* gnu/tests/base.scm (%avahi-os): New variable. (run-nss-mdns-test): New procedure. (%test-nss-mdns): New variable.
2016-06-27tests: base: Add host name resolution tests.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test)["host name resolution", "host not found"]: New tests.
2016-06-23tests: basic: Don't hard-code the expected architecture name.Ludovic Courtès
* gnu/tests/base.scm (run-basic-test)["uname"]: Don't hard-code the architecture.
2016-06-22services: Add 'mcron-service'.Ludovic Courtès
* gnu/services/mcron.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/tests/base.scm (%mcron-os, %test-mcron): New variables. (run-mcron-test): New procedure. * doc/guix.texi (Scheduled Job Execution): New node.