aboutsummaryrefslogtreecommitdiff
path: root/build-aux/check-final-inputs-self-contained.scm
blob: c819086508b984ec73ba0da9a20dbc213e53af8e (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

;;;
;;; Check whether important binaries are available.
;;;

(use-modules (guix store)
             (guix grafts)
             (guix packages)
             (guix derivations)
             (guix ui)
             (gnu packages commencement)
             (ice-9 match)
             (srfi srfi-1)
             (srfi srfi-26))

(define (final-inputs store system)
  "Return the list of outputs directories of the final inputs for SYSTEM."
  (append-map (match-lambda
                ((or (name package) (name package _))
                 (let ((drv (package-derivation store package system)))
                   ;; Libc's 'debug' output refers to gcc-cross-boot0, but it's
                   ;; hard to avoid, so we tolerate it.  This should be the
                   ;; only exception.  Likewise, 'bash:include' depends on
                   ;; bootstrap-binaries via its 'Makefile.inc' (FIXME).
                   (filter-map (match-lambda
                                 (("debug" . directory)
                                  (if (string=? "glibc" (package-name package))
                                      #f
                                      directory))
                                 (("include" . directory)
                                  (if (string=? "bash" (package-name package))
                                      #f
                                      directory))
                                 ((_ . directory) directory))
                               (derivation->output-paths drv)))))
              %final-inputs))

(define (assert-valid-substitute substitute)
  "Make sure SUBSTITUTE does not refer to any bootstrap inputs, and bail out
if it does."
  (let ((references (substitutable-references substitute)))
    (when (any (cut string-contains <> "boot") references)
      (leave (G_ "'~a' refers to bootstrap inputs: ~s~%")
             (substitutable-path substitute) references))))

(define (test-final-inputs store system)
  "Check whether the final inputs for SYSTEM are clean---i.e., they don't
refer to the bootstrap tools."
  (format #t "checking final inputs for '~a'...~%" system)
  (let* ((inputs    (final-inputs store system))
         (available (substitutable-path-info store inputs)))
    (for-each (lambda (dir)
                (unless (find (lambda (substitute)
                                (string=? (substitutable-path substitute)
                                          dir))
                              available)
                  (leave (G_ "~a (system: ~a) has no substitute~%")
                         dir system)))
              inputs)

    (for-each assert-valid-substitute available)))

;; Entry point.
(with-store store
  (parameterize ((%graft? #f))
    (set-build-options store #:use-substitutes? #t)

    (for-each (cut test-final-inputs store <>)
              %hydra-supported-systems)))

o... (python-hypothesis-next): ... this. [propagated-inputs]: Add python-pytest. * gnu/packages/matrix.scm (python-matrix-nio): Adjust accordingly. * gnu/packages/python-web.scm (python-h2): Likewise. * gnu/packages/check.scm (python-hypothesis)[home-page]: Update URL. Maxim Cournoyer 2022-01-17gnu: pantalaimon: Add needed inputs...* gnu/packages/matrix.scm (pantalaimon) <propagated-inputs>: Add python-dbus, python-notify2, python-pydbus, and python-pygobject. <arguments>: Run sanity-check phase. Co-authored-by: Aleksandr Vityazev <avityazev@posteo.org> Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr> Morgan Smith 2022-01-12gnu: python-matrix-synapse-ldap3: Fix build....* gnu/packages/matrix.scm (python-matrix-synapse-ldap3)[arguments]: Delete sanity check. Marius Bakke 2022-01-11gnu: pantalaimon: Disable sanity check....* gnu/packages/matrix.scm (pantalaimon)[arguments]: Disable sanity-check phase. Marius Bakke 2021-12-13gnu: Simplify package inputs....This commit was obtained by running: ./pre-inst-env guix style without any additional argument. Ludovic Courtès 2021-10-18gnu: Add pantalaimon....* gnu/packages/matrix.scm (pantalaimon): New variable. Signed-off-by: Lars-Dominik Braun <lars@6xq.net> Sébastien Lerique 2021-10-18gnu: Add python-matrix-nio....* gnu/packages/matrix.scm (python-matrix-nio): New variable. Signed-off-by: Lars-Dominik Braun <lars@6xq.net> Sébastien Lerique 2021-10-15gnu: synapse: Downgrade to 1.29.0....As discussed in [1] and [2], python-synapse 1.44.0 does not work with our version of python-cryptography. [1]: https://lists.gnu.org/archive/html/guix-patches/2021-10/msg00732.html [2]: https://issues.guix.gnu.org/issue/48655 This reverts commit a6c30da4dc963e8a6282773fd1c2048d856a6cb4. * gnu/packages/matrix.scm (synapse): Downgrade to 1.29.0. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr> Felix Gruber 2021-10-12gnu: synapse: Update to 1.44.0....* gnu/packages/matrix.scm (synapse): Update to 1.44.0. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Felix Gruber 2021-04-01gnu: Add python-matrix-client....* gnu/packages/matrix.scm (python-matrix-client): New variable. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Giacomo Leidi 2021-03-25gnu: synapse: Update to 1.29.0....* gnu/packages/matrix.scm (synapse): Update to 1.29.0. Rafa Gálvez 2021-01-20gnu: synapse: Update to 1.25.0....* gnu/packages/matrix.scm (synapse): Update to 1.25.0. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Michael Rohleder 2020-12-12gnu: synapse: Update to 1.24.0....* gnu/packages/matrix.scm (synapse): Update to 1.24.0. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Michael Rohleder 2020-11-04gnu: synapse: Update to 1.22.1....* gnu/packages/matrix.scm (synapse): Update to 1.22.1. [propagated-inputs]: Add python-packaging. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Michael Rohleder 2020-10-15gnu: synapse: Update to 1.20.1....* gnu/packages/matrix.scm (synapse): Update to 1.20.1. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Michael Rohleder 2020-06-05gnu: synapse: Update to 1.14.0....* gnu/packages/matrix.scm (synapse): Update to 1.14.0. Tobias Geerinckx-Rice 2020-04-12gnu: Remove duplicate python-prometheus-client....* gnu/packages/monitoring.scm (python-prometheus-client): Update to 0.7.1. * gnu/packages/python-xyz.scm (python-prometheus-client): Remove variable. * gnu/packages/monitoring.scm: Import (gnu packages monitoring). Efraim Flashner 2020-04-02gnu: Add synapse....* gnu/packages/matrix.scm (synapse): New variable. Signed-off-by: Marius Bakke <mbakke@fastmail.com> Alex ter Weele 2020-04-02gnu: Add python-matrix-synapse-ldap3....* gnu/packages/matrix.scm: New file. (python-matrix-synapse-ldap3): New variable. * gnu/local.mk (GNU_SYSTEM_MODULES): Add matrix.scm. Signed-off-by: Marius Bakke <mbakke@fastmail.com> Alex ter Weele