* [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
@ 2022-03-14 22:47 Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 01/12] gnu: hello-mesboot: Downgrade to 2.10 Timothy Sample
` (15 more replies)
0 siblings, 16 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:47 UTC (permalink / raw)
To: 54394
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
^ permalink raw reply [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 01/12] gnu: hello-mesboot: Downgrade to 2.10.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-16 17:25 ` [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Ludovic Courtès
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 02/12] gnu-bootstrap: Configure PACKAGE_NAME Timothy Sample
` (14 subsequent siblings)
15 siblings, 1 reply; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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@tobias.gr>
;;; Copyright © 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2020, 2022 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Chris Marusich <cmmarusich@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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 02/12] gnu-bootstrap: Configure PACKAGE_NAME.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 01/12] gnu: hello-mesboot: Downgrade to 2.10 Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 03/12] gnu-bootstrap: Allow multiple module directories Timothy Sample
` (13 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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@ngyro.com>
+;;; Copyright © 2020, 2022 Timothy Sample <samplet@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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 03/12] gnu-bootstrap: Allow multiple module directories.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 01/12] gnu: hello-mesboot: Downgrade to 2.10 Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 02/12] gnu-bootstrap: Configure PACKAGE_NAME Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 04/12] gnu: gash-utils: Update to 0.2.0 Timothy Sample
` (12 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 04/12] gnu: gash-utils: Update to 0.2.0.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (2 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 03/12] gnu-bootstrap: Allow multiple module directories Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 05/12] gnu: bootar: Update to 1b Timothy Sample
` (11 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 05/12] gnu: bootar: Update to 1b.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (3 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 04/12] gnu: gash-utils: Update to 0.2.0 Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 06/12] gnu: gash: Update to 0.3.0 Timothy Sample
` (10 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 06/12] gnu: gash: Update to 0.3.0.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (4 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 05/12] gnu: bootar: Update to 1b Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 07/12] gnu: gash-utils-boot: Create 'echo' wrapper Timothy Sample
` (9 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 07/12] gnu: gash-utils-boot: Create 'echo' wrapper.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (5 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 06/12] gnu: gash: Update to 0.3.0 Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 08/12] gnu: bzip2-mesboot: Remove package Timothy Sample
` (8 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 08/12] gnu: bzip2-mesboot: Remove package.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (6 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 07/12] gnu: gash-utils-boot: Create 'echo' wrapper Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 09/12] gnu: sed-mesboot0: " Timothy Sample
` (7 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 09/12] gnu: sed-mesboot0: Remove package.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (7 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 08/12] gnu: bzip2-mesboot: Remove package Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 10/12] gnu: binutils-mesboot0: Update to 2.20.1a Timothy Sample
` (6 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 10/12] gnu: binutils-mesboot0: Update to 2.20.1a.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (8 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 09/12] gnu: sed-mesboot0: " Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 11/12] gnu: %boot-tcc-inputs: Remove extra "gash-utils" Timothy Sample
` (5 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
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@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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 11/12] gnu: %boot-tcc-inputs: Remove extra "gash-utils".
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (9 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 10/12] gnu: binutils-mesboot0: Update to 2.20.1a Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities Timothy Sample
` (4 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities.
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (10 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 11/12] gnu: %boot-tcc-inputs: Remove extra "gash-utils" Timothy Sample
@ 2022-03-14 22:57 ` Timothy Sample
2022-03-15 10:34 ` Maxime Devos
2022-03-16 17:25 ` [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Ludovic Courtès
` (3 subsequent siblings)
15 siblings, 1 reply; 22+ messages in thread
From: Timothy Sample @ 2022-03-14 22:57 UTC (permalink / raw)
To: 54394; +Cc: Timothy Sample
* 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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities.
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities Timothy Sample
@ 2022-03-15 10:34 ` Maxime Devos
2022-03-15 19:35 ` Timothy Sample
0 siblings, 1 reply; 22+ messages in thread
From: Maxime Devos @ 2022-03-15 10:34 UTC (permalink / raw)
To: Timothy Sample, 54394
[-- Attachment #1: Type: text/plain, Size: 291 bytes --]
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.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities.
2022-03-15 10:34 ` Maxime Devos
@ 2022-03-15 19:35 ` Timothy Sample
0 siblings, 0 replies; 22+ messages in thread
From: Timothy Sample @ 2022-03-15 19:35 UTC (permalink / raw)
To: Maxime Devos; +Cc: 54394
Hi Maxime,
Maxime Devos <maximedevos@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
^ permalink raw reply [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (11 preceding siblings ...)
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities Timothy Sample
@ 2022-03-16 17:25 ` Ludovic Courtès
2022-03-16 17:32 ` Ludovic Courtès
` (2 subsequent siblings)
15 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2022-03-16 17:25 UTC (permalink / raw)
To: Timothy Sample; +Cc: 54394
Hello!
Timothy Sample <samplet@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’.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 01/12] gnu: hello-mesboot: Downgrade to 2.10 Timothy Sample
@ 2022-03-16 17:25 ` Ludovic Courtès
0 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2022-03-16 17:25 UTC (permalink / raw)
To: Timothy Sample; +Cc: 54394
Timothy Sample <samplet@ngyro.com> skribis:
> * gnu/packages/commencement.scm (hello-mesboot): Downgrade to 2.10.
LGTM (even for ‘master’).
^ permalink raw reply [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (12 preceding siblings ...)
2022-03-16 17:25 ` [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Ludovic Courtès
@ 2022-03-16 17:32 ` Ludovic Courtès
2022-03-19 19:53 ` bug#54394: " Timothy Sample
2022-03-20 11:38 ` Jan Nieuwenhuizen
2022-03-20 11:48 ` Jan Nieuwenhuizen
15 siblings, 1 reply; 22+ messages in thread
From: Ludovic Courtès @ 2022-03-16 17:32 UTC (permalink / raw)
To: Timothy Sample; +Cc: 54394
Timothy Sample <samplet@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’.
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#54394: [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
2022-03-16 17:32 ` Ludovic Courtès
@ 2022-03-19 19:53 ` Timothy Sample
2022-03-21 15:17 ` [bug#54394] " Ludovic Courtès
0 siblings, 1 reply; 22+ messages in thread
From: Timothy Sample @ 2022-03-19 19:53 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 54394-done
Hello,
Ludovic Courtès <ludo@gnu.org> writes:
> Timothy Sample <samplet@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
^ permalink raw reply [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (13 preceding siblings ...)
2022-03-16 17:32 ` Ludovic Courtès
@ 2022-03-20 11:38 ` Jan Nieuwenhuizen
2022-03-20 11:48 ` Jan Nieuwenhuizen
15 siblings, 0 replies; 22+ messages in thread
From: Jan Nieuwenhuizen @ 2022-03-20 11:38 UTC (permalink / raw)
To: Timothy Sample; +Cc: Ludovic Courtès, 54394
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@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
` (14 preceding siblings ...)
2022-03-20 11:38 ` Jan Nieuwenhuizen
@ 2022-03-20 11:48 ` Jan Nieuwenhuizen
15 siblings, 0 replies; 22+ messages in thread
From: Jan Nieuwenhuizen @ 2022-03-20 11:48 UTC (permalink / raw)
To: Timothy Sample; +Cc: guix-devel
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@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
^ permalink raw reply [flat|nested] 22+ messages in thread
* [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap
2022-03-19 19:53 ` bug#54394: " Timothy Sample
@ 2022-03-21 15:17 ` Ludovic Courtès
0 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2022-03-21 15:17 UTC (permalink / raw)
To: Timothy Sample; +Cc: 54394-done
Hi,
Timothy Sample <samplet@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’.
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2022-03-21 15:19 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-14 22:47 [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 01/12] gnu: hello-mesboot: Downgrade to 2.10 Timothy Sample
2022-03-16 17:25 ` [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Ludovic Courtès
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 02/12] gnu-bootstrap: Configure PACKAGE_NAME Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 03/12] gnu-bootstrap: Allow multiple module directories Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 04/12] gnu: gash-utils: Update to 0.2.0 Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 05/12] gnu: bootar: Update to 1b Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 06/12] gnu: gash: Update to 0.3.0 Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 07/12] gnu: gash-utils-boot: Create 'echo' wrapper Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 08/12] gnu: bzip2-mesboot: Remove package Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 09/12] gnu: sed-mesboot0: " Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 10/12] gnu: binutils-mesboot0: Update to 2.20.1a Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 11/12] gnu: %boot-tcc-inputs: Remove extra "gash-utils" Timothy Sample
2022-03-14 22:57 ` [bug#54394] [PATCH core-updates 12/12] gnu: commencement: Remove many old utilities Timothy Sample
2022-03-15 10:34 ` Maxime Devos
2022-03-15 19:35 ` Timothy Sample
2022-03-16 17:25 ` [bug#54394] [PATCH core-updates 00/12] Remove old GNU utilities from early bootstrap Ludovic Courtès
2022-03-16 17:32 ` Ludovic Courtès
2022-03-19 19:53 ` bug#54394: " Timothy Sample
2022-03-21 15:17 ` [bug#54394] " Ludovic Courtès
2022-03-20 11:38 ` Jan Nieuwenhuizen
2022-03-20 11:48 ` Jan Nieuwenhuizen
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.