diff options
-rw-r--r-- | bin/cuirass.in | 5 | ||||
-rw-r--r-- | bin/evaluate.in | 8 | ||||
-rw-r--r-- | src/cuirass/base.scm | 10 |
3 files changed, 17 insertions, 6 deletions
diff --git a/bin/cuirass.in b/bin/cuirass.in index 553a5d0..88813b8 100644 --- a/bin/cuirass.in +++ b/bin/cuirass.in @@ -35,6 +35,7 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@" Add specifications from SPECFILE to database. -D --database=DB Use DB to store build results. -I, --interval=N Wait N seconds between each poll + --use-substitutes Allow usage of pre-built substitutes -V, --version Display version -h, --help Display this help message") (newline) @@ -46,6 +47,7 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@" (specifications (single-char #\S) (value #t)) (database (single-char #\D) (value #t)) (interval (single-char #\I) (value #t)) + (use-substitutes (value #f)) (version (single-char #\V) (value #f)) (help (single-char #\h) (value #f)))) @@ -60,7 +62,8 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@" ((%program-name (car args)) (%package-database (option-ref opts 'database (%package-database))) (%package-cachedir - (option-ref opts 'cache-directory (%package-cachedir)))) + (option-ref opts 'cache-directory (%package-cachedir))) + (%use-substitutes? (option-ref opts 'use-substitutes #f))) (cond ((option-ref opts 'help #f) (show-help) diff --git a/bin/evaluate.in b/bin/evaluate.in index f0542ce..767e15e 100644 --- a/bin/evaluate.in +++ b/bin/evaluate.in @@ -44,8 +44,9 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@" (string-append cachedir "/" (assq-ref spec #:name)) (primitive-load (assq-ref spec #:file))))) (with-store store - ;; Make sure we don't resort to substitutes. - (set-build-options store #:use-substitutes? #f #:substitute-urls '()) + (unless (assoc-ref spec #:use-substitutes?) + ;; Make sure we don't resort to substitutes. + (set-build-options store #:use-substitutes? #f #:substitute-urls '())) ;; Grafts can trigger early builds. We do not want that to happen ;; during evaluation, so use a sledgehammer to catch such problems. (set! build-things @@ -54,7 +55,8 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@" stderr) (simple-format stderr "'build-things' arguments: ~S~%" args) (exit 1))) - (parameterize ((%package-database database)) + (parameterize ((%package-database database) + (%use-substitutes? (assoc-ref spec #:use-substitutes?))) ;; Call the entry point of FILE and print the resulting job sexp. (let* ((proc (module-ref %user-module 'hydra-jobs)) (thunks (proc store (assq-ref spec #:arguments))) diff --git a/src/cuirass/base.scm b/src/cuirass/base.scm index 52e0d00..8ad6af4 100644 --- a/src/cuirass/base.scm +++ b/src/cuirass/base.scm @@ -34,7 +34,12 @@ build-packages process-specs ;; Parameters. - %package-cachedir)) + %package-cachedir + %use-substitutes?)) + +(define %use-substitutes? + ;; Define whether to use substitutes + (make-parameter #f)) (define %package-cachedir ;; Define to location of cache directory of this package. @@ -149,7 +154,8 @@ if required." (with-store store (let* ((spec* (acons #:current-commit commit spec)) (jobs (evaluate store db spec*))) - (set-build-options store #:use-substitutes? #f) + (unless (%use-substitutes?) + (set-build-options store #:use-substitutes? #f)) (build-packages store db jobs)))) (db-add-stamp db spec commit))) jobspecs)) |