;;;; job.scm - data structures for jobs ;;; ;;; Copyright © 2016 Mathieu Lirzin ;;; ;;; This file is part of Cuirass. ;;; ;;; Cuirass is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; Cuirass is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with Cuirass. If not, see . (define-module (cuirass job) #:use-module (cuirass base) #:use-module (srfi srfi-9) #:export ( make-job job? job-name job-derivation job-metadata make-job-spec job-spec? job-spec-name job-spec-url job-spec-load-path job-spec-branch job-spec-commit job-spec-tag job-spec-file job-spec-proc job-spec-arguments)) (define-record-type (%make-job name derivation metadata) job? (name job-name) ;string (derivation job-derivation) ;string (metadata job-metadata)) ;alist (define-syntax make-job (syntax-rules () ;; XXX: Different orders for keyword/argument pairs should be allowed. ((make-job #:name name #:derivation filename #:metadata metadata) (begin (format (current-error-port) "evaluating '~a'... " name) (force-output (current-error-port)) (%make-job name (call-with-time-display (λ () filename)) metadata))))) (define-record-type (%make-job-spec name url load-path branch commit file proc arguments) job-spec? (name job-spec-name) ;string (url job-spec-url) ;string (load-path job-spec-load-path) ;string (branch job-spec-branch) ;string (commit job-spec-commit) ;string (tag job-spec-tag) ;string (file job-spec-file) ;string (proc job-spec-proc) ;symbol (arguments job-spec-arguments)) ;alist (define* (make-job-spec #:key name url load-path commit tag file proc arguments (branch "master")) (%make-job-spec name url load-path branch tag file proc arguments))