#!@GUILE@ --no-auto-compile -*- scheme -*- -*- geiser-scheme-implementation: guile -*- !# ;;; Guix Data Service -- Information about Guix over time ;;; Copyright © 2016, 2017 Ricardo Wurmus ;;; Copyright © 2018 Arun Isaac ;;; Copyright © 2019 Christopher Baines ;;; ;;; This file is part of guix-data-service. ;;; ;;; guix-data-service 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. ;;; ;;; guix-data-service 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 the guix-data-service. If not, see . (use-modules (srfi srfi-1) (srfi srfi-37) (ice-9 match) (ice-9 suspendable-ports) (fibers) (guix-data-service database) (guix-data-service data-deletion) (guix-data-service model package-derivation-by-guix-revision-range) (guix-data-service jobs load-new-guix-revision)) (setvbuf (current-output-port) 'line) (setvbuf (current-error-port) 'line) (setlocale LC_ALL "en_US.UTF-8") ;; Make stack traces more useful (setenv "COLUMNS" "256") (install-suspendable-ports!) (define %options (list (option '("skip-system-tests") #f #f (lambda (opt name _ result) (alist-cons 'skip-system-tests #t result))) (option '("parallelism") #t #f (lambda (opt name arg result) (alist-cons 'parallelism (string->number arg) (alist-delete 'parallelism result)))) (option '("inferior-set-environment-variable") #t #f (lambda (opt name arg result) (alist-cons 'inferior-environment-variable (string-split arg #\=) result))))) (define %default-options '((parallelism . 1))) (define (parse-options args) (args-fold args %options (lambda (opt name arg result) (error "unrecognized option" name)) (lambda (arg result) (alist-cons 'arguments (cons arg (or (assoc-ref result 'arguments) '())) (alist-delete 'arguments result))) %default-options)) (let ((opts (parse-options (cdr (program-arguments))))) (match (assq-ref opts 'arguments) ((job) (with-fluids ((%file-port-name-canonicalization 'none)) (run-fibers (lambda () (process-load-new-guix-revision-job job #:skip-system-tests? (assq-ref opts 'skip-system-tests) #:extra-inferior-environment-variables (filter-map (match-lambda (('inferior-environment-variable key val) (cons key val)) (_ #f)) opts) #:parallelism (assq-ref opts 'parallelism))) #:hz 0 #:parallelism 1)))))