aboutsummaryrefslogtreecommitdiff
path: root/doc
ModeNameSize
-rw-r--r--build.scm36803logplainabout
-rw-r--r--contributing.texi48949logplainabout
-rw-r--r--environment-gdb.scm481logplainabout
-rw-r--r--fdl-1.3.texi23431logplainabout
-rw-r--r--guix-cookbook.texi73727logplainabout
-rw-r--r--guix.texi1038016logplainabout
-rw-r--r--htmlxref.cnf21794logplainabout
d---------images538logplain
-rw-r--r--local.mk8420logplainabout
-rw-r--r--package-hello.scm615logplainabout
;; 'current-output-port', which at this stage is bound to the client ;; connection. (let ((pipe (open-pipe* OPEN_READ #$(file-append mcron "/bin/mcron") (string-append "--schedule=" n) #$@files))) (let loop () (match (read-line pipe 'concat) ((? eof-object?) (catch 'system-error (lambda () (zero? (close-pipe pipe))) (lambda args ;; There's a race with the SIGCHLD handler, which ;; could call 'waitpid' before 'close-pipe' above does. If ;; we get ECHILD, that means we lost the race, but that's ;; fine. (or (= ECHILD (system-error-errno args)) (apply throw args))))) (line (display line) (loop))))))))) (define (mcron-shepherd-services config) (match-record config <mcron-configuration> (mcron jobs log? log-file log-format date-format home-service?) (if (eq? jobs '()) '() ;nothing to do (let ((files (job-files mcron jobs))) (list (shepherd-service (provision '(mcron)) (requirement (if home-service? '() '(user-processes))) (modules `((srfi srfi-1) (srfi srfi-26) (ice-9 popen) ;for the 'schedule' action (ice-9 rdelim) (ice-9 match) ((shepherd support) #:hide (mkdir-p)) ;for '%user-log-dir' ,@%default-modules)) (start #~(make-forkexec-constructor (list #$(file-append mcron "/bin/mcron") #$@(if log? `("--log" "--log-format" ,log-format ,@(if date-format (list "--date-format" date-format) '())) '()) #$@files) ;; Disable auto-compilation of the job files and ;; set a sane value for 'PATH'. #:environment-variables (cons* "GUILE_AUTO_COMPILE=0" #$(if home-service? '(environ) '(cons* "PATH=/run/current-system/profile/bin" (remove (cut string-prefix? "PATH=" <>) (environ))))) #:log-file #$log-file)) (stop #~(make-kill-destructor)) (actions (list (shepherd-schedule-action mcron files))))))))) (define mcron-service-type (service-type (name 'mcron) (description "Run the mcron job scheduling daemon.") (extensions (list (service-extension shepherd-root-service-type mcron-shepherd-services) (service-extension profile-service-type (compose list mcron-configuration-mcron)))) (compose concatenate) (extend (lambda (config jobs) (mcron-configuration (inherit config) (home-service? (mcron-configuration-home-service? config)) (jobs (append (mcron-configuration-jobs config) jobs))))) (default-value (mcron-configuration)))) ;empty job list (define-configuration/no-serialization cron-daemon-configuration (cron (package mcron) "The cron package to use.") (monitor-etc? (boolean #f) "Whether to check /etc/crontab for updates.")) (define (cron-daemon-shepherd-services config) (list (shepherd-service (provision '(cron-daemon)) (start #~(make-forkexec-constructor '(#$(file-append (cron-daemon-configuration-cron config) "/sbin/cron") #$@(if (cron-daemon-configuration-monitor-etc? config) '() '("--noetc"))) #:pid-file "/var/run/cron.pid")) (stop #~(make-kill-destructor))))) (define cron-daemon-activation (const #~(mkdir-p "/var/cron/tabs"))) (define (cron-daemon-setuid-programs config) (list (privileged-program (program (file-append (cron-daemon-configuration-cron config) "/sbin/crontab-access"))))) (define cron-daemon-service-type (service-type (name 'cron-daemon) (description "Run the traditional cron daemon.") (extensions (list (service-extension shepherd-root-service-type cron-daemon-shepherd-services) (service-extension activation-service-type cron-daemon-activation) (service-extension privileged-program-service-type cron-daemon-setuid-programs))) (default-value (cron-daemon-configuration)))) ;;; mcron.scm ends here