summaryrefslogtreecommitdiff
path: root/build-aux/build-self.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-07-20 22:23:15 +0200
committerLudovic Courtès <ludo@gnu.org>2016-07-20 22:53:02 +0200
commit13cee334f1a31e7d8f7124d045b136106fe8d356 (patch)
tree74af2900ae0ef80b8b752c51481e47f0b3abcf38 /build-aux/build-self.scm
parent0b0086e94c68769bfcada7c2b3b426873aac8efc (diff)
downloadgnu-guix-13cee334f1a31e7d8f7124d045b136106fe8d356.tar
gnu-guix-13cee334f1a31e7d8f7124d045b136106fe8d356.tar.gz
pull: Install (guix config) module to override the user's one.
* build-aux/build-self.scm (zlib, gzip, bzip2, xz): New variables. (build)[storedir, localstatedir, sysconfdir, sbindir]: New variables. [builder]: Pass them to 'build-guix'. * guix/build/pull.scm (build-guix): Add #:system, #:storedir, #:localstatedir, #:sysconfdir, #:sbindir, #:package-name, #:package-version, #:bug-report-address, #:home-page-url, #:libgcrypt, #:zlib, #:gzip, #:bzip2, and #:xz. Remove #:gcrypt. Instantiate all the substitution variables in (guix config). Remove code to delete OUT/guix/config.{scm,go}. * guix/config.scm.in: Add note about (guix script pull).
Diffstat (limited to 'build-aux/build-self.scm')
-rw-r--r--build-aux/build-self.scm48
1 files changed, 45 insertions, 3 deletions
diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm
index b78f3cb437..c673912af5 100644
--- a/build-aux/build-self.scm
+++ b/build-aux/build-self.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,6 +19,7 @@
(define-module (build-self)
#:use-module (gnu)
#:use-module (guix)
+ #:use-module (guix config)
#:use-module (srfi srfi-1)
#:export (build))
@@ -44,6 +45,18 @@
(define libgcrypt
(first (find-best-packages-by-name "libgcrypt" #f)))
+(define zlib
+ (first (find-best-packages-by-name "zlib" #f)))
+
+(define gzip
+ (first (find-best-packages-by-name "gzip" #f)))
+
+(define bzip2
+ (first (find-best-packages-by-name "bzip2" #f)))
+
+(define xz
+ (first (find-best-packages-by-name "xz" #f)))
+
(define guile-json
(first (find-best-packages-by-name "guile-json" #f)))
@@ -63,6 +76,19 @@
#:rest rest)
"Return a derivation that unpacks SOURCE into STORE and compiles Scheme
files."
+ ;; The '%xxxdir' variables were added to (guix config) in July 2016 so we
+ ;; cannot assume that they are defined. Try to guess their value when
+ ;; they're undefined (XXX: we get an incorrect guess when environment
+ ;; variables such as 'NIX_STATE_DIR' are defined!).
+ (define storedir
+ (if (defined? '%storedir) %storedir %store-directory))
+ (define localstatedir
+ (if (defined? '%localstatedir) %localstatedir (dirname %state-directory)))
+ (define sysconfdir
+ (if (defined? '%sysconfdir) %sysconfdir (dirname %config-directory)))
+ (define sbindir
+ (if (defined? '%sbindir) %sbindir (dirname %guix-register-program)))
+
(define builder
#~(begin
(use-modules (guix build pull))
@@ -73,12 +99,28 @@ files."
(build-guix #$output #$source
+ #:system #$%system
+ #:storedir #$storedir
+ #:localstatedir #$localstatedir
+ #:sysconfdir #$sysconfdir
+ #:sbindir #$sbindir
+
+ #:package-name #$%guix-package-name
+ #:package-version #$%guix-version
+ #:bug-report-address #$%guix-bug-report-address
+ #:home-page-url #$%guix-home-page-url
+
+ #:libgcrypt #$libgcrypt
+ #:zlib #$zlib
+ #:gzip #$gzip
+ #:bzip2 #$bzip2
+ #:xz #$xz
+
;; XXX: This is not perfect, enabling VERBOSE? means
;; building a different derivation.
#:debug-port (if #$verbose?
(current-error-port)
- (%make-void-port "w"))
- #:gcrypt #$libgcrypt)))
+ (%make-void-port "w")))))
(gexp->derivation "guix-latest" builder
#:modules '((guix build pull)