aboutsummaryrefslogtreecommitdiff
path: root/gnu/system/examples/vm-image.tmpl
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2023-02-07 17:35:30 +0200
committerEfraim Flashner <efraim@flashner.co.il>2023-02-08 09:26:20 +0200
commit213073ee26799b9759159583b6a1a6cc75796a77 (patch)
tree3cca845f3f0e632ae7832dc56aa5a3fb163dd600 /gnu/system/examples/vm-image.tmpl
parente16158ddd0744fce7c82c28ee9c79ffe0fc6d8b0 (diff)
downloadguix-213073ee26799b9759159583b6a1a6cc75796a77.tar.gz
guix-213073ee26799b9759159583b6a1a6cc75796a77.zip
gnu: julia-quadgk: Update to 2.5.0.
* gnu/packages/julia-xyz.scm (julia-quadgk): Update to 2.5.0.
Diffstat (limited to 'gnu/system/examples/vm-image.tmpl')
0 files changed, 0 insertions, 0 deletions
eed no matter what #:user option is passed ;; to 'job'. (write '(set! getpw (const (getpwuid (getuid)))) port))) (call-with-output-file "job" (lambda (port) (write '#$job port))) (invoke #+(file-append mcron "/bin/mcron") "--schedule=20" "prologue" "job") (copy-file "job" #$output))) #:options '(#:env-vars (("COLUMNS" . "150"))))) (map validated-file jobs)) (define (shepherd-schedule-action mcron files) "Return a Shepherd action that runs MCRON with '--schedule' for the given files." (shepherd-action (name 'schedule) (documentation "Display jobs that are going to be scheduled.") (procedure #~(lambda* (_ #:optional (n "5")) ;; XXX: This is a global side effect. (setenv "GUILE_AUTO_COMPILE" "0") ;; Run 'mcron' in a pipe so we can explicitly redirect its output to ;; '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