From 5398d4d98decd9e74dbf557203c6523107ce559b Mon Sep 17 00:00:00 2001 From: Chris Marusich Date: Sun, 11 Mar 2018 01:13:01 +0100 Subject: [PATCH 1/7] gnu: bootstrap: Add trivial packages for bash, mkdir, tar, and xz. * gnu/packages/bootstrap.scm (bootstrap-binary): New procedure. (%bootstrap-bash, %bootstrap-mkdir, %bootstrap-tar, %bootstrap-xz): Use it to create these new packages, and export them. --- gnu/packages/bootstrap.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index 27f2053c4..1480880ae 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2017 Efraim Flashner +;;; Copyright © 2018 Chris Marusich ;;; ;;; This file is part of GNU Guix. ;;; @@ -43,6 +44,10 @@ bootstrap-guile-origin %bootstrap-guile + %bootstrap-bash + %bootstrap-mkdir + %bootstrap-tar + %bootstrap-xz %bootstrap-coreutils&co %bootstrap-binutils %bootstrap-gcc @@ -345,6 +350,35 @@ $out/bin/guile --version~%" (home-page #f) (license lgpl3+)))) +(define (bootstrap-binary program-name license) + (package + (name (string-append program-name "-bootstrap")) + ;; The version may differ depending on the program. + (version "unknown") + (source #f) + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:builder (let ((out (assoc-ref %outputs "out")) + (program (assoc-ref %build-inputs ,program-name))) + (mkdir out) + (mkdir (string-append out "/bin")) + (symlink program (string-append out "/bin/" ,program-name))))) + (inputs `((,program-name ,(search-bootstrap-binary program-name (%current-system))))) + (description (string-append "The bootstrap " program-name ".")) + (synopsis (string-append "The bootstrap " program-name ".")) + (license license) + (home-page #f))) + +;; These trivial packages provide individual binaries that are also included +;; in %bootstrap-coreutils&co. However, these packages are more minimal than +;; %bootstrap-coreutils&co, and they do not require network access to build +;; because these specific binaries are included in the Guix source tree. +(define %bootstrap-bash (bootstrap-binary "bash" gpl3+)) +(define %bootstrap-mkdir (bootstrap-binary "mkdir" gpl3+)) +(define %bootstrap-tar (bootstrap-binary "tar" gpl3+)) +(define %bootstrap-xz (bootstrap-binary "xz" (list gpl2+ lgpl2.1+))) + (define %bootstrap-coreutils&co (package-from-tarball "bootstrap-binaries" (lambda (system) -- 2.15.1