Package: guix-patches;
Reported by: Timothy Sample <samplet <at> ngyro.com>
Date: Mon, 14 Mar 2022 22:48:01 UTC
Severity: normal
Tags: patch
Done: Timothy Sample <samplet <at> ngyro.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 54394 in the body.
You can then email your comments to 54394 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:48:01 GMT) Full text and rfc822 format available.Timothy Sample <samplet <at> ngyro.com>
:guix-patches <at> gnu.org
.
(Mon, 14 Mar 2022 22:48:01 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: guix-patches <at> gnu.org Subject: [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Date: Mon, 14 Mar 2022 16:47:50 -0600
Hi all! This is culmination of a lot of work, so I’m excited to be submitting it! The main thrust of this series is to update Gash and Gash-Utils, and then remove most of the old GNU utilities we use during early bootstrap. To elaborate, the current situation is that we climb a ladder through time: first we build Bash 2, then we build Bash 4, and finally we build Bash 5. This is true for most GNU utilities: Sed, Gawk, Coreutils, etc. The reason? Until now, our Scheme implementations of those utilities (Gash and Gash-Utils) were very limited. Bash 2 used to be a lot more useful then Gash, for example. Now, with recent releases of Gash and Gash-Utils, the Scheme utilities are, in general, capable of powering the builds of modern GNU software. To be clear, we still climb the time-ladder in a few cases. The main ones are GCC, Glibc, and Binutils. For example, we have to use GCC 2 to transition from TCC To GCC 4 (which is the last non-C++ GCC [1]). Fixing this would require quite a bit of TCC hacking, I imagine. There are others, though. We still use old versions of Gzip, Make, patch, and Gawk. The fact that Gawk is still there disappoints me quite a bit, but ‘glibc-mesboot’ fails in a way that I just can’t figure out when building with Gash-Utils. Gzip is not strictly necessary, but also pretty easy to replace. I’m not sure, but I think patch is only there to avoid using patches in ‘origin’ records during bootstrap. We now have a way to do that, so it may no longer be necessary. Make will likely need to be rewritten in Scheme, but we have a head start: Potato Make [2]. [1] https://bootstrappable.org/projects.html [2] https://github.com/spk121/potato-make Here’s some detailed info for reviewers. The first patch is pretty independent. That testing package has been broken since GNU Hello was upgraded to 2.11. The next two patches spruce up the ‘gnu-bootstrap’ module. One fixes an omission, and the other gets it ready to handle Gash-Utils 0.2.0, which unfortunately has two module directories. The next three are updates. The bootar update optimistically assumes that someone with access will upload the source file to the Guix mirror URL: “mirror://gnu/guix/...” as was done with previous versions. The rest hopefully speak for themselves. Sadly, the last one is something of a jumble. Originally I wanted to remove the utilities one at a time, but it turns out there are interference effects. I can’t remember the exact details now, but to get an idea, removing both old Bash and old Grep might work, but removing one and then the other (in either order) might not. Hence, many utilities get updated in one commit. I have built this series all the way to the ‘hello’ package (the regular one, not the ‘-mesboot’ one). Based on that, I assume that everything should be fine. There’s always room for surprises, though! :) Let me know what you think. Timothy Sample (12): gnu: hello-mesboot: Downgrade to 2.10. gnu-bootstrap: Configure PACKAGE_NAME. gnu-bootstrap: Allow multiple module directories. gnu: gash-utils: Update to 0.2.0. gnu: bootar: Update to 1b. gnu: gash: Update to 0.3.0. gnu: gash-utils-boot: Create 'echo' wrapper. gnu: bzip2-mesboot: Remove package. gnu: sed-mesboot0: Remove package. gnu: binutils-mesboot0: Update to 2.20.1a. gnu: %boot-tcc-inputs: Remove extra "gash-utils". gnu: commencement: Remove many old utilities. gnu/local.mk | 1 - gnu/packages/commencement.scm | 895 ++++-------------- gnu/packages/patches/gash-utils-ls-test.patch | 25 - gnu/packages/shells.scm | 27 +- guix/build/gnu-bootstrap.scm | 32 +- 5 files changed, 192 insertions(+), 788 deletions(-) delete mode 100644 gnu/packages/patches/gash-utils-ls-test.patch -- Tim
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:58:02 GMT) Full text and rfc822 format available.Message #8 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 01/12] gnu: hello-mesboot: Downgrade to 2.10. Date: Mon, 14 Mar 2022 16:57:00 -0600
* gnu/packages/commencement.scm (hello-mesboot): Downgrade to 2.10. --- gnu/packages/commencement.scm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 5f594d1cfc..9090fbd44e 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2018 Tobias Geerinckx-Rice <me <at> tobias.gr> ;;; Copyright © 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke <at> gnu.org> ;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius <at> gnu.org> -;;; Copyright © 2020 Timothy Sample <samplet <at> ngyro.com> +;;; Copyright © 2020, 2022 Timothy Sample <samplet <at> ngyro.com> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury <at> disroot.org> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> ;;; Copyright © 2021 Chris Marusich <cmmarusich <at> gmail.com> @@ -1971,10 +1971,21 @@ (define xz-mesboot "CPPFLAGS=-D__GNUC__=1"))))) (define hello-mesboot - ;; Check for Scheme-only bootstrap. + ;; Check for Scheme-only bootstrap. Note that newer versions of Hello + ;; break due to the way that newer versions of Gnulib handle + ;; "limits.h". Hence, we stick to 2.10. (package (inherit hello) (name "hello-mesboot") + (version "2.10") + (source + (origin + (inherit (package-source hello)) + (uri (string-append "mirror://gnu/hello/hello-" version + ".tar.gz")) + (sha256 + (base32 + "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:58:02 GMT) Full text and rfc822 format available.Message #11 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 02/12] gnu-bootstrap: Configure PACKAGE_NAME. Date: Mon, 14 Mar 2022 16:57:01 -0600
* guix/build/gnu-bootstrap.scm (bootstrap-configure): Add a 'name' argument and use it to configure the PACKAGE_NAME variable. * gnu/packages/commencement.scm (bootar, gash-boot, gash-utils-boot): Use the new argument. --- gnu/packages/commencement.scm | 8 +++++--- guix/build/gnu-bootstrap.scm | 11 ++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 9090fbd44e..644db8cc58 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -120,7 +120,8 @@ (define bootar (guile (string-append guile-dir "/bin/guile"))) (invoke guile "--no-auto-compile" source) (chdir "bootar")))) - (replace 'configure (bootstrap-configure ,version "." "scripts")) + (replace 'configure (bootstrap-configure "Bootar" ,version + "." "scripts")) (replace 'build (bootstrap-build ".")) (replace 'install (bootstrap-install "." "scripts")))))) (inputs `(("guile" ,%bootstrap-guile))) @@ -156,7 +157,8 @@ (define gash-boot (use-modules (guix build gnu-bootstrap)) (modify-phases %standard-phases (replace 'configure - (bootstrap-configure ,(package-version gash) "gash" "scripts")) + (bootstrap-configure "Gash" ,(package-version gash) + "gash" "scripts")) (replace 'build (bootstrap-build "gash")) (replace 'install (bootstrap-install "gash" "scripts")) (add-after 'install 'install-symlinks @@ -219,7 +221,7 @@ (define gash-utils-boot (("@UTILITY@") "testb")) (delete-file "scripts/template.in"))) (replace 'configure - (bootstrap-configure ,(package-version gash-utils) + (bootstrap-configure "Gash-Utils" ,(package-version gash-utils) "gash" "scripts")) (replace 'build (bootstrap-build "gash")) (replace 'install (bootstrap-install "gash" "scripts")) diff --git a/guix/build/gnu-bootstrap.scm b/guix/build/gnu-bootstrap.scm index 1cb9dc5512..7ca6ae8458 100644 --- a/guix/build/gnu-bootstrap.scm +++ b/guix/build/gnu-bootstrap.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2020 Timothy Sample <samplet <at> ngyro.com> +;;; Copyright © 2020, 2022 Timothy Sample <samplet <at> ngyro.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,12 +30,12 @@ (define-module (guix build gnu-bootstrap) bootstrap-build bootstrap-install)) -(define (bootstrap-configure version modules scripts) +(define (bootstrap-configure name version modules scripts) "Create a procedure that configures an early bootstrap package. The procedure will search the MODULES directory and configure all of the -'.in' files with VERSION. It will then search the SCRIPTS directory and -configure all of the '.in' files with the bootstrap Guile and its module -and object directories." +'.in' files with NAME and VERSION. It will then search the SCRIPTS +directory and configure all of the '.in' files with the bootstrap +Guile and its module and object directories." (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (guile-dir (assoc-ref inputs "guile")) @@ -50,6 +50,7 @@ (define (bootstrap-configure version modules scripts) (let ((target (string-drop-right template 3))) (copy-file template target) (substitute* target + (("@PACKAGE_NAME@") name) (("@VERSION@") version)))) (find-files modules (lambda (fn st) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:58:03 GMT) Full text and rfc822 format available.Message #14 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 03/12] gnu-bootstrap: Allow multiple module directories. Date: Mon, 14 Mar 2022 16:57:02 -0600
* guix/build/gnu-bootstrap.scm (bootstrap-configure, bootstrap-build, bootstrap-install): Treat the 'modules' argument as a list of directories. * gnu/packages/commencement.scm (bootar, gash-boot, gash-utils-boot): Adjust call sites. --- gnu/packages/commencement.scm | 18 +++++++++--------- guix/build/gnu-bootstrap.scm | 21 ++++++++++++--------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 644db8cc58..fd3a9c37e7 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -121,9 +121,9 @@ (define bootar (invoke guile "--no-auto-compile" source) (chdir "bootar")))) (replace 'configure (bootstrap-configure "Bootar" ,version - "." "scripts")) - (replace 'build (bootstrap-build ".")) - (replace 'install (bootstrap-install "." "scripts")))))) + '(".") "scripts")) + (replace 'build (bootstrap-build '("."))) + (replace 'install (bootstrap-install '(".") "scripts")))))) (inputs `(("guile" ,%bootstrap-guile))) (home-page "https://git.ngyro.com/bootar") (synopsis "Tar decompression and extraction in Guile Scheme") @@ -158,9 +158,9 @@ (define gash-boot (modify-phases %standard-phases (replace 'configure (bootstrap-configure "Gash" ,(package-version gash) - "gash" "scripts")) - (replace 'build (bootstrap-build "gash")) - (replace 'install (bootstrap-install "gash" "scripts")) + '("gash") "scripts")) + (replace 'build (bootstrap-build '("gash"))) + (replace 'install (bootstrap-install '("gash") "scripts")) (add-after 'install 'install-symlinks (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -222,9 +222,9 @@ (define gash-utils-boot (delete-file "scripts/template.in"))) (replace 'configure (bootstrap-configure "Gash-Utils" ,(package-version gash-utils) - "gash" "scripts")) - (replace 'build (bootstrap-build "gash")) - (replace 'install (bootstrap-install "gash" "scripts")) + '("gash") "scripts")) + (replace 'build (bootstrap-build '("gash"))) + (replace 'install (bootstrap-install '("gash") "scripts")) ;; XXX: The scripts should add Gash to their load paths and ;; this phase should not exist. (add-after 'install 'copy-gash diff --git a/guix/build/gnu-bootstrap.scm b/guix/build/gnu-bootstrap.scm index 7ca6ae8458..b4257a3717 100644 --- a/guix/build/gnu-bootstrap.scm +++ b/guix/build/gnu-bootstrap.scm @@ -25,6 +25,7 @@ (define-module (guix build gnu-bootstrap) #:use-module (guix build utils) + #:use-module (srfi srfi-1) #:use-module (system base compile) #:export (bootstrap-configure bootstrap-build @@ -32,7 +33,7 @@ (define-module (guix build gnu-bootstrap) (define (bootstrap-configure name version modules scripts) "Create a procedure that configures an early bootstrap package. The -procedure will search the MODULES directory and configure all of the +procedure will search each directory in MODULES and configure all of the '.in' files with NAME and VERSION. It will then search the SCRIPTS directory and configure all of the '.in' files with the bootstrap Guile and its module and object directories." @@ -52,9 +53,8 @@ (define (bootstrap-configure name version modules scripts) (substitute* target (("@PACKAGE_NAME@") name) (("@VERSION@") version)))) - (find-files modules - (lambda (fn st) - (string-suffix? ".in" fn)))) + (append-map (lambda (dir) (find-files dir "\\.in$")) + modules)) (for-each (lambda (template) (format #t "Configuring ~a~%" template) (let ((target (string-drop-right template 3))) @@ -71,7 +71,7 @@ (define (bootstrap-configure name version modules scripts) (define (bootstrap-build modules) "Create a procedure that builds an early bootstrap package. The -procedure will search the MODULES directory and compile all of the +procedure will search each directory in MODULES and compile all of the '.scm' files." (lambda _ (add-to-load-path (getcwd)) @@ -81,13 +81,15 @@ (define (bootstrap-build modules) (dir (dirname scm))) (format #t "Compiling ~a~%" scm) (compile-file scm #:output-file go))) - (find-files modules "\\.scm$")) + (append-map (lambda (dir) (find-files dir "\\.scm$")) + modules)) #t)) (define (bootstrap-install modules scripts) "Create a procedure that installs an early bootstrap package. The -procedure will install all of the '.scm' and '.go' files in the MODULES -directory, and all the executable files in the SCRIPTS directory." +procedure will install all of the '.scm' and '.go' files in each of the +directories in MODULES, and all the executable files in the SCRIPTS +directory." (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (guile-dir (assoc-ref inputs "guile")) @@ -105,7 +107,8 @@ (define (bootstrap-install modules scripts) (install-file scm (string-append moddir "/" dir)) (format #t "Installing ~a~%" go) (install-file go (string-append godir "/" dir)))) - (find-files modules "\\.scm$")) + (append-map (lambda (dir) (find-files dir "\\.scm$")) + modules)) (for-each (lambda (script) (format #t "Installing ~a~%" script) (install-file script (string-append out "/bin"))) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:01 GMT) Full text and rfc822 format available.Message #17 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 04/12] gnu: gash-utils: Update to 0.2.0. Date: Mon, 14 Mar 2022 16:57:03 -0600
* gnu/packages/patches/gash-utils-ls-test.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. * gnu/packages/shells.scm (gash-utils): Update to 0.2.0. [source]: Remove patch and Guile 3.0 snippet. * gnu/packages/commencement.scm (gash-utils-boot)[source]: Do not modify parent value. [arguments]: Add "env" to the list of scripts to create in the 'pre-configure' phase; add the "gash-utils" module directory in the 'configure', 'build', and 'install' phases. --- gnu/local.mk | 1 - gnu/packages/commencement.scm | 17 ++++++------- gnu/packages/patches/gash-utils-ls-test.patch | 25 ------------------- gnu/packages/shells.scm | 13 ++-------- 4 files changed, 9 insertions(+), 47 deletions(-) delete mode 100644 gnu/packages/patches/gash-utils-ls-test.patch diff --git a/gnu/local.mk b/gnu/local.mk index 59c1b21cd6..7f6a26b943 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1077,7 +1077,6 @@ dist_patch_DATA = \ %D%/packages/patches/ganeti-shepherd-master-failover.patch \ %D%/packages/patches/ganeti-shepherd-support.patch \ %D%/packages/patches/ganeti-sphinx-compat.patch \ - %D%/packages/patches/gash-utils-ls-test.patch \ %D%/packages/patches/gawk-shell.patch \ %D%/packages/patches/gcc-arm-bug-71399.patch \ %D%/packages/patches/gcc-arm-link-spec-fix.patch \ diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index fd3a9c37e7..405cbedd71 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -175,10 +175,6 @@ (define gash-utils-boot (package (inherit gash-utils) (name "gash-utils-boot") - (source (origin - (inherit (package-source gash-utils)) - (patches '()) - (snippet #f))) ;discard snippet for Guile 3.0 support (arguments `(#:implicit-inputs? #f #:tests? #f @@ -210,9 +206,9 @@ (define gash-utils-boot (substitute* target (("@UTILITY@") script)))) '("awk" "basename" "cat" "chmod" "cmp" "command" - "compress" "cp" "cut" "diff" "dirname" "expr" - "false" "find" "grep" "head" "ln" "ls" "mkdir" - "mv" "printf" "pwd" "reboot" "rm" "rmdir" + "compress" "cp" "cut" "diff" "dirname" "env" + "expr" "false" "find" "grep" "head" "ln" "ls" + "mkdir" "mv" "printf" "pwd" "reboot" "rm" "rmdir" "sed" "sleep" "sort" "tar" "test" "touch" "tr" "true" "uname" "uniq" "wc" "which")) (format #t "Creating scripts/[.in~%") @@ -222,9 +218,10 @@ (define gash-utils-boot (delete-file "scripts/template.in"))) (replace 'configure (bootstrap-configure "Gash-Utils" ,(package-version gash-utils) - '("gash") "scripts")) - (replace 'build (bootstrap-build '("gash"))) - (replace 'install (bootstrap-install '("gash") "scripts")) + '("gash" "gash-utils") "scripts")) + (replace 'build (bootstrap-build '("gash" "gash-utils"))) + (replace 'install + (bootstrap-install '("gash" "gash-utils") "scripts")) ;; XXX: The scripts should add Gash to their load paths and ;; this phase should not exist. (add-after 'install 'copy-gash diff --git a/gnu/packages/patches/gash-utils-ls-test.patch b/gnu/packages/patches/gash-utils-ls-test.patch deleted file mode 100644 index e1dfb9c23b..0000000000 --- a/gnu/packages/patches/gash-utils-ls-test.patch +++ /dev/null @@ -1,25 +0,0 @@ -'ls.scm' monkey-patches (ice-9 getopt-long) to allow it to recognize '-1' -as a valid option. Unfortunately, monkey patching no longer works with -Guile 3.0 due to inlining, so change the test to make do without '-1'. - -diff --git a/tests/core-utils.org b/tests/core-utils.org -index d35ede8..22718e3 100644 ---- a/tests/core-utils.org -+++ b/tests/core-utils.org -@@ -93,14 +93,11 @@ - * ls - :script: - #+begin_src sh -- ls -1 tests/data/star -+ ls tests/data/star - #+end_src - :stdout: - #+begin_example -- 0 -- 1 -- 2 -- 3 -+ 0 1 2 3 - #+end_example - - * test-file diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 1652848705..9bd7ec291c 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -904,23 +904,14 @@ (define-public gash (define-public gash-utils (package (name "gash-utils") - (version "0.1.0") + (version "0.2.0") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/gash/gash-utils-" version ".tar.gz")) (sha256 (base32 - "0ib2p52qmbac5n0s5bys4fiwim461ps546976l1n7pwbs0avh7fk")) - (patches (search-patches "gash-utils-ls-test.patch")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Allow builds with Guile 3.0. - (substitute* "configure" - (("search=\"2\\.2 2\\.0\"") - "search=\"3.0 2.2 2.0\"")) - #t)))) + "18ylb54l9lmaynapbncc1zhbsirhihznrxihhxgqrpqgyjkfbap6")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:02 GMT) Full text and rfc822 format available.Message #20 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 05/12] gnu: bootar: Update to 1b. Date: Mon, 14 Mar 2022 16:57:04 -0600
* gnu/packages/commencement.scm (bootar): Update to 1b. --- gnu/packages/commencement.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 405cbedd71..084921781d 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -91,7 +91,7 @@ (define-module (gnu packages commencement) (define bootar (package (name "bootar") - (version "1a") + (version "1b") (source (origin (method url-fetch) (uri (list (string-append @@ -101,7 +101,7 @@ (define bootar version ".ses"))) (sha256 (base32 - "0mvp6vgx0q316fvy3z2lddlc5xgq5np3bm1fypgvj6dnayibg9np")))) + "0cf5vj5yxfvkgzvjvh2l7b2nz5ji5l534n9g4mfp8f5jsjqdrqjc")))) (build-system gnu-build-system) (arguments `(#:implicit-inputs? #f -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:02 GMT) Full text and rfc822 format available.Message #23 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 06/12] gnu: gash: Update to 0.3.0. Date: Mon, 14 Mar 2022 16:57:05 -0600
* gnu/packages/shells.scm (gash): Update to 0.3.0. [source]: Remove Guile 3.0 snippet. [arguments]: Delete arguments. * gnu/packages/commencement.scm (gash-boot)[source]: Do not remove the Guile 3.0 snippet (it no longer exists). --- gnu/packages/commencement.scm | 3 --- gnu/packages/shells.scm | 14 ++------------ 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 084921781d..e63c0b3437 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -143,9 +143,6 @@ (define gash-boot (package (inherit gash) (name "gash-boot") - (source (origin - (inherit (package-source gash)) - (snippet #f))) ;discard snippet for Guile 3.0 support (arguments `(#:implicit-inputs? #f #:tests? #f diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 9bd7ec291c..d46a6549b8 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -870,29 +870,19 @@ (define-public oil (define-public gash (package (name "gash") - (version "0.2.0") + (version "0.3.0") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/gash/gash-" version ".tar.gz")) (sha256 (base32 - "13m0yz5h9nj3x40mr6wr5xcpq1lscndfwcicw3skrz801025hhgf")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Allow builds with Guile 3.0. - (substitute* "configure" - (("search=\"2\\.2 2\\.0\"") - "search=\"3.0 2.2 2.0\"")) - #t)))) + "1af2jz4a6rzsshi379wzw4b8d04zvfamdhfzip2pgmk821lyqsjl")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list guile-3.0)) - (arguments - '(#:make-flags '("XFAIL_TESTS=tests/redirects.org"))) (home-page "https://savannah.nongnu.org/projects/gash/") (synopsis "POSIX-compatible shell written in Guile Scheme") (description "Gash is a POSIX-compatible shell written in Guile -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:02 GMT) Full text and rfc822 format available.Message #26 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 07/12] gnu: gash-utils-boot: Create 'echo' wrapper. Date: Mon, 14 Mar 2022 16:57:06 -0600
* gnu/packages/commencement.scm (gash-utils-boot)[arguments]: Add a phase that generates an external wrapper for Gash's 'echo' built-in. --- gnu/packages/commencement.scm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index e63c0b3437..df91f57b59 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -242,7 +242,19 @@ (define gash-utils-boot (copy-file (string-append gash-godir "/gash/compat.go") (string-append godir "/gash/compat.go")) (copy-recursively (string-append gash-godir "/gash/compat") - (string-append godir "/gash/compat"))))))))) + (string-append godir "/gash/compat"))))) + ;; We need an external echo. + (add-after 'install 'make-echo + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (gash (assoc-ref inputs "gash"))) + (with-output-to-file (string-append out "/bin/echo") + (lambda () + (display (string-append "#!" gash "/bin/gash\n")) + (newline) + (display "echo \"$@\"") + (newline))) + (chmod (string-append out "/bin/echo") #o755)))))))) (inputs `(("gash" ,gash-boot) ("guile" ,%bootstrap-guile))) (native-inputs `(("bootar" ,bootar))))) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:03 GMT) Full text and rfc822 format available.Message #29 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 08/12] gnu: bzip2-mesboot: Remove package. Date: Mon, 14 Mar 2022 16:57:07 -0600
gnu/packages/commencement.scm (bzip2-mesboot): Remove variable. (tcc-boot)[native-inputs]: Remove 'bzip2-mesboot'. [arguments]: Do not replace the 'unpack' phase. (%boot-tcc-inputs): Remove 'bzip2-mesboot'. --- gnu/packages/commencement.scm | 60 +---------------------------------- 1 file changed, 1 insertion(+), 59 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index df91f57b59..d0bac512a3 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -662,54 +662,6 @@ (define (%boot-tcc0-inputs) ("tcc" ,tcc-boot0) ,@(%boot-gash-inputs))) -(define bzip2-mesboot - ;; The initial bzip2 - (package - (inherit bzip2) - (name "bzip2-mesboot") - (version (package-version bzip2)) - (source (bootstrap-origin (package-source bzip2))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-tcc0-inputs)) - (outputs '("out")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:tests? #f ; check is naive, also checks non-built PROGRAMS - #:strip-binaries? #f ; no strip yet - #:make-flags (list "CC=tcc -I ." "AR=tcc -ar" "bzip2" - (string-append "PREFIX=" - (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - (substitute* "Makefile" - (("\tln " all) - (string-append "\t#" all))) - (substitute* "bzip2.c" - (("struct utimbuf uTimBuf;" all) - (string-append "// " all)) - (("uTimBuf[.]" all) - (string-append "// " all)) - (("retVal = utime [(] dstName, &uTimBuf [)];" all) - (string-append "retVal = 0; // " all))))) - (replace 'configure - (lambda _ - (with-output-to-file "utime.h" - (lambda _ (display " -#define fchown(filedes, owner, group) 0 -#define fchmod(filedes, mode) 0 -"))))) - (replace 'check - (lambda _ - (invoke "./bzip2" "--help"))) - ;; FIXME: no compressing gzip yet - (delete 'compress-documentation)))))) - (define bash-mesboot0 ;; The initial Bash (package @@ -818,8 +770,7 @@ (define tcc-boot (build-system gnu-build-system) (inputs '()) (propagated-inputs '()) - (native-inputs `(("bzip2" ,bzip2-mesboot) - ,@(%boot-tcc0-inputs))) + (native-inputs (%boot-tcc0-inputs)) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile @@ -827,14 +778,6 @@ (define tcc-boot #:strip-binaries? #f ; no strip yet #:phases (modify-phases %standard-phases - ;; tar xvf ..bz2 gives - ;; bzip2: PANIC -- internal consistency error - (replace 'unpack - (lambda* (#:key source #:allow-other-keys) - (copy-file source "tarball.tar.bz2") - (invoke "bzip2" "-d" "tarball.tar.bz2") - (invoke "tar" "xvf" "tarball.tar") - (chdir (string-append "tcc-" ,version)))) (add-after 'unpack 'scripted-patch (lambda* (#:key inputs #:allow-other-keys) (substitute* "libtcc.c" @@ -982,7 +925,6 @@ (define sed-mesboot0 (define (%boot-tcc-inputs) `(("bash" ,bash-mesboot0) - ("bzip2" ,bzip2-mesboot) ("gzip" ,gzip-mesboot) ("patch" ,patch-mesboot) ("sed" ,sed-mesboot0) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:03 GMT) Full text and rfc822 format available.Message #32 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 09/12] gnu: sed-mesboot0: Remove package. Date: Mon, 14 Mar 2022 16:57:08 -0600
* gnu/packages/commencement.scm (sed-mesboot0): Remove variable. (%boot-tcc-inputs): Remove 'sed-mesboot0'. --- gnu/packages/commencement.scm | 44 ----------------------------------- 1 file changed, 44 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index d0bac512a3..49b7defffb 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -881,54 +881,10 @@ (define patch-mesboot ;; FIXME: no compressing gzip yet (delete 'compress-documentation)))))) -(define sed-mesboot0 - ;; The initial sed. - (package - (inherit sed) - (name "sed-mesboot0") - (version "1.18") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/sed/sed-" - version ".tar.gz")) - (sha256 - (base32 - "1hyv7i82jd0q18xcql51ylc8jwadp3gb3irgcqlis3v61p35jsv2")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-tcc0-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:configure-flags '("CC=tcc") - #:make-flags '("CC=tcc" "extra_objs=" "DEFS=-D HAVE_BCOPY") - #:strip-binaries? #f ; no strip yet - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (substitute* "configure" - (("/bin/sh") shell))))) - (replace 'check - (lambda _ - (invoke "./sed" "--version"))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (install-file "sed" bin))))))))) - (define (%boot-tcc-inputs) `(("bash" ,bash-mesboot0) ("gzip" ,gzip-mesboot) ("patch" ,patch-mesboot) - ("sed" ,sed-mesboot0) - ;; Place lower than sed so we don't override it. ("gash-utils" ,gash-utils-boot) ("tcc" ,tcc-boot) ,@(alist-delete "tcc" (%boot-tcc0-inputs)))) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:04 GMT) Full text and rfc822 format available.Message #35 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 10/12] gnu: binutils-mesboot0: Update to 2.20.1a. Date: Mon, 14 Mar 2022 16:57:09 -0600
This restores the package to how it was before the Scheme-only bootstrap. See cb167958ea904fc79913b883cb771e2d691402e0. * gnu/packages/commencement.scm (binutils-mesboot0): Update to 2.20.1a. (binutils-mesboot1)[arguments]: Remove #:phases substitution. (binutils-mesboot): Inherit from binutils-mesboot1, changing only the native-inputs field. --- gnu/packages/commencement.scm | 140 +++++++--------------------------- 1 file changed, 27 insertions(+), 113 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 49b7defffb..6dd480dc11 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -894,14 +894,17 @@ (define binutils-mesboot0 (package (inherit binutils) (name "binutils-mesboot0") - (version "2.14") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/binutils/binutils-" - version ".tar.gz")) - (sha256 - (base32 - "1w8xp7k44bkijr974x9918i4p1sw4g2fcd5mxvspkjpg38m214ds")))) + (version "2.20.1a") + (source (bootstrap-origin + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/binutils/binutils-" + version ".tar.bz2")) + (patches (search-patches "binutils-boot-2.20.1a.patch")) + (patch-guile %bootstrap-guile) + (sha256 + (base32 + "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))) (inputs '()) (propagated-inputs '()) (native-inputs (%boot-tcc-inputs)) @@ -913,40 +916,21 @@ (define binutils-mesboot0 #:parallel-build? #f #:strip-binaries? #f ; no strip yet #:configure-flags - (let ((out (assoc-ref %outputs "out"))) - `("--disable-nls" + (let ((cppflags (string-append " -D __GLIBC_MINOR__=6" + " -D MES_BOOTSTRAP=1")) + (bash (assoc-ref %build-inputs "bash"))) + `(,(string-append "CONFIG_SHELL=" bash "/bin/sh") + ,(string-append "CPPFLAGS=" cppflags) + "AR=tcc -ar" + "CXX=false" + "RANLIB=true" + ,(string-append "CC=tcc" cppflags) + "--disable-nls" "--disable-shared" "--disable-werror" - "--build=i386-unknown-linux" - "--host=i386-unknown-linux" - "--target=i386-unknown-linux" - "--with-sysroot=/" - ,(string-append "--prefix=" out))) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'setenv - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (setenv "CONFIG_SHELL" shell) - (setenv "SHELL" shell) - (setenv "AR" "tcc -ar") - (setenv "RANLIB" "true") - (setenv "CC" "tcc -D __GLIBC_MINOR__=6")))) - (add-after 'unpack 'scripted-patch - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "bfd/configure" - (("^sed -e '/SRC-POTFILES.*" all) - "echo -e 'all:\\n\\ttrue\\n\\ninstall:\\n\\ttrue\\n' > po/Makefile\n")))) - (replace 'configure ; needs classic invocation of configure - (lambda* (#:key configure-flags #:allow-other-keys) - (format (current-error-port) - "running ./configure ~a\n" (string-join configure-flags)) - (apply system* "./configure" configure-flags) - (substitute* "config.status" - (("[.]//dev/null") "/dev/null")) - (invoke "sh" "./config.status")))))))) + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--with-sysroot=/")))))) (define gcc-core-mesboot0 ;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C @@ -1420,15 +1404,7 @@ (define binutils-mesboot1 "--build=i686-unknown-linux-gnu" "--host=i686-unknown-linux-gnu" "--with-sysroot=/" - ,(string-append "--prefix=" out)))) - ((#:phases phases) - `(modify-phases ,phases - (replace 'setenv - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (setenv "CONFIG_SHELL" shell)))))))))) + ,(string-append "--prefix=" out)))))))) (define coreutils-mesboot0 (package @@ -1911,72 +1887,10 @@ (define hello-mesboot (define binutils-mesboot (package - (inherit binutils) + (inherit binutils-mesboot1) (name "binutils-mesboot") - (version "2.20.1a") - (source (bootstrap-origin - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/binutils/binutils-" - version ".tar.bz2")) - (patches (search-patches "binutils-boot-2.20.1a.patch")) - (sha256 - (base32 - "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))) - (inputs '()) - (propagated-inputs '()) (native-inputs `(("xz" ,xz-mesboot) - ,@(%boot-mesboot2-inputs))) - (supported-systems '("i686-linux" "x86_64-linux")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f ; runtest: command not found - #:parallel-build? #f - #:strip-binaries? #f ; no strip yet - #:configure-flags - `("CC=gcc" - "CXX=false" - "RANLIB=true" - "--disable-doc" - "--disable-nls" - "--disable-shared" - "--disable-werror" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--with-sysroot=/" - ;; checking for grep that handles long lines and -e - "ac_cv_path_GREP=grep") - ;; FIXME: ac_cv_path_GREP=grep doesn't seem to be forwarded to - ;; cascading configure's? - #:make-flags '("ac_cv_path_GREP=grep") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - ;; sed-mesboot0 cannot build these - (copy-file "binutils/Makefile.in" "binutils/Makefile.in.orig") - (substitute* "binutils/Makefile.in" - ;; binutils/binutils uses an amazingly complex install - ;; command, using FOR, SED, READ, IF, ECHO, SED, SED, AWK, - ;; READ, and then LIBTOOL (to do something like - ;; `mkdir $DESTDIR$bindir; cp readline $DESTDIR$bindir ...') - - ;; Some tool [debugme!] cannot handle two escaped newlines - ;; (bash?), and the install stops after $(am__EXEEXT_11) - ;; ("objcopy"), so $(am__EXEEXT_13) ("readelf") and others do - ;; not get installed. Remove the stray newline: - (("^\t <at> BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ .*") "")) - (substitute* "opcodes/Makefile.in" - (("^SUBDIRS = [.] po") "SUBDIRS = .")) - (substitute* "binutils/Makefile.in" - (("^SUBDIRS = doc po") "SUBDIRS =")) - (substitute* "gas/Makefile.in" - (("^SUBDIRS = doc po") "SUBDIRS =")) - (substitute* "gprof/Makefile.in" - (("^SUBDIRS = po") "SUBDIRS =")) - (substitute* "ld/Makefile.in" - (("^SUBDIRS = po") "SUBDIRS ="))))))))) + ,@(%boot-mesboot2-inputs))))) (define (%boot-mesboot3-inputs) `(("binutils" ,binutils-mesboot) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:04 GMT) Full text and rfc822 format available.Message #38 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 11/12] gnu: %boot-tcc-inputs: Remove extra "gash-utils". Date: Mon, 14 Mar 2022 16:57:10 -0600
* gnu/packages/commencement.scm (%boot-tcc-inputs): Remove 'gash-utils-boot' (it is already included in '%boot-gash-inputs' under the name "coreutils"). --- gnu/packages/commencement.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 6dd480dc11..13862bf02e 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -885,7 +885,6 @@ (define (%boot-tcc-inputs) `(("bash" ,bash-mesboot0) ("gzip" ,gzip-mesboot) ("patch" ,patch-mesboot) - ("gash-utils" ,gash-utils-boot) ("tcc" ,tcc-boot) ,@(alist-delete "tcc" (%boot-tcc0-inputs)))) -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 14 Mar 2022 22:59:04 GMT) Full text and rfc822 format available.Message #41 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: 54394 <at> debbugs.gnu.org Cc: Timothy Sample <samplet <at> ngyro.com> Subject: [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities. Date: Mon, 14 Mar 2022 16:57:11 -0600
* gnu/packages/commencement.scm (bash-mesboot0): Delete variable... (%boot-tcc-inputs): ...and remove it from here. (gawk-mesboot0): Delete variable... (%boot-mesboot-core-inputs): ...and remove it from here. (coreutils-mesboot0): Delete variable. (%boot-mesboot1-inputs): Remove 'bash-mesboot', 'coreutils-mesboot0', 'gawk-mesboot', 'grep-mesboot', 'sed-mesboot', and 'tar-mesboot' from the list of inputs to add; and remove "bash", "bootar", "coreutils", "gash", "gawk", "grep", "guile", "sed", and "tar" from the list of inputs to delete. (hello-mesboot)[native-inputs]: Remove 'xz-mesboot'. (gawk-mesboot)[native-inputs]: Use '%boot-mesboot2-inputs'. (%boot-mesboot3-inputs): Remove 'xz-mesboot'; add 'gawk-mesboot'. (glibc-headers-mesboot)[arguments]: Add 'remove-bashism' phase. (glibc-mesboot)[arguments]: Add 'simplify-intl-tests' phase. (gcc-mesboot1-wrapper)[native-inputs]: Replace 'bash-mesboot' and 'coreutils-mesboot0' with 'gash-boot' and 'gash-utils-boot'. (gcc-mesboot-wrapper): Likewise. (mesboot-package): New procedure. (bash-mesboot, coreutils-mesboot, grep-mesboot, sed-mesboot, xz-mesboot, tar-mesboot): Recreate in terms of 'mesboot-package' using up-to-date versions. (%boot-mesboot6-inputs): Add 'bash-mesboot', 'coreutils-mesboot', 'grep-mesboot', 'sed-mesboot', 'tar-mesboot', and 'xz-mesboot' to the list of inputs to add; and add "bash" and "bootar" to the list of inputs to delete. --- gnu/packages/commencement.scm | 599 ++++++---------------------------- 1 file changed, 107 insertions(+), 492 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 13862bf02e..7147e5860f 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -662,104 +662,6 @@ (define (%boot-tcc0-inputs) ("tcc" ,tcc-boot0) ,@(%boot-gash-inputs))) -(define bash-mesboot0 - ;; The initial Bash - (package - (inherit static-bash) - (name "bash-mesboot0") - (version "2.05b") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/bash/bash-" - version ".tar.gz")) - (sha256 - (base32 - "1r1z2qdw3rz668nxrzwa14vk2zcn00hw7mpjn384picck49d80xs")))) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-tcc0-inputs)) - (outputs '("out")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:strip-binaries? #f ; no strip yet - #:configure-flags - (list "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - - "--without-bash-malloc" - "--disable-readline" - "--disable-history" - "--disable-help-builtin" - "--disable-progcomp" - "--disable-net-redirections" - "--disable-nls" - - ;; Pretend 'dlopen' is missing so we don't build loadable - ;; modules and related code. - "ac_cv_func_dlopen=no") - #:make-flags '("bash") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'setenv - (lambda _ - (let* ((gash (assoc-ref %build-inputs "bash")) - (shell (string-append gash "/bin/gash"))) - (setenv "CONFIG_SHELL" shell) - (setenv "SHELL" shell) - (setenv "CC" "tcc") - (setenv "LD" "tcc") - (setenv "AR" "tcc -ar") - (setenv "CFLAGS" "-D _POSIX_VERSION=1")))) - (add-after 'unpack 'scripted-patch - (lambda _ - (substitute* "Makefile.in" - (("mksyntax\\.c\n") "mksyntax.c -lgetopt\n") - (("buildversion[.]o\n") "buildversion.o -lgetopt\n") - ;; No size in Gash - (("\tsize ") "#\tsize")) - (substitute* "lib/sh/oslib.c" - (("int name, namelen;") "char *name; int namelen;")) - (substitute* "lib/sh/snprintf.c" - (("^#if (defined [(]HAVE_LOCALE_H[)])" all define) (string-append "#if 0 //" define))) - (substitute* "configure" - ((" egrep") " grep")))) - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (let ((configure-flags (filter (lambda (x) - (and (not (string-prefix? "CONFIG_SHELL=" x)) - (not (string-prefix? "SHELL=" x)))) - configure-flags))) - (format (current-error-port) - "running ./configure ~a\n" (string-join configure-flags))) - (apply invoke (cons "./configure" configure-flags)))) - (add-after 'configure 'configure-fixups - (lambda _ - (substitute* "config.h" - (("#define GETCWD_BROKEN 1") "#undef GETCWD_BROKEN")) - (let ((config.h (open-file "config.h" "a"))) - (display " -// tcc: error: undefined symbol 'enable_hostname_completion' -#define enable_hostname_completion(on_or_off) 0 - -// /gnu/store/…-tcc-boot0-0.9.26-6.c004e9a/lib/libc.a: error: 'sigprocmask' defined twice -#define HAVE_POSIX_SIGNALS 1 -#define endpwent(x) 0 -" - config.h) - (close config.h)))) - (replace 'check - (lambda _ - (invoke "./bash" "--version"))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (mkdir-p bin) - (copy-file "bash" (string-append bin "/bash")) - (copy-file "bash" (string-append bin "/sh")))))))))) - (define tcc-boot ;; The final tcc. (package @@ -882,8 +784,7 @@ (define patch-mesboot (delete 'compress-documentation)))))) (define (%boot-tcc-inputs) - `(("bash" ,bash-mesboot0) - ("gzip" ,gzip-mesboot) + `(("gzip" ,gzip-mesboot) ("patch" ,patch-mesboot) ("tcc" ,tcc-boot) ,@(alist-delete "tcc" (%boot-tcc0-inputs)))) @@ -1056,7 +957,6 @@ (define gcc-core-mesboot0 (define (%boot-mesboot-core-inputs) `(("binutils" ,binutils-mesboot0) - ("gawk" ,gawk-mesboot0) ("gcc" ,gcc-core-mesboot0) ,@(alist-delete "tcc" (%boot-tcc-inputs)))) @@ -1087,72 +987,6 @@ (define mesboot-headers (copy-recursively "include" out) (copy-recursively headers out))))))))) -(define gawk-mesboot0 - ;; The initial Gawk. - (package - (inherit gawk) - (name "gawk-mesboot0") - (version "3.0.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gawk/gawk-" - version ".tar.gz")) - (sha256 - (base32 - "087s7vpc8zawn3l7bwv9f44bf59rc398hvaiid63klw6fkbvabr3")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-tcc-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:configure-flags '("--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--disable-nls") - #:make-flags '("gawk") - #:parallel-build? #f - #:parallel-tests? #f - #:strip-binaries? #f ; no strip yet - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - (substitute* "Makefile.in" - (("date ") "echo today ") - ((" autoheader") "true") - ((" -lm ") " ")) - (substitute* "test/Makefile.in" - (("^bigtest:.*") "bigtest: basic\n") - (("( |\t)(childin|convfmt|fflush|longwrds|math|negexp)" all sep) sep)))) - (add-before 'configure 'setenv - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (setenv "CONFIG_SHELL" shell) - (setenv "SHELL" shell) - (setenv "CC" "tcc") - (setenv "CPP" "tcc -E") - (setenv "LD" "tcc") - (setenv "ac_cv_func_getpgrp_void" "yes") - (setenv "ac_cv_func_tzset" "yes")))) - (replace 'configure ; needs classic invocation of configure - (lambda* (#:key configure-flags #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (configure-flags - `(,@configure-flags - ,(string-append "--prefix=" out)))) - (format (current-error-port) "running ./configure ~a\n" (string-join configure-flags)) - (system* "touch" "configure") ; aclocal.m4 is newer than configure - (apply invoke (cons "./configure" configure-flags))))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "gawk" bin) - (symlink "gawk" (string-append bin "/awk")))))))))) - (define glibc-mesboot0 ;; GNU C Library 2.2.5 is the most recent glibc that we managed to build ;; using gcc-2.95.3. Newer versions (2.3.x, 2.6, 2.1x) seem to need a newer @@ -1297,97 +1131,6 @@ (define (%boot-mesboot0-inputs) ("libc" ,glibc-mesboot0) ,@(alist-delete "gcc" (%boot-mesboot-core-inputs)))) -(define tar-mesboot - ;; Initial tar with support for xz compression. - (package - (inherit tar) - (name "tar-mesboot") - (version "1.22") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/tar/tar-" - version ".tar.gz")) - (sha256 - (base32 - "19nvix64y95n5v6rr5g9g3fn08zz85cb5anzd7csfv4a4sz9lw4y")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-mesboot0-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:tests? #f ; check is naive, also checks non-built PROGRAMS - #:strip-binaries? #f ; no strip yet - #:configure-flags '("--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--disable-nls") - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (setenv "CONFIG_SHELL" shell) - (setenv "SHELL" shell) - (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") - (setenv "gl_cv_func_rename_dest_works" "yes") - (format (current-error-port) - "running ./configure ~a\n" (string-join configure-flags)) - (apply invoke (cons "./configure" configure-flags))))) - (add-after 'unpack 'scripted-patch - (lambda _ - (let* ((bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (substitute* "configure" - ((" /bin/sh") shell))) - (substitute* "Makefile.in" - (("^SUBDIRS = doc") "SUBDIRS =")))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (install-file "src/tar" bin))))))))) - -(define grep-mesboot - ;; The initial grep. - (package - (inherit grep) - (name "grep-mesboot") - (version "2.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/grep/grep-" - version ".tar.gz")) - (sha256 - (base32 - "1w862l80lgc5mxvpiy4cfwk761d6xxavn0m3xd2l7xs2kmzvp6lq")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-mesboot0-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-configure - (lambda _ - (let* ((bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (substitute* "configure" - ((" [|][|] ./config.status") " || sh ./config.status"))))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (install-file "grep" bin) - (symlink "grep" (string-append bin "/egrep")) - (symlink "grep" (string-append bin "/fgrep")))))))))) - (define binutils-mesboot1 (package (inherit binutils-mesboot0) @@ -1405,37 +1148,6 @@ (define binutils-mesboot1 "--with-sysroot=/" ,(string-append "--prefix=" out)))))))) -(define coreutils-mesboot0 - (package - (inherit coreutils) - (name "coreutils-mesboot0") - ;; The latest .gz release of Coreutils is 8.13; which does not build with gcc-2.95.3: - ;; randperm.c: In function `sparse_swap': - ;; randperm.c:117: invalid lvalue in unary `&' - (version "5.0") ; 2003-04 - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/coreutils/coreutils-" - version ".tar.gz")) - (sha256 - (base32 - "10wq6k66i8adr4k08p0xmg87ff4ypiazvwzlmi7myib27xgffz62")))) - (native-inputs (%boot-mesboot0-inputs)) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (arguments - `(#:implicit-inputs? #f - #:tests? #f ; WARNING: `perl' is needed, ... - #:parallel-build? #f - #:strip-binaries? #f ; strip: unrecognized option `--only-keep-debug' - #:guile ,%bootstrap-guile - #:configure-flags - '("--disable-doc" - "LIBS=-lc -lnss_files -lnss_dns -lresolv" - "ac_cv_func_gethostbyname=no" - "gl_cv_func_rename_dest_works=yes"))))) - (define gnu-make-mesboot (package (inherit gnu-make) @@ -1468,150 +1180,11 @@ (define gnu-make-mesboot (bin (string-append out "/bin"))) (install-file "make" bin))))))))) -(define gawk-mesboot - (package - (inherit gawk) - (name "gawk-mesboot") - (version "3.1.8") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gawk/gawk-" - version ".tar.gz")) - (sha256 - (base32 - "03d5y7jabq7p2s7ys9alay9446mm7i5g2wvy8nlicardgb6b6ii1")))) - (native-inputs `(,@(%boot-mesboot0-inputs) - ("mesboot-headers" ,mesboot-headers))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (arguments - `(#:implicit-inputs? #f - #:parallel-build? #f - #:guile ,%bootstrap-guile - #:configure-flags '("ac_cv_func_connect=no") - #:make-flags '("gawk") - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "./gawk" "--version"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "gawk" bin) - (symlink "gawk" (string-append bin "/awk")))))))))) - -(define sed-mesboot - (package - (inherit sed) - (name "sed-mesboot") - (version "4.0.6") ; 2003-04 - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/sed/sed-" - version ".tar.gz")) - (sha256 - (base32 - "0861ij94cqc4vaaki6r2wlapwcmhpx4ggp4r70f46mb21a8fkvf1")))) - (native-inputs (%boot-mesboot0-inputs)) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (arguments - `(#:implicit-inputs? #f - #:parallel-build? #f - #:guile ,%bootstrap-guile - #:tests? #f ; 8to7 fails - #:phases - (modify-phases %standard-phases - (add-after 'unpack '/bin/sh - (lambda _ - (let* ((bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (substitute* "testsuite/Makefile.tests" - (("^SHELL = /bin/sh") - (string-append "SHELL = " shell))))))))))) - -(define bash-mesboot - (package - (inherit bash-mesboot0) - (version "4.4") - (name "bash-mesboot") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/bash/bash-" - version ".tar.gz")) - (sha256 - (base32 - "1jyz6snd63xjn6skk7za6psgidsd53k05cr3lksqybi0q6936syq")))) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-mesboot0-inputs)) - (outputs '("out")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:configure-flags - '("--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - - "--without-bash-malloc" - "--disable-readline" - "--disable-history" - "--disable-help-builtin" - "--disable-progcomp" - "--disable-net-redirections" - "--disable-nls" - - ;; Pretend 'dlopen' is missing so we don't build loadable - ;; modules and related code. - "ac_cv_func_dlopen=no") - #:make-flags '("bash") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - (substitute* "shell.c" - ((";;") ";")))) - (add-before 'configure 'setenv - (lambda _ - (setenv "AWK" "gawk") - (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") - (setenv "gl_cv_func_rename_dest_works" "yes"))) - (add-after 'configure 'configure-fixups - (lambda _ - (let ((config.h (open-file "config.h" "a"))) - (display (string-append " -#define enable_hostname_completion(on_or_off) 0 -") - config.h) - (close config.h)))) - (replace 'check - (lambda _ - (invoke "./bash" "--version"))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (mkdir-p bin) - (copy-file "bash" (string-append bin "/bash")) - (copy-file "bash" (string-append bin "/sh")))))))))) - (define (%boot-mesboot1-inputs) - `(("bash" ,bash-mesboot) - ("binutils" ,binutils-mesboot1) - ("coreutils" ,coreutils-mesboot0) - ("gawk" ,gawk-mesboot) - ("grep" ,grep-mesboot) + `(("binutils" ,binutils-mesboot1) ("make" ,gnu-make-mesboot) - ("sed" ,sed-mesboot) - ("tar" ,tar-mesboot) ,@(fold alist-delete (%boot-mesboot0-inputs) - '("bash" "binutils" "bootar" "coreutils" "gash" - "gawk" "grep" "guile" "make" "sed" "tar")))) + '("binutils" "make")))) (define gmp-boot (let ((version "4.3.2")) @@ -1805,52 +1378,6 @@ (define (%boot-mesboot2-inputs) `(("gcc" ,gcc-mesboot1) ,@(alist-delete "gcc" (%boot-mesboot1-inputs)))) -(define xz-mesboot - ;; Finally, we can build xz. - (package - (inherit xz) - (name "xz-mesboot") - (version "5.0.0") - (source (bootstrap-origin - (origin - (method url-fetch) - (uri (list (string-append "http://tukaani.org/xz/xz-" version - ".tar.gz") - (string-append "http://multiprecision.org/guix/xz-" - version ".tar.gz"))) - (sha256 - (base32 - "0kf40ggbs1vaaj5s9k4csycahzqcf65n20pa6lngqhm6j0cj3agb"))))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (outputs '("out")) - (propagated-inputs '()) - (native-inputs (%boot-mesboot2-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:configure-flags - `("--disable-assembler" - "--disable-shared" - "--enable-small" - "--disable-threads" - "--disable-xzdec" - "--disable-lzmadec" - "--disable-lzmainfo" - "--disable-lzma-links" - "--disable-scripts" - "--disable-doc" - "--disable-nls" - "--disable-symbol-versions" - ;; configure disqualifies BASH, CPP, GCC and GREP - ;; all of which seem fine for the build - "ac_cv_prog_cc_c99=-std=gnu9x" - "ac_cv_path_GREP=grep" - "gl_cv_posix_shell=bash" - "ac_cv_have_decl_optreset=no" - "CPPFLAGS=-D__GNUC__=1"))))) - (define hello-mesboot ;; Check for Scheme-only bootstrap. Note that newer versions of Hello ;; break due to the way that newer versions of Gnulib handle @@ -1888,12 +1415,49 @@ (define binutils-mesboot (package (inherit binutils-mesboot1) (name "binutils-mesboot") - (native-inputs `(("xz" ,xz-mesboot) - ,@(%boot-mesboot2-inputs))))) + (native-inputs (%boot-mesboot2-inputs)))) + +;; Sadly we have to introduce Gawk here. The "versions.awk" script of +;; glibc 2.16.0 is too complicated for Gash-Utils. This is the version +;; of Gawk used previously during bootstrap. It's possible that a newer +;; version would work, too, but this one was already ready to go. +(define gawk-mesboot + (package + (inherit gawk) + (name "gawk-mesboot") + (version "3.1.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gawk/gawk-" + version ".tar.gz")) + (sha256 + (base32 + "03d5y7jabq7p2s7ys9alay9446mm7i5g2wvy8nlicardgb6b6ii1")))) + (native-inputs (%boot-mesboot2-inputs)) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (arguments + `(#:implicit-inputs? #f + #:parallel-build? #f + #:guile ,%bootstrap-guile + #:configure-flags '("ac_cv_func_connect=no") + #:make-flags '("gawk") + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "./gawk" "--version"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "gawk" bin) + (symlink "gawk" (string-append bin "/awk")))))))))) (define (%boot-mesboot3-inputs) `(("binutils" ,binutils-mesboot) - ("xz" ,xz-mesboot) + ("gawk" ,gawk-mesboot) ,@(alist-delete "binutils" (%boot-mesboot2-inputs)))) (define glibc-headers-mesboot @@ -1970,6 +1534,11 @@ (define glibc-headers-mesboot (out (assoc-ref outputs "out"))) (apply invoke "make" make-flags) (copy-recursively kernel-headers out)))) + (add-before 'configure 'remove-bashism + (lambda _ + (substitute* "sysdeps/unix/make-syscalls.sh" + (("\\$[{]vdso_symver//\\./_[}]") + "$(echo $vdso_symver | sed -e 's/\\./_/g')")))) (replace 'configure (lambda* (#:key configure-flags #:allow-other-keys) (format (current-error-port) "running ../configure ~a\n" @@ -2015,6 +1584,17 @@ (define glibc-mesboot (list (string-append "SHELL=" bash "/bin/sh")))) ((#:phases phases) #~(modify-phases #$phases + (add-after 'unpack 'simplify-intl-tests + (lambda _ + ;; The bootstrap Guile (2.0.9) crashes trying to + ;; perform a regex on non-ASCII text. This gets + ;; triggered by 'intl/po2test.sed' running over + ;; 'po/de.po'. If we ever remove the bootstrap + ;; Guile or add pure-Scheme regex to Gash, this can + ;; be removed. + (substitute* '("catgets/Makefile" + "intl/Makefile") + (("de\\.po") "en_GB.po")))) (replace 'install (lambda* (#:key outputs make-flags #:allow-other-keys) (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) @@ -2036,8 +1616,8 @@ (define gcc-mesboot1-wrapper (name "gcc-mesboot1-wrapper") (source #f) (inputs '()) - (native-inputs `(("bash" ,bash-mesboot) - ("coreutils" ,coreutils-mesboot0) + (native-inputs `(("bash" ,gash-boot) + ("coreutils" ,gash-utils-boot) ("libc" ,glibc-mesboot) ("gcc" ,gcc-mesboot1))) (arguments @@ -2175,8 +1755,8 @@ (define gcc-mesboot-wrapper (version (package-version gcc-mesboot)) (source #f) (inputs '()) - (native-inputs `(("bash" ,bash-mesboot) - ("coreutils" ,coreutils-mesboot0) + (native-inputs `(("bash" ,gash-boot) + ("coreutils" ,gash-utils-boot) ("libc" ,glibc-mesboot) ("gcc" ,gcc-mesboot))))) @@ -2185,24 +1765,59 @@ (define (%boot-mesboot5-inputs) ("gcc" ,gcc-mesboot) ,@(fold alist-delete (%boot-mesboot4-inputs) '("gcc" "gcc-wrapper")))) -(define coreutils-mesboot +(define (mesboot-package name pkg) (package - (inherit coreutils) - (name "coreutils-mesboot") - (source (bootstrap-origin (package-source coreutils))) + (inherit pkg) + (name name) + (source (bootstrap-origin (package-source pkg))) (native-inputs (%boot-mesboot5-inputs)) (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f)))) + (ensure-keyword-arguments (package-arguments pkg) + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f))))) + +;; These packages are needed to complete the rest of the bootstrap. +;; In the future, Gash et al. could handle it directly, but it's not +;; ready yet. +(define bash-mesboot (mesboot-package "bash-mesboot" static-bash)) +(define coreutils-mesboot (mesboot-package "coreutils-mesboot" coreutils)) +(define grep-mesboot (mesboot-package "grep-mesboot" grep)) +(define sed-mesboot (mesboot-package "sed-mesboot" sed)) + +;; The XZ implementation in Bootar cannot decompress 'tar'. +(define xz-mesboot + (let ((pkg (mesboot-package "xz-mesboot" xz))) + (package + (inherit pkg) + (arguments + (ensure-keyword-arguments (package-arguments pkg) + ;; XXX: This fails even though the + ;; actual runpaths seem fine. + `(#:validate-runpath? #f)))))) + +;; We don't strictly need Tar here, but it allows us to get rid of +;; Bootar and Gash-Utils and continue with the standard GNU tools. +(define tar-mesboot + (let ((pkg (mesboot-package "tar-mesboot" tar))) + (package + (inherit pkg) + (native-inputs + `(("xz" ,xz-mesboot) + ,@(package-native-inputs pkg)))))) (define (%boot-mesboot6-inputs) - `(("coreutils" ,coreutils-mesboot) + `(("bash" ,bash-mesboot) + ("coreutils" ,coreutils-mesboot) + ("grep" ,grep-mesboot) + ("sed" ,sed-mesboot) + ("tar" ,tar-mesboot) + ("xz" ,xz-mesboot) ,@(fold alist-delete (%boot-mesboot5-inputs) - '("coreutils" "kernel-headers")))) + '("bash" "coreutils" "bootar" "kernel-headers")))) (define (%bootstrap-inputs+toolchain) ;; The traditional bootstrap-inputs. For the i686-linux, x86_64-linux -- 2.34.0
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Tue, 15 Mar 2022 10:35:02 GMT) Full text and rfc822 format available.Message #44 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Maxime Devos <maximedevos <at> telenet.be> To: Timothy Sample <samplet <at> ngyro.com>, 54394 <at> debbugs.gnu.org Subject: Re: [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities. Date: Tue, 15 Mar 2022 11:34:49 +0100
[Message part 1 (text/plain, inline)]
Timothy Sample schreef op ma 14-03-2022 om 16:57 [-0600]: > * gnu/packages/commencement.scm (bash-mesboot0): Delete variable... > [...] Given that quite a few packages were removed, I'm wondering if some imports from (gnu pacages commencement) can be removed? Greetings, Maxime.
[signature.asc (application/pgp-signature, inline)]
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Tue, 15 Mar 2022 19:37:01 GMT) Full text and rfc822 format available.Message #47 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: Maxime Devos <maximedevos <at> telenet.be> Cc: 54394 <at> debbugs.gnu.org Subject: Re: [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities. Date: Tue, 15 Mar 2022 13:35:56 -0600
Hi Maxime, Maxime Devos <maximedevos <at> telenet.be> writes: > Timothy Sample schreef op ma 14-03-2022 om 16:57 [-0600]: >> * gnu/packages/commencement.scm (bash-mesboot0): Delete variable... >> [...] > > Given that quite a few packages were removed, I'm wondering if some > imports from (gnu pacages commencement) can be removed? The commencement module still needs all the same imports. The old packages were removed, but their modern counterparts are still there. I think that answers your question, but I’m only 70% sure I understood it correctly. :) If not, let me know! -- Tim
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Wed, 16 Mar 2022 17:26:02 GMT) Full text and rfc822 format available.Message #50 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: Timothy Sample <samplet <at> ngyro.com> Cc: 54394 <at> debbugs.gnu.org Subject: Re: bug#54394: [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Date: Wed, 16 Mar 2022 18:25:01 +0100
Hello! Timothy Sample <samplet <at> ngyro.com> skribis: > This is culmination of a lot of work, so I’m excited to be submitting > it! The main thrust of this series is to update Gash and Gash-Utils, > and then remove most of the old GNU utilities we use during early > bootstrap. To elaborate, the current situation is that we climb a > ladder through time: first we build Bash 2, then we build Bash 4, and > finally we build Bash 5. This is true for most GNU utilities: Sed, > Gawk, Coreutils, etc. The reason? Until now, our Scheme > implementations of those utilities (Gash and Gash-Utils) were very > limited. Bash 2 used to be a lot more useful then Gash, for example. > Now, with recent releases of Gash and Gash-Utils, the Scheme utilities > are, in general, capable of powering the builds of modern GNU software. Woohoo! Shortening the ladder, and doing it “the nice way”, is a much welcome improvement. > To be clear, we still climb the time-ladder in a few cases. The main > ones are GCC, Glibc, and Binutils. For example, we have to use GCC 2 to > transition from TCC To GCC 4 (which is the last non-C++ GCC [1]). > Fixing this would require quite a bit of TCC hacking, I imagine. There > are others, though. We still use old versions of Gzip, Make, patch, and > Gawk. The fact that Gawk is still there disappoints me quite a bit, but > ‘glibc-mesboot’ fails in a way that I just can’t figure out when > building with Gash-Utils. Gzip is not strictly necessary, but also > pretty easy to replace. I’m not sure, but I think patch is only there > to avoid using patches in ‘origin’ records during bootstrap. We now > have a way to do that, so it may no longer be necessary. Make will > likely need to be rewritten in Scheme, but we have a head start: Potato > Make [2]. > > [1] https://bootstrappable.org/projects.html > [2] https://github.com/spk121/potato-make Yes, the C compiler situation is tricky; Make looks like a fun target. [...] > The next three are updates. The bootar update optimistically assumes > that someone with access will upload the source file to the Guix mirror > URL: “mirror://gnu/guix/...” as was done with previous versions. Sure. > 5 files changed, 192 insertions(+), 788 deletions(-) Yay! Ludo’.
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Wed, 16 Mar 2022 17:26:02 GMT) Full text and rfc822 format available.Message #53 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: Timothy Sample <samplet <at> ngyro.com> Cc: 54394 <at> debbugs.gnu.org Subject: Re: bug#54394: [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Date: Wed, 16 Mar 2022 18:25:42 +0100
Timothy Sample <samplet <at> ngyro.com> skribis: > * gnu/packages/commencement.scm (hello-mesboot): Downgrade to 2.10. LGTM (even for ‘master’).
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Wed, 16 Mar 2022 17:33:01 GMT) Full text and rfc822 format available.Message #56 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: Timothy Sample <samplet <at> ngyro.com> Cc: 54394 <at> debbugs.gnu.org Subject: Re: bug#54394: [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Date: Wed, 16 Mar 2022 18:32:07 +0100
Timothy Sample <samplet <at> ngyro.com> skribis: > The next two patches spruce up the ‘gnu-bootstrap’ module. One fixes an > omission, and the other gets it ready to handle Gash-Utils 0.2.0, which > unfortunately has two module directories. > > The next three are updates. The bootar update optimistically assumes > that someone with access will upload the source file to the Guix mirror > URL: “mirror://gnu/guix/...” as was done with previous versions. > > The rest hopefully speak for themselves. Sadly, the last one is > something of a jumble. Originally I wanted to remove the utilities one > at a time, but it turns out there are interference effects. I can’t > remember the exact details now, but to get an idea, removing both old > Bash and old Grep might work, but removing one and then the other (in > either order) might not. Hence, many utilities get updated in one > commit. The patches all LGTM! I think you can push them to ‘core-updates’ if there are no objections. Then Maxim, Ricardo, or myself (I think we’re the three people who can do that currently) can upload bootar to ftp.gnu.org. Let us know. It’s quite something to see these intermediate versions of Bash, Gawk, tar, grep, coreutils, and sed go away in the last patch, and that tells something about the magnitude of the work that has gone in this Gash-Utils release. Thumbs up, and big thanks! Ludo’.
Timothy Sample <samplet <at> ngyro.com>
:Timothy Sample <samplet <at> ngyro.com>
:Message #61 received at 54394-done <at> debbugs.gnu.org (full text, mbox):
From: Timothy Sample <samplet <at> ngyro.com> To: Ludovic Courtès <ludo <at> gnu.org> Cc: 54394-done <at> debbugs.gnu.org Subject: Re: bug#54394: [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Date: Sat, 19 Mar 2022 13:53:14 -0600
Hello, Ludovic Courtès <ludo <at> gnu.org> writes: > Timothy Sample <samplet <at> ngyro.com> skribis: > >> The next two patches spruce up the ‘gnu-bootstrap’ module. One fixes an >> omission, and the other gets it ready to handle Gash-Utils 0.2.0, which >> unfortunately has two module directories. >> >> The next three are updates. The bootar update optimistically assumes >> that someone with access will upload the source file to the Guix mirror >> URL: “mirror://gnu/guix/...” as was done with previous versions. >> >> The rest hopefully speak for themselves. Sadly, the last one is >> something of a jumble. Originally I wanted to remove the utilities one >> at a time, but it turns out there are interference effects. I can’t >> remember the exact details now, but to get an idea, removing both old >> Bash and old Grep might work, but removing one and then the other (in >> either order) might not. Hence, many utilities get updated in one >> commit. > > The patches all LGTM! I think you can push them to ‘core-updates’ if > there are no objections. Pushed! (Maybe I didn’t leave enough time for objections – apologies if it ends up requiring a revert! I’ll be around to work through any issues this might cause.) > Then Maxim, Ricardo, or myself (I think we’re the three people who can > do that currently) can upload bootar to ftp.gnu.org. Let us know. Yes, please! > It’s quite something to see these intermediate versions of Bash, Gawk, > tar, grep, coreutils, and sed go away in the last patch, and that tells > something about the magnitude of the work that has gone in this > Gash-Utils release. Thumbs up, and big thanks! When the Scheme-only bootstrap landed, it was very exciting, but it made a real mess of ‘commencement.scm’. Since I played a part in creating that mess, I figured I ought to work to fix it. :) I’m hoping our Scheme-heavy approach to bootstrapping will result in something clean and comprehensible, so taking an explicit step in that direction makes me happy. -- Tim
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Sun, 20 Mar 2022 11:40:01 GMT) Full text and rfc822 format available.Message #64 received at 54394 <at> debbugs.gnu.org (full text, mbox):
From: Jan Nieuwenhuizen <janneke <at> gnu.org> To: Timothy Sample <samplet <at> ngyro.com> Cc: Ludovic Courtès <ludo <at> gnu.org>, 54394 <at> debbugs.gnu.org Subject: Re: [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Date: Sun, 20 Mar 2022 12:38:50 +0100
Timothy Sample writes: Hello! > This is culmination of a lot of work, so I’m excited to be submitting > it! The main thrust of this series is to update Gash and Gash-Utils, > and then remove most of the old GNU utilities we use during early > bootstrap. To elaborate, the current situation is that we climb a > ladder through time: first we build Bash 2, then we build Bash 4, and > finally we build Bash 5. This is true for most GNU utilities: Sed, > Gawk, Coreutils, etc. The reason? Until now, our Scheme > implementations of those utilities (Gash and Gash-Utils) were very > limited. Bash 2 used to be a lot more useful then Gash, for example. > Now, with recent releases of Gash and Gash-Utils, the Scheme utilities > are, in general, capable of powering the builds of modern GNU software. What an amazing piece of work. Not only adding support for this in Gash and Gash-Utils, also adding the "follow-up" for the Guix bootstrap. Wow! Not meaning to create more unwanted work for you, but I believe this could do with a blog post. I very much like your "climb a ladder through time" description. > To be clear, we still climb the time-ladder in a few cases. The main > ones are GCC, Glibc, and Binutils. For example, we have to use GCC 2 to > transition from TCC To GCC 4 (which is the last non-C++ GCC [1]). > Fixing this would require quite a bit of TCC hacking Yes, that needs work on MesCC, especially the Mes C Library, and TCC. Possibly some work on mpz/gmp. We definately want to jump from TCC to GCC 4.6 (the last modular distribution) in the (near) future. > We still use old versions of Gzip, Make, patch, and > Gawk. The fact that Gawk is still there disappoints me quite a bit, but > ‘glibc-mesboot’ fails in a way that I just can’t figure out when > building with Gash-Utils. Yeah, I can imagine, especially after your (2nd?) rewrite of AWK. > Gzip is not strictly necessary, but also pretty easy to replace. and replacing possibly has quite a speed penalty. > I’m not sure, but I think patch is only there > to avoid using patches in ‘origin’ records during bootstrap. We now > have a way to do that, so it may no longer be necessary. Yes, I believe patch is needed for the manual "apply-boot-patch" stages to avoid adding a dependency on xz, created by adding patches to "origin" records. > Make will likely need to be rewritten in Scheme, but we have a head > start: Potato Make [2]. > > [2] https://github.com/spk121/potato-make Interesting! POSIX Makefile Parser Recipes can contain the following parser function (parse ...) reads a standard Makefile and creates rules based on its contents. Building glibc without GNU Make may be pretty difficult, though. > Here’s some detailed info for reviewers. > Ludovic Courtès writes: > > The patches all LGTM! I think you can push them to ‘core-updates’ if > > there are no objections. > Pushed! (Maybe I didn’t leave enough time for objections – apologies if > it ends up requiring a revert! I’ll be around to work through any > issues this might cause.) Patches LGTM, and thanks for pushing. > The rest hopefully speak for themselves. Sadly, the last one is > something of a jumble. Originally I wanted to remove the utilities one > at a time, but it turns out there are interference effects. I can’t > remember the exact details now, but to get an idea, removing both old > Bash and old Grep might work, but removing one and then the other (in > either order) might not. Hence, many utilities get updated in one > commit. That's quite understandable, and certainly acceptable. Much of this time-ladder was created by me, it was an enormous effort to find old (and some ancient) versions of the tools that worked well together. There are undocumented build dependencies all around. Some newer packages cannot be used to build older versions of other packages, etc. So, while this kludge was a necessary evil, I'm extremely happy we can now do without it. We should work towards a bootstrap that depends mainly on current packages, and strive to keep current packages bootstrappable. To summarize what you removed: bzip2 (not an old version) sed-1.18 sed-4.0.6 binutils-2.14 (really great!) bash-2.05b bash-4.4 gawk-3.0.0 tar-1.22 grep-2.0 coreutils-5.0 xz-5.0.0 (wow, that was difficult to build) that's 11 old and ancient packages, if have counted correctly. Greetings, Janneke -- Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
guix-patches <at> gnu.org
:bug#54394
; Package guix-patches
.
(Mon, 21 Mar 2022 15:18:01 GMT) Full text and rfc822 format available.Message #67 received at 54394-done <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: Timothy Sample <samplet <at> ngyro.com> Cc: 54394-done <at> debbugs.gnu.org Subject: Re: bug#54394: [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Date: Mon, 21 Mar 2022 16:17:22 +0100
Hi, Timothy Sample <samplet <at> ngyro.com> skribis: >> Then Maxim, Ricardo, or myself (I think we’re the three people who can >> do that currently) can upload bootar to ftp.gnu.org. Let us know. > > Yes, please! Done! https://ftp.gnu.org/gnu/guix/mirror/ Ludo’.
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Tue, 19 Apr 2022 11:24:09 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.