aboutsummaryrefslogtreecommitdiff
path: root/THANKS
blob: 26476ab85a8d0f859851dccab90915c69c62023a (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
A big thanks to Eelco Dolstra, who designed and implemented Nix.
Transposing functional programming discipline to package management
proved to be inspiring and fruitful.

Thanks to the following people who contributed to GNU Guix through
suggestions, bug reports, patches, internationalization, or general
infrastructure help:

	    Lluís Batlle i Rossell <viric@viric.name>
          Sylvain Beucler <beuc@beuc.net>
	   Carlos Carleos <carleos@uniovi.es>
	   Felipe Castro <fefcas@gmail.com>
	   Daniel Clark <dclark@pobox.com>
	Alexandru Cojocaru <xojoc@gmx.com>
	    Aleix Conchillo Flaqué <aconchillo@gmail.com>
          Malcolm Cook <MEC@stowers.org>
           Thomas Danckaert <thomas.danckaert@gmail.com>
	   Rafael Ferreira <rafael.f.f1@gmail.com>
	Christian Grothoff <christian@grothoff.org>
             Eric Hanchrow <eric.hanchrow@gmail.com>
           Konrad Hinsen <konrad.hinsen@fastmail.net>
          Brandon Invergo <brandon@gnu.org>
           Anders Jonsson <anders.jonsson@norsjovallen.se>
	  Jeffrin Jose <ahiliation@yahoo.co.in>
	          Kete <kete@ninthfloor.org>
           Daniel Kochmański <dkochmanski@hellsgate.pl>
	  Matthew Lien <bluet@bluet.org>
             Dave Love <fx@gnu.org>
            Chris Marusich <cmmarusich@gmail.com>
            Niels Möller <nisse@lysator.liu.se>
          Cyprien Nicolas <cyprien@nicolas.tf>
	   Yutaka Niibe <gniibe@fsij.org>
           Andrei Osipov <andrspv@gmail.com>
                  Petter <petter@mykolab.ch>
             Adam Pribyl <pribyl@lowlevel.cz>
            Pjotr Prins <pjotr.public12@thebird.nl>
  Yakkala Yagnesh Raghava <hi@yagnesh.org>
           Joshua Randall <jcrandall@alum.mit.edu>
      Bruno Félix Rezende Ribeiro <oitofelix@gnu.org>
	    Benno Schulenberg <coordinator@translationproject.org>
           Thomas Schwinge <thomas@codesourcery.com>
        Alexander Shendi <Alexander.Shendi@web.de>
	     Alen Skondro <askondro@gmail.com>
              Jan Synáček <jan.synacek@gmail.com>
	 Matthias Wachs <wachs@net.in.tum.de>
        Christine Lemmer-Webber <cwebber@dustycloud.org>
           Philip Woods <elzairthesorcerer@gmail.com>

GNU Guix also includes non-software works.  Thanks to the following
people who contributed the logo and general artwork and themes:

           Nikita Karetnikov <nikita@karetnikov.org>
           Felipe López <felipe.lopez@openmailbox.org>
.nix \
$(TESTS)
if !BUILD_DAEMON_OFFLOAD
@@ -264,7 +265,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
--enable-daemon
dist-hook: sync-descriptions gen-ChangeLog assert-no-store-file-names
-distcheck-hook: assert-binaries-available
+distcheck-hook: assert-binaries-available assert-final-inputs-self-contained
sync-descriptions:
-$(top_builddir)/pre-inst-env $(GUILE) \
@@ -292,5 +293,11 @@ assert-binaries-available:
$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-available-binaries.scm"
+# Make sure the final inputs don't refer to bootstrap tools.
+assert-final-inputs-self-contained:
+ $(top_builddir)/pre-inst-env "$(GUILE)" \
+ "$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
+
.PHONY: sync-descriptions gen-ChangeLog clean-go
.PHONY: assert-no-store-file-names assert-binaries-available
+.PHONY: assert-final-inputs-self-contained
diff --git a/build-aux/check-final-inputs-self-contained.scm b/build-aux/check-final-inputs-self-contained.scm
new file mode 100644
index 0000000000..bf4a74110f
--- /dev/null
+++ b/build-aux/check-final-inputs-self-contained.scm
@@ -0,0 +1,83 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 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 at hydra.gnu.org.
+;;;
+
+(use-modules (guix store)
+ (guix packages)
+ (guix derivations)
+ (guix ui)
+ (gnu packages base)
+ (ice-9 match)
+ (srfi srfi-1)
+ (srfi srfi-26))
+
+(define %supported-systems
+ '("x86_64-linux" "i686-linux"))
+
+(define (final-inputs store system)
+ "Return the list of outputs directories of the final inputs for SYSTEM."
+ (append-map (match-lambda
+ ((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.
+ (filter-map (match-lambda
+ (("debug" . directory)
+ (if (string=? "glibc" (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 (_ "'~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 (_ "~a (system: ~a) has no substitute~%")
+ dir system)))
+ inputs)
+
+ (for-each assert-valid-substitute available)))
+
+;; Entry point.
+(with-store store
+ (set-build-options store #:use-substitutes? #t)
+
+ (for-each (cut test-final-inputs store <>)
+ %supported-systems))
+