From 7b2f9e0de1ad2d320973b7aea132a8afcad8bece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Lassieur?= Date: Tue, 26 Jun 2018 11:18:23 +0200 Subject: Add support for multiple inputs. * Makefile.am (dist_sql_DATA): Add src/sql/upgrade-1.sql. * bin/cuirass.in (show-help, %options, main): Remove the LOAD-PATH option that was used afterwards as %GUIX-PACKAGE-PATH. * bin/evaluate.in (absolutize, input-checkout, spec-source, spec-load-path, spec-package-path, format-checkouts): New procedures. (%not-colon): Remove variable. (main): Take the load path, package path and PROC from the checkouts that result from the inputs. Format the checkouts before sending them to the procedure. Remove the LOAD-PATH argument. * doc/cuirass.texi (Overview, Database schema): Document the changes. * examples/{guix-jobs.scm, hello-git.scm, hello-singleton.scm, hello-subset.scm, random.scm}: Adapt to the new specification format. * examples/guix-track-git.scm (package->spec): Rename to PACKAGE->INPUT. (package->git-tracked): Replace FETCH-REPOSITORY with FETCH-INPUT and handle the new format of its return value. * examples/random-jobs.scm (make-random-jobs): Rename RANDOM to CHECKOUT. Rename the checkout from 'random (which is a specification) to 'cuirass (which is a checkout resulting from an input). * src/cuirass/base.scm (fetch-repository): Rename to fetch-input. Rename SPEC to INPUT. Return a checkout object instead of returning two values. (evaluate): Take a list of CHECKOUTS and COMMITS as arguments, instead of SOURCE. Remove TOKENIZE and LOAD-PATH. Pass the CHECKOUTS instead of the SOURCE to "evaluate". Remove %GUIX-PACKAGE-PATH. Build the EVAL object instead of getting it from "evaluate". (compile?, fetch-inputs, compile-checkouts): New procedures. (process-specs): Fetch all inputs instead of only fetching one repository. The result of that fetching operation is a list of CHECKOUTS whose COMMITS are used as a STAMP. (%guix-package-path, set-guix-package-path): Remove them. * src/cuirass/database.scm (db-add-input, db-get-inputs): New procedures. (db-add-specification, db-get-specifications): Adapt to the new specification format. Add/get all inputs as well. (db-add-evaluation): Rename REVISION to COMMITS. Store COMMITS as space separated commit hashes. (db-get-builds): Rename REPO_NAME to NAME. (db-get-stamp): Rename COMMIT to STAMP. Return #f when there is no STAMP. (db-add-stamp): Rename COMMIT to STAMP. Deal with DB-GET-STAMP's new return value. (db-get-evaluations): Rename REVISION to COMMITS. Tokenize COMMITS. * src/cuirass/utils.scm (%non-blocking): Export it. * src/schema.sql (Inputs): New table that refers to the Specifications table. (Specifications): Move input related fields to the Inputs table. Rename REPO_NAME to NAME. Rename ARGUMENTS to PROC_ARGS. Rename FILE to PROC_FILE. Add LOAD_PATH_INPUTS, PACKAGE_PATH_INPUTS and PROC_INPUT fields that refer to the Inputs table. (Stamps): Rename REPO_NAME to NAME. (Evaluations): Rename REPO_NAME to NAME. Rename REVISION to COMMITS. (Specifications_index): Replace with Inputs_index. * src/sql/upgrade-1.sql: New file. * tests/database.scm (example-spec, make-dummy-eval, sqlite-exec): Adapt to the new specifications format. Rename REVISION to COMMITS. * tests/http.scm (evaluations-query-result, fill-db): Idem. --- examples/hello-git.scm | 55 ++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 31 deletions(-) (limited to 'examples/hello-git.scm') diff --git a/examples/hello-git.scm b/examples/hello-git.scm index f6df99c..6468452 100644 --- a/examples/hello-git.scm +++ b/examples/hello-git.scm @@ -1,6 +1,7 @@ ;;; hello-git.scm -- job specification test for hello git repository ;;; Copyright © 2016 Mathieu Lirzin ;;; Copyright © 2016 Jan Nieuwenhuizen +;;; Copyright © 2018 Clément Lassieur ;;; ;;; This file is part of Cuirass. ;;; @@ -17,37 +18,29 @@ ;;; You should have received a copy of the GNU General Public License ;;; along with Cuirass. If not, see . -(use-modules (srfi srfi-1)) - -(define (local-file file) - ;; In the common case jobs will be defined relative to the repository. - ;; However for testing purpose use local gnu-system.scm instead. - (string-append (dirname (current-filename)) "/" file)) - -(define (url->file-name url) - (string-trim - (string-map (lambda (c) (if (memq c (string->list ":/")) #\- c)) url) - #\-)) - -(define vc - ;; where your version-control checkouts live - (string-append (getenv "HOME") "/src")) -(define guix-checkout (string-append vc "/guix")) - ;; building GNU hello from git is too much work -;; (define hello-checkout (string-append vc "/hello")) -;; (define hello-git "http://git.savannah.gnu.org/r/hello.git") +(define cuirass-git "https://git.savannah.gnu.org/git/guix/guix-cuirass.git") ;; ... so let's track cuirass' git -(define cuirass-checkout (string-append vc "/cuirass")) -(define cuirass-git "https://notabug.org/mthl/cuirass") -;;(define cuirass-git "https://gitlab.com/janneke/cuirass.git") -(list - `((#:name . ,(url->file-name cuirass-checkout)) - (#:url . ,cuirass-git) - (#:branch . "master") - (#:no-compile? . #t) - (#:load-path . ,guix-checkout) - (#:proc . guix-jobs) - (#:file . ,(local-file "guix-track-git.scm")) - (#:arguments (name . "cuirass") (url . ,cuirass-git)))) +;; This builds the Guix Cuirass package with its source replaced by the last +;; commit of Cuirass' git repository. +(let ((top-srcdir (canonicalize-path + (string-append (dirname (current-filename)) "/..")))) + (list + `((#:name . "cuirass") + (#:load-path-inputs . ("guix")) + (#:package-path-inputs . ()) + (#:proc-input . "cuirass") + (#:proc-file . "examples/guix-track-git.scm") + (#:proc . guix-jobs) + (#:proc-args (name . "cuirass") (url . ,cuirass-git)) + (#:inputs . (((#:name . "guix") + (#:url . "git://git.savannah.gnu.org/guix.git") + (#:load-path . ".") + (#:branch . "master") + (#:no-compile? . #t)) + ((#:name . "cuirass") + (#:url . ,(string-append "file://" top-srcdir)) + (#:load-path . ".") + (#:branch . "master") + (#:no-compile? . #t))))))) -- cgit v1.2.3