;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2017 Jan Nieuwenhuizen ;;; Copyright © 2018, 2019 Clément Lassieur ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix 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. ;;; ;;; GNU Guix 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 GNU Guix. If not, see . ;;; ;;; This file defines build jobs for the Hydra continuation integration ;;; tool. ;;; (use-modules (guix inferior) (guix channels) (guix) (guix ui) (srfi srfi-1) (ice-9 match)) ;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output ;; port to the bit bucket, let us write to the error port instead. (setvbuf (current-error-port) _IOLBF) (set-current-output-port (current-error-port)) (define (find-current-checkout arguments) "Find the first checkout of ARGUMENTS that provided the current file. Return #f if no such checkout is found." (let ((current-root (canonicalize-path (string-append (dirname (current-filename)) "/../..")))) (find (lambda (argument) (and=> (assq-ref argument 'file-name) (lambda (name) (string=? name current-root)))) arguments))) (define (hydra-jobs store arguments) "Return a list of jobs where each job is a NAME/THUNK pair." (define checkout (find-current-checkout arguments)) (define commit (assq-ref checkout 'revision)) (define source (assq-ref checkout 'file-name)) (define instance (checkout->channel-instance source #:commit commit)) (define derivation ;; Compute the derivation of Guix for COMMIT. (run-with-store store (channel-instances->derivation (list instance)))) (show-what-to-build store (list derivation)) (build-derivations store (list derivation)) ;; Open an inferior for the just-built Guix. (let ((inferior (open-inferior (derivation->output-path derivation)))) (inferior-eval '(use-modules (gnu ci) (ice-9 match)) inferior) (map (match-lambda ((name . fields) ;; Hydra expects a thunk, so here it is. (cons name (lambda () fields)))) (inferior-eval-with-store inferior store `(lambda (store) (map (match-lambda ((name . thunk) (cons name (thunk)))) (hydra-jobs store '((superior-guix-checkout . ,checkout) ,@arguments)))))))) uix-build.sh, tests/guix-daemon.sh, tests/guix-download.sh, tests/guix-environment-container.sh, tests/guix-environment.sh, tests/guix-gc.sh, tests/guix-git-authenticate.sh, tests/guix-graph.sh, tests/guix-hash.sh, tests/guix-home.sh, tests/guix-pack-relocatable.sh, tests/guix-pack.sh, tests/guix-package-aliases.sh, tests/guix-package-net.sh, tests/guix-package.sh, tests/guix-refresh.sh, tests/guix-shell.sh, tests/guix-style.sh, tests/guix-system.sh: Replace uses of '! ...' with '... && false' or `test ! ...` as appropriate. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Eric Bavier 2022-12-20tests: Adjust 'guix package' test to latest package search metrics....With commit bbcd06e56c06376e640a7ac81a7109e7135a20f2, the command "guix package -s '^fileutils$'" would match the 'ocaml-fileutils' package, because its 'package-upstream-name*' is "fileutils". Work around it. Reported by Vagrant Cascadian. * tests/guix-package.sh: Change "fileutils" example to use a different package name. Ludovic Courtès 2022-05-23scripts: package: Transform before creating manifest entries....* guix/scripts/package.scm (options->installable): Add TRANSFORM argument, to be able to directly transform the new packages before creating their manifest entries. (process-actions): Remove transform-entry, and step3, transforming directly in step2. * tests/guix-package.sh: Add test. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Josselin Poiret 2022-02-18profiles: 'profile-derivation' rejects unsupported packages....Previously user-facing commands would happily start building packages even if they do not support that system. With this change, all the user-facing commands reject unsupported packages without going further. * guix/profiles.scm (profile-derivation): Add #:allow-unsupported-packages?. Define 'check-supported-packages' and honor #:allow-unsupported-packages?. * tests/guix-pack.sh, tests/guix-package.sh, tests/guix-shell.sh: Ensure that unsupported packages are rejected. * tests/guix-system.sh: Pass "--system=armhf-linux" when attempting to build gnu/system/examples/asus-c201.tmpl. Ludovic Courtès 2021-04-29diagnostics, ui: Adjust to 'read-error' and 'syntax-error' in Guile 3.0.6....* guix/diagnostics.scm (source-properties->location): Add clause for vectors. * guix/ui.scm (report-load-error): Tweak 'read-error' handling for 3.0.6. * tests/guix-package.sh: Relax regexp for the "unbound variable" diagnostic check. * tests/guix-system.sh: Adjust "missing closing paren" check for 3.0.6. * tests/records.scm (location-alist): New procedure. ("define-record-type* & wrong field specifier") ("define-record-type* & wrong field specifier, identifier") ("define-record-type* & duplicate initializers"): Use it. Ludovic Courtès