* [bug#33038] bootstrap: Regeneration of Mes bootstrap seeds.
@ 2018-10-14 8:50 Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-14 8:50 UTC (permalink / raw)
To: 33038
Hi!
In order to take care of these TODOs
TODO:
* regenerate Mes bootstrap seeds, put them on ftp.gnu.org
* slow tests: "gnu-build-system", "union-build"
* doc: make "Reduced Binary Seed Bootstrap" subsection in Bootstrapping
* doc: update “Preparing to Use the Bootstrap Binaries”
* doc: update “Reducing the Set of Bootstrap Binaries”
I replaced the opaque, manually created %mes-seed and %tinycc-seed by
new pacckages: mes-stripped, mes-stripped-tarball, and %bootstrap-mes.
That allowed me to modify the remaining documentation sections too.
Sending a patch series, also available from
https://gitlab.com/janneke/guix @core-updates-next
WDYT?
Greetings,
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping'.
2018-10-14 8:50 [bug#33038] bootstrap: Regeneration of Mes bootstrap seeds Jan Nieuwenhuizen
@ 2018-10-14 8:58 ` Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 2/6] gnu: mes: Update to 0.18.0-08f04f55 Jan Nieuwenhuizen
` (5 more replies)
0 siblings, 6 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-14 8:58 UTC (permalink / raw)
To: 33038
* doc/guix.texi (Reduced Binary Seed Bootstrap):
---
doc/guix.texi | 141 ++++++++++++++++++++++++++------------------------
1 file changed, 72 insertions(+), 69 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index a213a0324..48f01e989 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -210,7 +210,6 @@ GNU Distribution
* Package Modules:: Packages from the programmer's viewpoint.
* Packaging Guidelines:: Growing the distribution.
* Bootstrapping:: GNU/Linux built from scratch.
-* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU.
* Porting:: Targeting another platform or kernel.
System Installation
@@ -8695,7 +8694,6 @@ For information on porting to other architectures or kernels,
* Package Modules:: Packages from the programmer's viewpoint.
* Packaging Guidelines:: Growing the distribution.
* Bootstrapping:: GNU/Linux built from scratch.
-* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU.
* Porting:: Targeting another platform or kernel.
@end menu
@@ -23557,7 +23555,78 @@ re-create them if needed (more on that later).
For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is
more elaborate, @pxref{Reduced Binary Seed Bootstrap}.
-@unnumberedsubsec Preparing to Use the Bootstrap Binaries
+@menu
+* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU.
+* Preparing to Use the Bootstrap Binaries:: Building that what matters most.
+@end menu
+
+@node Reduced Binary Seed Bootstrap
+@subsection The Reduced Binary Seed Bootstrap
+
+Guix---like other GNU/Linux distributions---is traditionally bootstrapped from
+a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU
+Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the
+GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are
+``taken for granted.''
+
+Taking these binaries for granted means that we consider them to be a correct
+and trustworthy `seed' for building the complete system. Therein lies a
+problem: the current combined size of these bootstrap binaries is about 250MB
+(@pxref{Bootstrappable Builds,,, mes, Mes Reference Manual}). Auditing or
+even inspecting these is next to impossible.
+
+For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced
+Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source
+Bootstrap'' and while we are working towards that goal it would be hyperbole
+to use that term for what we do now.}.
+
+The Reduced Binary Seed bootstrap removes the most critical tools---from a
+trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
+Library are replaced by: @code{mescc-tools-seed} (a tiny assembler and linker)
+@code{mes-seed} (a small Scheme Interpreter and a C compiler writen in Scheme)
+and @code{tinycc-seed} (the Mes C Library, built for TinyCC). Using these new
+binary seeds and a new set of
+@c
+packages@footnote{@c
+mescc-tools-boot,
+nyacc-boot,
+mes-boot,
+tcc-boot0,
+tcc-boot,
+make-mesboot0,
+diffutils-mesboot,
+binutils-mesboot0,
+gcc-core-mesboot,
+mesboot-headers,
+glibc-mesboot0,
+gcc-mesboot0,
+binutils-mesboot,
+make-mesboot,
+gcc-mesboot1,
+gcc-mesboot1-wrapper,
+glibc-headers-mesboot,
+glibc-mesboot,
+gcc-mesboot,
+and
+gcc-mesboot-wrapper.
+}
+@c
+the ``missing'' Binutils, GCC, and the GNU C Library are built from source.
+From here on the more traditional bootstrap process resumes. This approach
+has reduced the bootstrap binaries in size to about 130MB. Work is ongoing to
+reduce this further. If you are interested, join us on @code{#bootstrappable}
+on the Freenode IRC network.
+
+@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot
+@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png
+
+Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap
+compiler used to build the rest of GuixSD.
+
+@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot}
+
+@node Preparing to Use the Bootstrap Binaries
+@subsection Preparing to Use the Bootstrap Binaries
@c As of Emacs 24.3, Info-mode displays the image, but since it's a
@c large image, it's hard to scroll. Oh well.
@@ -23710,72 +23779,6 @@ bootstrap GCC with a sequence of assemblers, interpreters, and compilers
of increasing complexity, which could be built from source starting from
a simple and auditable assembler. Your help is welcome!
-@node Reduced Binary Seed Bootstrap
-@section The Reduced Binary Seed Bootstrap
-
-Guix---like other GNU/Linux distributions---is traditionally bootstrapped from
-a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU
-Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the
-GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are
-``taken for granted.''
-
-Taking these binaries for granted means that we consider them to be a correct
-and trustworthy `seed' for building the complete system. Therein lies a
-problem: the current combined size of these bootstrap binaries is about 250MB
-(@pxref{Bootstrappable Builds,,, mes, Mes Reference Manual}). Auditing or
-even inspecting these is next to impossible.
-
-For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced
-Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source
-Bootstrap'' and while we are working towards that goal it would be hyperbole
-to use that term for what we do now.}.
-
-The Reduced Binary Seed bootstrap removes the most critical tools---from a
-trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
-Library are replaced by: @code{mescc-tools-seed} (a tiny assembler and linker)
-@code{mes-seed} (a small Scheme Interpreter and a C compiler writen in Scheme)
-and @code{tinycc-seed} (the Mes C Library, built for TinyCC). Using these new
-binary seeds and a new set of
-@c
-packages@footnote{@c
-mescc-tools-boot,
-nyacc-boot,
-mes-boot,
-tcc-boot0,
-tcc-boot,
-make-mesboot0,
-diffutils-mesboot,
-binutils-mesboot0,
-gcc-core-mesboot,
-mesboot-headers,
-glibc-mesboot0,
-gcc-mesboot0,
-binutils-mesboot,
-make-mesboot,
-gcc-mesboot1,
-gcc-mesboot1-wrapper,
-glibc-headers-mesboot,
-glibc-mesboot,
-gcc-mesboot,
-and
-gcc-mesboot-wrapper.
-}
-@c
-the ``missing'' Binutils, GCC, and the GNU C Library are built from source.
-From here on the more traditional bootstrap process resumes. This approach
-has reduced the bootstrap binaries in size to about 130MB. Work is ongoing to
-reduce this further. If you are interested, join us on @code{#bootstrappable}
-on the Freenode IRC network.
-
-@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot
-@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png
-
-Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap
-compiler used to build the rest of GuixSD.
-
-@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot}
-
-
@node Porting
@section Porting to a New Platform
--
2.18.0
^ permalink raw reply related [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 2/6] gnu: mes: Update to 0.18.0-08f04f55.
2018-10-14 8:58 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Jan Nieuwenhuizen
@ 2018-10-14 8:58 ` Jan Nieuwenhuizen
2018-10-19 21:23 ` Ludovic Courtès
2018-10-14 8:58 ` [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes Jan Nieuwenhuizen
` (4 subsequent siblings)
5 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-14 8:58 UTC (permalink / raw)
To: 33038
* gnu/packages/mes.scm (mes): Update to 0.18.0-08f04f55.
* gnu/packages/commencement.scm (mes-boot0): Stay at 0.18.0.
---
gnu/packages/commencement.scm | 8 +++++++-
gnu/packages/mes.scm | 24 +++++++++++++++---------
2 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 6fc39f768..61349337e 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -102,7 +102,13 @@
(sha256
(base32
"1whbzahv16bwhavr2azqli0dcbk29p9rsqfbjl69la135z8vgdhx")))
- (package-source mes)))
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/mes/"
+ "mes-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1dsaaqyanzsq9m5wrcd2bjhb3qd6928c9q97rg5r730pyqjwxyxf")))))
(native-inputs '())
(propagated-inputs '()))))
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 6dc6dfb4c..4f98cd24f 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -60,17 +60,22 @@ extensive examples, including parsers for the Javascript and C99 languages.")
(license (list gpl3+ lgpl3+))))
(define-public mes
- (let ((triplet "i686-unknown-linux-gnu"))
+ (let ((triplet "i686-unknown-linux-gnu")
+ (version "0.18")
+ (revision "0")
+ (commit "08f04f559670d9e8f57eb03bb9b13f4d0b81cedf"))
(package
(name "mes")
- (version "0.18")
+ (version (string-append version "-" revision "." (string-take commit 7)))
(source (origin
(method url-fetch)
- (uri (string-append "mirror://gnu/mes/"
- "mes-" version ".tar.gz"))
+ (uri (string-append
+ "https://git.savannah.gnu.org/cgit/mes.git/snapshot/"
+ name "-" commit
+ ".tar.gz"))
(sha256
(base32
- "1dsaaqyanzsq9m5wrcd2bjhb3qd6928c9q97rg5r730pyqjwxyxf"))))
+ "1b7wz9k38pfrz707pd4p8s54q903jr167q73ya7qkna89sxj3wna"))))
(build-system gnu-build-system)
(supported-systems '("i686-linux" "x86_64-linux"))
(propagated-inputs
@@ -93,10 +98,11 @@ extensive examples, including parsers for the Javascript and C99 languages.")
`(#:strip-binaries? #f)) ; binutil's strip b0rkes MesCC/M1/hex2 binaries
(synopsis "Scheme interpreter and C compiler for full source bootstrapping")
(description
- "GNU Mes [Maxwell Equations of Software] aims to create full source
-bootstrapping for GuixSD. It consists of a mutual self-hosting [close to
-Guile-] Scheme interpreter prototype in C and a Nyacc-based C compiler in
-[Guile] Scheme.")
+ "GNU Mes--Maxwell Equations of Software--brings the Reduced
+Binary Seed bootstrap to GuixSD and aims to help create full source
+bootstrapping for GNU/Linux distributions. It consists of a mutual
+self-hosting Scheme interpreter in C and a Nyacc-based C compiler in
+Scheme and is compatible with Guile.")
(home-page "https://gnu.org/software/mes")
(license gpl3+))))
--
2.18.0
^ permalink raw reply related [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-14 8:58 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 2/6] gnu: mes: Update to 0.18.0-08f04f55 Jan Nieuwenhuizen
@ 2018-10-14 8:58 ` Jan Nieuwenhuizen
2018-10-19 21:31 ` Ludovic Courtès
2018-10-14 8:58 ` [bug#33038] [PATCH 4/6] gnu: mescc-tools: Update to 0.5.2-0.bb062b0d Jan Nieuwenhuizen
` (3 subsequent siblings)
5 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-14 8:58 UTC (permalink / raw)
To: 33038
* gnu/packages/make-bootstrap.scm (%mes-stripped): New variable.
(%mes-bootstrap-tarball): New variable.
* gnu/packages/bootstrap.scm (%bootstrap-mes): New variable.
---
gnu/packages/bootstrap.scm | 59 +++++++++++++++++++++++++++++++++
gnu/packages/make-bootstrap.scm | 35 +++++++++++++++++++
gnu/packages/mes.scm | 1 -
3 files changed, 94 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 82d229569..f33fc061e 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -49,6 +49,7 @@
%bootstrap-gcc
%bootstrap-glibc
%bootstrap-inputs
+ %bootstrap-mes
%mescc-tools-seed
%mes-seed
%srfi-43
@@ -610,6 +611,64 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
(home-page #f)
(license gpl3+)))
+(define %bootstrap-mes
+ ;; The initial Mes. Uses binaries from a tarball typically built by
+ ;; %MES-BOOTSTRAP-TARBALL.
+ (package
+ (name "bootstrap-mes")
+ (version "0")
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ `(#:guile ,%bootstrap-guile
+ #:modules ((guix build utils))
+ #:builder
+ (let ((out (assoc-ref %outputs "out"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (tarball (assoc-ref %build-inputs "tarball")))
+ (use-modules (guix build utils)
+ (ice-9 popen))
+
+ (mkdir out)
+ (copy-file tarball "binaries.tar.xz")
+ (invoke xz "-d" "binaries.tar.xz")
+ (let ((builddir (getcwd))
+ (bindir (string-append out "/bin")))
+ (with-directory-excursion out
+ (invoke tar "xvf"
+ (string-append builddir "/binaries.tar")))))))
+ (inputs
+ `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
+ ("xz" ,(search-bootstrap-binary "xz" (%current-system)))
+ ("tarball" ,(bootstrap-origin
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://lilypond.org/janneke/mes/"
+ (match (%current-system)
+ ("x86_64-linux" "mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz")
+ ("i686-linux" "mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz"))))
+ (sha256
+ (match (%current-system)
+ ("x86_64-linux"
+ (base32
+ "14sbcm79ml4rgygxvx1135827g3ggfx1c1vchk77z26yibbdw9nh"))
+ ("i686-linux"
+ (base32
+ "1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy")))))))))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "C_INCLUDE_PATH")
+ (files '("share/mes/include")))
+ (search-path-specification
+ (variable "LIBRARY_PATH")
+ (files '("share/mes/lib")))))
+ (synopsis "Bootstrap binaries of Mes")
+ (description synopsis)
+ (home-page #f)
+ (license gpl3+)))
+
(define %mescc-tools-seed ; todo: add tarballs to alpha.gnu.org/pub/mes/bootstrap/
(let ((commit "dc4e20e74924a5c80a2b7a77b4d7b927234fa71c"))
(origin
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 3553737f1..7bfba3c14 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -38,6 +38,7 @@
#:use-module (gnu packages libunistring)
#:use-module (gnu packages linux)
#:use-module (gnu packages hurd)
+ #:use-module (gnu packages mes)
#:use-module (gnu packages multiprecision)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
@@ -47,6 +48,7 @@
%glibc-bootstrap-tarball
%gcc-bootstrap-tarball
%guile-bootstrap-tarball
+ %mes-bootstrap-tarball
%bootstrap-tarballs
%guile-static-stripped))
@@ -533,6 +535,35 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
#t))))
(inputs `(("gcc" ,%gcc-static)))))
+(define %mes-stripped
+ ;; The subset of Mes files needed for bootstrap.
+ (package
+ (inherit mes)
+ (name "mes-stripped")
+ (build-system trivial-build-system)
+ (source #f)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (srfi srfi-1)
+ (srfi srfi-26)
+ (guix build utils))
+
+ (setvbuf (current-output-port) _IOLBF)
+ (let* ((out (assoc-ref %outputs "out"))
+ (libdir (string-append out "/lib"))
+ (mes (assoc-ref %build-inputs "mes")))
+
+ (copy-recursively (string-append mes "/lib") libdir)
+ (copy-recursively (string-append mes "/share/mes/lib") libdir)
+ (for-each remove-store-references
+ (remove (lambda (file) (or (string-suffix? ".h" file)
+ (string-suffix? ".c" file)))
+ (find-files out ".*")))
+ #t))))
+ (inputs `(("mes" ,mes)))))
+
(define %guile-static
;; A statically-linked Guile that is relocatable--i.e., it can search
;; .scm and .go files relative to its installation directory, rather
@@ -700,6 +731,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; A tarball with the statically-linked, relocatable Guile.
(tarball-package %guile-static-stripped))
+(define %mes-bootstrap-tarball
+ ;; A tarball with Mes ASCII Seed and binary Mes C Library.
+ (tarball-package %mes-stripped))
+
(define %bootstrap-tarballs
;; A single derivation containing all the bootstrap tarballs, for
;; convenience.
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 4f98cd24f..c4cb118e3 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -21,7 +21,6 @@
(define-module (gnu packages mes)
#:use-module (gnu packages)
#:use-module (gnu packages base)
- #:use-module (gnu packages commencement)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages gcc)
#:use-module (gnu packages graphviz)
--
2.18.0
^ permalink raw reply related [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 4/6] gnu: mescc-tools: Update to 0.5.2-0.bb062b0d.
2018-10-14 8:58 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 2/6] gnu: mes: Update to 0.18.0-08f04f55 Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes Jan Nieuwenhuizen
@ 2018-10-14 8:58 ` Jan Nieuwenhuizen
2018-10-19 21:32 ` Ludovic Courtès
2018-10-14 8:58 ` [bug#33038] [PATCH 5/6] bootstrap: Build with %bootstrap-mes Jan Nieuwenhuizen
` (2 subsequent siblings)
5 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-14 8:58 UTC (permalink / raw)
To: 33038
* gnu/packages/mes.scm (mescc-tools): Update to 0.5.2-0.bb062b0d.
mescc
* gnu/packages/commencement.scm (mescc-tools-boot): Stay at 0.5.2
---
gnu/packages/commencement.scm | 13 +++++++--
gnu/packages/mes.scm | 50 ++++++++++++++++++-----------------
2 files changed, 37 insertions(+), 26 deletions(-)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 61349337e..258655fba 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -117,9 +117,18 @@
(package
(inherit mescc-tools)
(name "mescc-tools-boot")
+ (version "0.5.2")
(source (origin
- (inherit (package-source mescc-tools))
- (patches (search-patches "mescc-tools-boot.patch"))))
+ (method url-fetch)
+ (uri (string-append
+ "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
+ name "-Release_" version
+ ".tar.gz"))
+ (patches (search-patches "mescc-tools-boot.patch"))
+ (file-name (string-append "mescc-tools" "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "01x7bhmgwyf6mc2g1hcvibhps98nllacqm4f0j5l51b1mbi18pc2"))))
(inputs '())
(propagated-inputs '())
(native-inputs
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index c4cb118e3..7f7caa7a6 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -106,31 +106,33 @@ Scheme and is compatible with Guile.")
(license gpl3+))))
(define-public mescc-tools
- (package
- (name "mescc-tools")
- (version "0.5.2")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
- name "-Release_" version
- ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "01x7bhmgwyf6mc2g1hcvibhps98nllacqm4f0j5l51b1mbi18pc2"))))
- (build-system gnu-build-system)
- (supported-systems '("i686-linux" "x86_64-linux"))
- (arguments
- `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
- #:test-target "test"
- #:phases (modify-phases %standard-phases
- (delete 'configure))))
- (synopsis "Tools for the full source bootstrapping process")
- (description
- "Mescc-tools is a collection of tools for use in a full source
+ (let ((commit "bb062b0da7bf2724ca40f9002b121579898d4ef7")
+ (revision "0")
+ (version "0.5.2"))
+ (package
+ (name "mescc-tools")
+ (version (string-append version "-" revision "." (string-take commit 7)))
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
+ name "-" commit
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1h6j57wyf91i42b26f8msbv6451cw3nm4nmpl1fckp9c7vi8mwkh"))))
+ (build-system gnu-build-system)
+ (supported-systems '("i686-linux" "x86_64-linux"))
+ (arguments
+ `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:test-target "test"
+ #:phases (modify-phases %standard-phases
+ (delete 'configure))))
+ (synopsis "Tools for the full source bootstrapping process")
+ (description
+ "Mescc-tools is a collection of tools for use in a full source
bootstrapping process. It consists of the M1 macro assembler, the hex2
linker, the blood-elf symbol table generator, the kaem shell, exec_enable and
get_machine.")
(home-page "https://savannah.nongnu.org/projects/mescc-tools")
- (license gpl3+)))
+ (license gpl3+))))
--
2.18.0
^ permalink raw reply related [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 5/6] bootstrap: Build with %bootstrap-mes.
2018-10-14 8:58 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Jan Nieuwenhuizen
` (2 preceding siblings ...)
2018-10-14 8:58 ` [bug#33038] [PATCH 4/6] gnu: mescc-tools: Update to 0.5.2-0.bb062b0d Jan Nieuwenhuizen
@ 2018-10-14 8:58 ` Jan Nieuwenhuizen
2018-10-19 21:34 ` Ludovic Courtès
2018-10-14 8:58 ` [bug#33038] [PATCH 6/6] doc: Update Preparing to Use the Bootstrap Binaries Jan Nieuwenhuizen
2018-10-19 21:22 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Ludovic Courtès
5 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-14 8:58 UTC (permalink / raw)
To: 33038
* gnu/packages/bootstrap.scm (%tinycc-seed): Remove.
(%bootstrap-inputs): Use %bootstrap-mes instead of %mes-seed and %tinycc-seed.
* gnu/packages/commencement.scm (mescc-tools-boot, mes-boot, tcc-boot0): Build
with %bootstrap-mes instead of %mes-seed and %tinycc-seed.
---
gnu/packages/bootstrap.scm | 31 ++-----------------
gnu/packages/commencement.scm | 57 +++++++++++++----------------------
2 files changed, 24 insertions(+), 64 deletions(-)
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index f33fc061e..6f65550c3 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -51,9 +51,7 @@
%bootstrap-inputs
%bootstrap-mes
%mescc-tools-seed
- %mes-seed
- %srfi-43
- %tinycc-seed))
+ %srfi-43))
;;; Commentary:
;;;
@@ -680,28 +678,6 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
(base32
"1lj7df73vxanmffmiwkhcn83r7yd9n8568nkki06bqq5zg526nyz")))))
-(define %mes-seed
- (let ((commit "057fd36735b5605fe582d6b3625f793a62922206"))
- (origin
- (method url-fetch)
- (uri (string-append "https://gitlab.com/janneke/mes-seed"
- "/-/archive/" commit
- "/mes-seed-" commit ".tar.gz"))
- (sha256
- (base32
- "0vdb4kc05a1kdpmsi8dg425d5f33kp28sgl2fi3s320pc0v4dv13")))))
-
-(define %tinycc-seed
- (let ((commit "843d47ca682617f21333b50c67851797b8c3fd04"))
- (origin
- (method url-fetch)
- (uri (string-append "https://gitlab.com/janneke/tinycc-seed"
- "/-/archive/" commit
- "/tinycc-seed-" commit ".tar.gz"))
- (sha256
- (base32
- "0599wwv30js03l1rpmvzfclq3jadzvq04pi29j45nf6fyfg5hhqb")))))
-
(define %srfi-43
(origin
(method url-fetch)
@@ -718,9 +694,8 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
((or "i686-linux" "x86_64-linux")
`(("linux-libre-headers" ,%bootstrap-linux-libre-headers)
("mescc-tools-seed" ,%mescc-tools-seed)
- ("mes-seed" ,%mes-seed)
- ("srfi-43" ,%srfi-43 )
- ("tinycc-seed" ,%tinycc-seed)))
+ ("mes" ,%bootstrap-mes)
+ ("srfi-43" ,%srfi-43 )))
(_
`(("libc" ,%bootstrap-glibc)
("gcc" ,%bootstrap-gcc)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 258655fba..4def178a8 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -102,13 +102,7 @@
(sha256
(base32
"1whbzahv16bwhavr2azqli0dcbk29p9rsqfbjl69la135z8vgdhx")))
- (origin
- (method url-fetch)
- (uri (string-append "mirror://gnu/mes/"
- "mes-" version ".tar.gz"))
- (sha256
- (base32
- "1dsaaqyanzsq9m5wrcd2bjhb3qd6928c9q97rg5r730pyqjwxyxf")))))
+ (package-source mes)))
(native-inputs '())
(propagated-inputs '()))))
@@ -135,8 +129,8 @@
`(("mescc-tools-seed" ,%mescc-tools-seed)
("mes-source" ,(package-source mes-boot0))
- ("coreutils" ,%bootstrap-coreutils&co)
- ("mes-seed" ,%mes-seed)))
+ ("bootstrap-mes" ,%bootstrap-mes)
+ ("coreutils" ,%bootstrap-coreutils&co)))
(build-system gnu-build-system)
(arguments
`(#:implicit-inputs? #f
@@ -148,7 +142,6 @@
(lambda* (#:key outputs #:allow-other-keys)
(let* ((coreutils (assoc-ref %build-inputs "coreutils"))
(mescc-tools-seed (assoc-ref %build-inputs "mescc-tools-seed"))
- (mes-seed (assoc-ref %build-inputs "mes-seed"))
(mes-source (assoc-ref %build-inputs "mes-source"))
(out (assoc-ref %outputs "out")))
(with-directory-excursion ".."
@@ -159,12 +152,11 @@
(mkdir-p "mes-source")
(invoke "tar" "--strip=1" "-C" "mes-source"
"-xvf" mes-source)
- (mkdir-p "mes-seed")
- (invoke "tar" "--strip=1" "-C" "mes-seed"
- "-xvf" mes-seed))))))
+ #t)))))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((coreutils (assoc-ref %build-inputs "coreutils"))
+ (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))
(out (assoc-ref %outputs "out")))
(setenv "PATH" (string-append coreutils "/bin"
":" "../mescc-tools-seed"))
@@ -172,7 +164,7 @@
(setenv "PREFIX" out)
(setenv "MES_PREFIX" "../mes-source")
(setenv "MESCC_TOOLS_SEED" "../mescc-tools-seed")
- (setenv "MES_SEED" "../mes-seed")
+ (setenv "MES_SEED" (string-append bootstrap-mes "/lib"))
#t)))
(replace 'build
(lambda _
@@ -223,7 +215,7 @@
("nyacc-source" ,(package-source nyacc-boot))
("coreutils" , %bootstrap-coreutils&co)
- ("mes-seed" ,%mes-seed)
+ ("bootstrap-mes" ,%bootstrap-mes)
,@(if %fake-bootstrap? ; cheat: fast non-bootstrap testing with Guile
`(("guile" ,%bootstrap-guile)
("srfi-43" ,%srfi-43)) ; guile-2.0.9 lacks srfi-43; cherry-pick
@@ -239,13 +231,12 @@
(let ((coreutils (assoc-ref %build-inputs "coreutils"))
(srfi-43 (assoc-ref %build-inputs "srfi-43"))
(nyacc-source (assoc-ref %build-inputs "nyacc-source"))
- (mes-seed (assoc-ref %build-inputs "mes-seed")))
+ (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes")))
(with-directory-excursion ".."
(and
(mkdir-p "nyacc-source")
(invoke "tar" "--strip=1" "-C" "nyacc-source" "-xvf" nyacc-source)
- (mkdir-p "mes-seed")
- (invoke "tar" "--strip=1" "-C" "mes-seed" "-xvf" mes-seed)
+ (symlink (string-append bootstrap-mes "/lib") "mes-seed")
(or (not srfi-43)
(and (mkdir-p "srfi")
(copy-file srfi-43 "srfi/srfi-43.scm")
@@ -256,7 +247,7 @@
(symlink (string-append "../nyacc-source/module") "nyacc")
(setenv "GUILE_LOAD_PATH" "nyacc")
(setenv "GUILE_TOOLS" "true") ; no tools in bootstrap-guile
- (invoke "bash" "-x" "configure.sh"
+ (invoke "bash" "configure.sh"
(string-append "--prefix=" out))
(setenv "MES" "src/mes")
(setenv "MESCC" "scripts/mescc")
@@ -286,15 +277,16 @@
(replace 'check
(lambda _
(when ,%fake-bootstrap?
- ;; breaks with guile-2.0
+ ;; break with guile-2.0
(delete-file "scaffold/boot/50-primitive-load.scm")
(delete-file "scaffold/boot/51-module.scm"))
(and
(setenv "MES_ARENA" "100000000")
(setenv "DIFF" "sh scripts/diff.scm")
- (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t")
- (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell")
- (invoke "sh" "-x" "check.sh"))))
+ ;; fail fast tests
+ ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t")
+ ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell")
+ (invoke "sh" "check.sh"))))
(replace 'install
(lambda _
(invoke "sh" "install.sh"))))))
@@ -319,8 +311,8 @@
;; ported to 0.9.27, alas the resulting tcc is buggy. Once MesCC is more
;; mature, this package should use the 0.9.27 sources (or later).
(let ((version "0.9.26")
- (revision "4")
- (commit "46ee3f18477575b189ac224eac853e96afd571e1"))
+ (revision "5")
+ (commit "c7b3f59d1a71e71b470f859b20f0cfe840f3954d"))
(package-with-bootstrap-guile
(package
(inherit tcc)
@@ -333,19 +325,18 @@
"/tinycc-" commit ".tar.gz"))
(sha256
(base32
- "0kq2si81piszpdcnp78w1lp5jd291srbx1f71fir08ybidiriw35"))))
+ "1agz5w5q6dm51n63hsxii33hxdghmdiacbb5zzxzac3aarfxjb2m"))))
(build-system gnu-build-system)
(supported-systems '("i686-linux" "x86_64-linux"))
(inputs '())
(propagated-inputs '())
(native-inputs
`(("mes" ,mes-boot)
- ("mes-seed" ,%mes-seed)
("mescc-tools" ,mescc-tools-boot)
("nyacc-source" ,(package-source nyacc-boot))
("coreutils" , %bootstrap-coreutils&co)
- ("tinycc-seed" ,%tinycc-seed)
+ ("bootstrap-mes" ,%bootstrap-mes)
,@(if %fake-bootstrap? ; cheat: fast non-bootstrap testing with Guile
`(("guile" ,%bootstrap-guile)
("srfi-43" ,%srfi-43)) ; guile-2.0.9 lacks srfi-43; cherry-pick
@@ -361,8 +352,7 @@
(let* ((coreutils (assoc-ref %build-inputs "coreutils"))
(srfi-43 (assoc-ref %build-inputs "srfi-43"))
(nyacc-source (assoc-ref %build-inputs "nyacc-source"))
- (mes-seed (assoc-ref %build-inputs "mes-seed"))
- (tinycc-seed (assoc-ref %build-inputs "tinycc-seed")))
+ (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes")))
(setenv "PATH" (string-append
coreutils "/bin"))
(format (current-error-port) "PATH=~s\n" (getenv "PATH"))
@@ -371,12 +361,7 @@
(mkdir-p "nyacc-source")
(invoke "tar" "--strip=1" "-C" "nyacc-source"
"-xvf" nyacc-source)
- (mkdir-p "mes-seed")
- (invoke "tar" "--strip=1" "-C" "mes-seed"
- "-xvf" mes-seed)
- (mkdir-p "tinycc-seed")
- (invoke "tar" "--strip=1" "-C" "tinycc-seed"
- "-xvf" tinycc-seed)
+ (symlink (string-append bootstrap-mes "/lib") "mes-seed")
(or (not srfi-43)
(and (mkdir-p "srfi")
(copy-file srfi-43 "srfi/srfi-43.scm")
--
2.18.0
^ permalink raw reply related [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 6/6] doc: Update Preparing to Use the Bootstrap Binaries.
2018-10-14 8:58 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Jan Nieuwenhuizen
` (3 preceding siblings ...)
2018-10-14 8:58 ` [bug#33038] [PATCH 5/6] bootstrap: Build with %bootstrap-mes Jan Nieuwenhuizen
@ 2018-10-14 8:58 ` Jan Nieuwenhuizen
2018-10-19 21:37 ` Ludovic Courtès
2018-10-19 21:22 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Ludovic Courtès
5 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-14 8:58 UTC (permalink / raw)
To: 33038
* doc/guix.texi (Preparing to Use the Bootstrap Binaries): Mention
bootstrap-mes alongside bootstrap-gcc.
(Reducing the Set of Bootstrap Binaries): Mention the Reduced Binary Seed
bootstrap, MesCC-Tools and Mes.
---
doc/guix.texi | 51 ++++++++++++++++++++++++++++++++++++---------------
1 file changed, 36 insertions(+), 15 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 48f01e989..0d7cabaa1 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -23583,8 +23583,8 @@ to use that term for what we do now.}.
The Reduced Binary Seed bootstrap removes the most critical tools---from a
trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
Library are replaced by: @code{mescc-tools-seed} (a tiny assembler and linker)
-@code{mes-seed} (a small Scheme Interpreter and a C compiler writen in Scheme)
-and @code{tinycc-seed} (the Mes C Library, built for TinyCC). Using these new
+@code{bootstrap-mes} (a small Scheme Interpreter and a C compiler writen in
+Scheme and the Mes C Library, built for TinyCC and for GCC). Using these new
binary seeds and a new set of
@c
packages@footnote{@c
@@ -23640,7 +23640,15 @@ packages bootstrap)} module. A similar figure can be generated with
@example
guix graph -t derivation \
-e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \
- | dot -Tps > t.ps
+ | dot -Tps > gcc.ps
+@end example
+
+or, for the Reduced Binary Seed bootstrap
+
+@example
+guix graph -t derivation \
+ -e '(@@@@ (gnu packages bootstrap) %bootstrap-mes)' \
+ | dot -Tps > mes.ps
@end example
At this level of detail, things are
@@ -23672,10 +23680,10 @@ write them in an output directory with the right layout. This
corresponds to the @code{#:modules} argument of
@code{build-expression->derivation} (@pxref{Derivations}).
-Finally, the various tarballs are unpacked by the
-derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv},
-etc., at which point we have a working C tool chain.
-
+Finally, the various tarballs are unpacked by the derivations
+@code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, or
+@code{bootstrap-mes-0.drv} and @code{mescc-tools-boot-0.drv}, at which point
+we have a working C tool chain.
@unnumberedsubsec Building the Build Tools
@@ -23741,7 +23749,9 @@ automated way to produce them, should an update occur, and this is what
the @code{(gnu packages make-bootstrap)} module provides.
The following command builds the tarballs containing the bootstrap
-binaries (Guile, Binutils, GCC, libc, and a tarball containing a mixture
+binaries (Binutils, GCC, glibc, for the traditional bootstrap and
+linux-libre-headers, mescc-tools-seed, bootstrap-mes for the Reduced
+Binary Seed bootstrap, and Guile, and a tarball containing a mixture
of Coreutils and other basic command-line tools):
@example
@@ -23760,12 +23770,12 @@ know.
@unnumberedsubsec Reducing the Set of Bootstrap Binaries
-Our bootstrap binaries currently include GCC, Guile, etc. That's a lot
-of binary code! Why is that a problem? It's a problem because these
-big chunks of binary code are practically non-auditable, which makes it
-hard to establish what source code produced them. Every unauditable
-binary also leaves us vulnerable to compiler backdoors as described by
-Ken Thompson in the 1984 paper @emph{Reflections on Trusting Trust}.
+Our traditional bootstrap includes GCC, GNU Libc, Guile, etc. That's a lot of
+binary code! Why is that a problem? It's a problem because these big chunks
+of binary code are practically non-auditable, which makes it hard to establish
+what source code produced them. Every unauditable binary also leaves us
+vulnerable to compiler backdoors as described by Ken Thompson in the 1984
+paper @emph{Reflections on Trusting Trust}.
This is mitigated by the fact that our bootstrap binaries were generated
from an earlier Guix revision. Nevertheless it lacks the level of
@@ -23777,7 +23787,18 @@ The @uref{http://bootstrappable.org, Bootstrappable.org web site} lists
on-going projects to do that. One of these is about replacing the
bootstrap GCC with a sequence of assemblers, interpreters, and compilers
of increasing complexity, which could be built from source starting from
-a simple and auditable assembler. Your help is welcome!
+a simple and auditable assembler.
+
+Our first major achievement is the replacement of of GCC, the GNU C Library
+and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes
+(a Scheme interpreter and a C99 compiler in Scheme). Neither MesCC-Tools nor
+Mes can be fully bootstrapped yet and thus we inject them as binary seeds. We
+call this the Reduced Binary Seed bootstrap, as it has halved the size of our
+bootstrap binaries! Also, it has eliminated the C compiler binary; i686-linux
+and x86_64-linux GuixSD are now bootstrapped without any binary C compiler.
+
+Work is ongoing to make MesCC-Tools and Mes fully bootstrappable and we are
+also looking at any other bootstrap binaries. Your help is welcome!
@node Porting
@section Porting to a New Platform
--
2.18.0
^ permalink raw reply related [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping'.
2018-10-14 8:58 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Jan Nieuwenhuizen
` (4 preceding siblings ...)
2018-10-14 8:58 ` [bug#33038] [PATCH 6/6] doc: Update Preparing to Use the Bootstrap Binaries Jan Nieuwenhuizen
@ 2018-10-19 21:22 ` Ludovic Courtès
5 siblings, 0 replies; 49+ messages in thread
From: Ludovic Courtès @ 2018-10-19 21:22 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: 33038
Hello!
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> * doc/guix.texi (Reduced Binary Seed Bootstrap):
LGTM, thanks!
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 2/6] gnu: mes: Update to 0.18.0-08f04f55.
2018-10-14 8:58 ` [bug#33038] [PATCH 2/6] gnu: mes: Update to 0.18.0-08f04f55 Jan Nieuwenhuizen
@ 2018-10-19 21:23 ` Ludovic Courtès
2018-10-20 6:41 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-10-19 21:23 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: 33038
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> * gnu/packages/mes.scm (mes): Update to 0.18.0-08f04f55.
> * gnu/packages/commencement.scm (mes-boot0): Stay at 0.18.0.
Perhaps put a comment as to why we take this particular commit.
Otherwise LGTM!
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-14 8:58 ` [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes Jan Nieuwenhuizen
@ 2018-10-19 21:31 ` Ludovic Courtès
2018-10-20 7:35 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-10-19 21:31 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: 33038
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> * gnu/packages/make-bootstrap.scm (%mes-stripped): New variable.
> (%mes-bootstrap-tarball): New variable.
> * gnu/packages/bootstrap.scm (%bootstrap-mes): New variable.
[...]
> +(define %bootstrap-mes
> + ;; The initial Mes. Uses binaries from a tarball typically built by
> + ;; %MES-BOOTSTRAP-TARBALL.
> + (package
> + (name "bootstrap-mes")
> + (version "0")
> + (source #f)
> + (build-system trivial-build-system)
> + (arguments
> + `(#:guile ,%bootstrap-guile
> + #:modules ((guix build utils))
> + #:builder
> + (let ((out (assoc-ref %outputs "out"))
> + (tar (assoc-ref %build-inputs "tar"))
> + (xz (assoc-ref %build-inputs "xz"))
> + (tarball (assoc-ref %build-inputs "tarball")))
> + (use-modules (guix build utils)
> + (ice-9 popen))
Please move the ‘use-modules’ form to the top level (non-top-level
‘use-modules’ works pretty much by chance).
> + (inputs
> + `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
> + ("xz" ,(search-bootstrap-binary "xz" (%current-system)))
> + ("tarball" ,(bootstrap-origin
> + (origin
> + (method url-fetch)
> + (uri (string-append
> + "http://lilypond.org/janneke/mes/"
> + (match (%current-system)
> + ("x86_64-linux" "mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz")
> + ("i686-linux" "mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz"))))
> + (sha256
> + (match (%current-system)
> + ("x86_64-linux"
> + (base32
> + "14sbcm79ml4rgygxvx1135827g3ggfx1c1vchk77z26yibbdw9nh"))
> + ("i686-linux"
> + (base32
> + "1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy")))))))))
So these two tarballs were made from this commit, minus the
bootstrap.scm changes?
It would be nice to maybe make this a separate commit (following the
make-bootstrap.scm changes) so that you can state in the commit log
which commit was used to build this binary.
Besides we can consider hosting these binaries on ftp.gnu.org, under
/mes or /guix.
> --- a/gnu/packages/mes.scm
> +++ b/gnu/packages/mes.scm
> @@ -21,7 +21,6 @@
> (define-module (gnu packages mes)
> #:use-module (gnu packages)
> #:use-module (gnu packages base)
> - #:use-module (gnu packages commencement)
Indeed ‘commencement’ should never be used by other package modules, for
reasons having to do with circularity.
Otherwise LGTM!
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 4/6] gnu: mescc-tools: Update to 0.5.2-0.bb062b0d.
2018-10-14 8:58 ` [bug#33038] [PATCH 4/6] gnu: mescc-tools: Update to 0.5.2-0.bb062b0d Jan Nieuwenhuizen
@ 2018-10-19 21:32 ` Ludovic Courtès
2018-10-20 7:41 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-10-19 21:32 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: 33038
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> * gnu/packages/mes.scm (mescc-tools): Update to 0.5.2-0.bb062b0d.
> mescc
> * gnu/packages/commencement.scm (mescc-tools-boot): Stay at 0.5.2
I guess the choice of commit relates to that of Mes? Anyway, LGTM!
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 5/6] bootstrap: Build with %bootstrap-mes.
2018-10-14 8:58 ` [bug#33038] [PATCH 5/6] bootstrap: Build with %bootstrap-mes Jan Nieuwenhuizen
@ 2018-10-19 21:34 ` Ludovic Courtès
0 siblings, 0 replies; 49+ messages in thread
From: Ludovic Courtès @ 2018-10-19 21:34 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: 33038
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> * gnu/packages/bootstrap.scm (%tinycc-seed): Remove.
> (%bootstrap-inputs): Use %bootstrap-mes instead of %mes-seed and %tinycc-seed.
> * gnu/packages/commencement.scm (mescc-tools-boot, mes-boot, tcc-boot0): Build
> with %bootstrap-mes instead of %mes-seed and %tinycc-seed.
LGTM!
BTW, this is all for ‘core-updates-next’, right?
Thank you for all this!
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 6/6] doc: Update Preparing to Use the Bootstrap Binaries.
2018-10-14 8:58 ` [bug#33038] [PATCH 6/6] doc: Update Preparing to Use the Bootstrap Binaries Jan Nieuwenhuizen
@ 2018-10-19 21:37 ` Ludovic Courtès
2018-10-20 8:23 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-10-19 21:37 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: 33038
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> * doc/guix.texi (Preparing to Use the Bootstrap Binaries): Mention
> bootstrap-mes alongside bootstrap-gcc.
> (Reducing the Set of Bootstrap Binaries): Mention the Reduced Binary Seed
> bootstrap, MesCC-Tools and Mes.
LGTM!
> +Our first major achievement is the replacement of of GCC, the GNU C Library
> +and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes
> +(a Scheme interpreter and a C99 compiler in Scheme). Neither MesCC-Tools nor
> +Mes can be fully bootstrapped yet and thus we inject them as binary seeds. We
> +call this the Reduced Binary Seed bootstrap, as it has halved the size of our
> +bootstrap binaries! Also, it has eliminated the C compiler binary; i686-linux
> +and x86_64-linux GuixSD are now bootstrapped without any binary C compiler.
s/GuixSD/Guix packages/
Perhaps add an @pxref for Mes?
> +Work is ongoing to make MesCC-Tools and Mes fully bootstrappable and we are
> +also looking at any other bootstrap binaries. Your help is welcome!
I still can’t believe this is a reality, awesome!! :-)
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 2/6] gnu: mes: Update to 0.18.0-08f04f55.
2018-10-19 21:23 ` Ludovic Courtès
@ 2018-10-20 6:41 ` Jan Nieuwenhuizen
0 siblings, 0 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-20 6:41 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33038
Ludovic Courtès writes:
>> * gnu/packages/mes.scm (mes): Update to 0.18.0-08f04f55.
>> * gnu/packages/commencement.scm (mes-boot0): Stay at 0.18.0.
>
> Perhaps put a comment as to why we take this particular commit.
> Otherwise LGTM!
Ah, sure; changed the commit message to
gnu: mes: Update to 0.18.0-08f04f55.
This update is a preparation for the %bootstrap-mes package; due to some small
problems it fails to build with plain mes-0.18. mes-boot0 stays at 0.18 only
to avoid another rebuild world.
%bootstrap-mes brings the building and packaging the Mes bootstrap seeds from
manual operation into Guix. We will bump mes and mes-boot0 to a future 0.18.1
or 0.19 and regenerate %bootstrap-mes in a nex iteration.
08f04f55 build: Oops, remove stray lib/linux/x86_64-mes/crt1.
33f37f27 build: x86_64 bootstrap build fixes and workaround.
4ae2a111 doc: Release update.
5277669b mescc: Oops, delete wrong line of assembly.
44cc97a8 admin: Release update.
* gnu/packages/mes.scm (mes): Update to 0.18.0-08f04f55.
* gnu/packages/commencement.scm (mes-boot0): Stay at 0.18.0.
Thanks!
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-19 21:31 ` Ludovic Courtès
@ 2018-10-20 7:35 ` Jan Nieuwenhuizen
2018-10-20 18:31 ` Jan Nieuwenhuizen
` (2 more replies)
0 siblings, 3 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-20 7:35 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33038
[-- Attachment #1: Type: text/plain, Size: 26213 bytes --]
Ludovic Courtès writes:
> Jan Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * gnu/packages/make-bootstrap.scm (%mes-stripped): New variable.
>> (%mes-bootstrap-tarball): New variable.
>> * gnu/packages/bootstrap.scm (%bootstrap-mes): New variable.
>
> [...]
>
>> + #:builder
>> + (let ((out (assoc-ref %outputs "out"))
>> + (tar (assoc-ref %build-inputs "tar"))
>> + (xz (assoc-ref %build-inputs "xz"))
>> + (tarball (assoc-ref %build-inputs "tarball")))
>> + (use-modules (guix build utils)
>> + (ice-9 popen))
>
> Please move the ‘use-modules’ form to the top level (non-top-level
> ‘use-modules’ works pretty much by chance).
Sure, do you mean like this?
--8<---------------cut here---------------start------------->8---
$ git diff -w
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index f33fc061e..f43e405f8 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -623,12 +623,13 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
`(#:guile ,%bootstrap-guile
#:modules ((guix build utils))
#:builder
+ (begin
+ (use-modules (guix build utils)
+ (ice-9 popen))
(let ((out (assoc-ref %outputs "out"))
(tar (assoc-ref %build-inputs "tar"))
(xz (assoc-ref %build-inputs "xz"))
(tarball (assoc-ref %build-inputs "tarball")))
- (use-modules (guix build utils)
- (ice-9 popen))
(mkdir out)
(copy-file tarball "binaries.tar.xz")
--8<---------------cut here---------------end--------------->8---
I copied this from %bootstrap-gcc, do we want to to change this in all
bootstrap packages too?
>> + (inputs
>> + `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
>> + ("xz" ,(search-bootstrap-binary "xz" (%current-system)))
>> + ("tarball" ,(bootstrap-origin
>> + (origin
>> + (method url-fetch)
>> + (uri (string-append
>> + "http://lilypond.org/janneke/mes/"
>> + (match (%current-system)
>> + ("x86_64-linux" "mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz")
>> + ("i686-linux" "mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz"))))
>> + (sha256
>> + (match (%current-system)
>> + ("x86_64-linux"
>> + (base32
>> + "14sbcm79ml4rgygxvx1135827g3ggfx1c1vchk77z26yibbdw9nh"))
>> + ("i686-linux"
>> + (base32
>> + "1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy")))))))))
> So these two tarballs were made from this commit, minus the
> bootstrap.scm changes?
Yes.
> It would be nice to maybe make this a separate commit (following the
> make-bootstrap.scm changes) so that you can state in the commit log
> which commit was used to build this binary.
Ah yes, that's nice. Hmm, there's a slight complication because for the
i686-linux version I cheated; icu4c, python-more-itertools and swig fail
to build on core-updates-next. I added a hack and reverted that...
which is probably less than great. So I cleaned it up a bit and just
added it.
So, now we three commits instead of this single one
--8<---------------cut here---------------start------------->8---
0001-bootstrap-Add-mes-stripped-mes-bootstrap-tarball.patch
0002-bootstrap-FTBFS-hack-for-icu4c-python-more-itertools.patch
0003-bootstrap-Add-bootstrap-mes.patch
--8<---------------cut here---------------end--------------->8---
(attached, and also on my gitlab core-updates-next. Now for a
rebuild...
--8<---------------cut here---------------start------------->8---
The following derivations will be built:
/gnu/store/bphs45cqip5xh574azfkqn4lb0g53zqa-mes-0.18-0.08f04f5.drv
/gnu/store/v8d7ygp7pa7ry2cf1yxjhca8inyjy8b6-libffi-3.2.1.drv
/gnu/store/xbiq4rwjlbq42ycnk3g69fya8xvnl9ch-gzip-1.9.drv
/gnu/store/pxval06kh8v5k3xyzdyxzrpp21kd7sg0-zlib-1.2.11.drv
/gnu/store/rav9k4aq3ixrrvw5034vzrdnv5dbjcpv-libstdc++-5.5.0.drv
/gnu/store/8capphw0wg0jlnixqq8fcgzn10s3wki2-nyacc-0.86.0.tar.xz.drv
/gnu/store/dbpx4lm42wby5mnwvv03nb2qps4a2zkh-glibc-2.28.drv
/gnu/store/bk8gwgz8xjzz8zppcnfllvh12f1vf82j-gcc-cross-boot0-wrapped-5.5.0.drv
/gnu/store/gs7iqdpxcn620q4i19wpqd7gh2bbhlhm-perl-5.28.0.tar.xz.drv
/gnu/store/7icagga75a82170wa5hv53bx34hl45ws-binutils-2.31.1.tar.xz.drv
/gnu/store/f2yb5n8sb41r6p26y588yxga8pkbgxlm-guile-2.2.4.tar.xz.drv
/gnu/store/w6hhc8n4rwx167jablmhm44467vvgcfr-libsigsegv-2.12.drv
/gnu/store/mhhmqliz3g38il5v6r8pnx4lc091rsl8-m4-1.4.18.drv
/gnu/store/c6mmp48fmrkd86zhz12672h4q6l8ziz7-expat-2.2.6.drv
/gnu/store/gzddzbxz1a1is1vflzy8a4mc4y0zqvns-gettext-minimal-0.19.8.1.drv
/gnu/store/m893488210iawlsd6zp1p55kxm0g4vqg-attr-2.4.47.drv
/gnu/store/40ag55xgskv7a7bhcb949inva7313amv-perl-5.28.0.drv
/gnu/store/41nkq7lqsgkl9jzdr0lircl6zgg0wgnl-acl-2.2.52.drv
/gnu/store/9bz4lny29nn93cn9vinp59ax4kb0xn87-libcap-2.25.drv
/gnu/store/sj8b0zbvcz1ch2221kcc4da9lzq5hh27-gmp-6.1.2.drv
/gnu/store/b483f3jksis89nf3g5hdq5yb7ndagv99-texinfo-6.5.tar.xz.drv
/gnu/store/1jzbjrmdgw0iw2m4dz85hz7k5p54aw7x-module-import.drv
/gnu/store/3ddfngr5wl63l75va8pvs65qj0563df6-isl-0.18.drv
/gnu/store/dqyw57nxkb3xyclpkhnrafyshbv14a1a-mpfr-4.0.1.drv
/gnu/store/jpxlwyrzli83gssfcavn37lhlw9dc0kj-gcc-5.5.0.tar.xz.drv
/gnu/store/pws8zvs7r92d64ar3i98j9g7ac6y7hfr-libelf-0.8.13.drv
/gnu/store/rb0d5cn0my5sz3zmsfr0kscr94vs058l-mpc-1.1.0.drv
/gnu/store/yn922ni0rwxkq882zls0xxf2qayb8r8b-module-import-compiled.drv
/gnu/store/zb9k79g6y7nscnvznf4spsk0qwfks30f-ld-wrapper-i686-unknown-linux-gnu-0.drv
/gnu/store/g7lf0knb6nmh9277s5h4mgv1y5ydl8ky-m4-1.4.18.drv
/gnu/store/8n65d7fs4apfgkzshw6wsv9ysrxnajwh-pkg-config-0.29.2.drv
/gnu/store/bypa7gcsnmsnkw3vcxgjd41m5w24dswc-libatomic-ops-7.6.6.drv
/gnu/store/1pp9r25slvggwp9sy40nykvmh6v6n2jv-libgc-7.6.6.drv
/gnu/store/2q9mh9cfd3dwsw0fws0carsfmqvi2znf-libltdl-2.4.6.drv
/gnu/store/353wfgj275zjlknfx1hyy7gjvfwdk43v-gmp-6.1.2.drv
/gnu/store/gsx7h76lyzk4cqsk3fabnjamxc0rj83q-pkg-config-0.29.2.drv
/gnu/store/y6yji4863382524yl5hfqw3as1i05li9-libunistring-0.9.10.drv
/gnu/store/06g1zy5r33lv2zasnvsi5k95kpzq6hrb-glibc-intermediate-2.28.drv
/gnu/store/2k79fghny3glx0ncyx2khx22z5rczbca-gcc-cross-boot0-wrapped-5.5.0.drv
/gnu/store/gky91kz0kwfyvqdb7ngkr3c80pyzfbk4-libstdc++-boot0-4.9.4.drv
/gnu/store/1h2fxp63iyjz2i5ammgbs1cfhn93cl5s-gettext-boot0-0.19.8.1.drv
/gnu/store/66va6gpq32s6ddm2g3mbf6fa32rqbkgq-gcc-cross-boot0-5.5.0.drv
/gnu/store/6zvd37ilivsiwy0fxj4qxv153gf02cqf-bison-3.0.5.drv
/gnu/store/8bzgazlsl987z86dl5ic05zg945z0g5w-texinfo-6.5.drv
/gnu/store/8gv9b9plyd1ypw3kvw0h4jzf15m6b8f6-bash-static-4.4.23.drv
/gnu/store/f2zrs1fyl1dsgr704i7nfi31lzxizf76-m4-1.4.18.drv
/gnu/store/ki01mfihxr6wxr4razb7k4f0nghl3q0a-tar-1.30.tar.xz.drv
/gnu/store/3qbp6f4gwv473p57nrd91m026x4ip48w-tar-1.30.drv
/gnu/store/brikdb0a1pp4sbaqnvpl5cz52awwqkvh-util-linux-2.32.1.tar.xz.drv
/gnu/store/ri9zx9xmv9igclc9wq1m3zhsh6iwnhs0-net-base-5.3.drv
/gnu/store/r0hr89rxiak9n0amp7qqz3my189i9l6r-pixman-0.34.0.tar.xz.drv
/gnu/store/36xv1ylrn3p5jvvdnvvdh7lrq26d9v8j-python2-pyflakes-2.0.0.drv
/gnu/store/b2400k8xi6pyz67lbhzgqrl1dh88my7r-python2-flake8-3.5.0.drv
/gnu/store/ccc9wy6wfn2f5ss70y7cnhamfg29xxfg-python2-pycodestyle-2.4.0.drv
/gnu/store/h29ii7953mzfpysjxhkr34vhn2xhyipb-python2-mccabe-0.6.1.drv
/gnu/store/l8gnxji4rlcb87yl2qlaxmkbflvazqk8-python2-configparser-3.5.0.drv
/gnu/store/8njy2x8hv5j13mcijndicrgfl2jqwlrb-unittest2-1.1.0.tar.xz.drv
/gnu/store/1xjjyryz3nrpaa1vz0zhvypr501mpn4j-python2-traceback2-1.4.0.drv
/gnu/store/v7lva1ap0m3fpxcpa2097f0gsih92il1-python2-linecache2-1.0.0.drv
/gnu/store/w78r0mywxjqqj4zqzgra1q4p02v05c9x-python2-unittest2-1.1.0.drv
/gnu/store/0zp9i8ksj0cg4lyv45kb0j2w4kysx0f2-python2-enum34-1.1.6.drv
/gnu/store/d9h12q3x70ayyli4qr7hhq3zdrvr5w8k-python2-mock-2.0.0.drv
/gnu/store/ddlfnzg8gh33algzg8prmkr06fc0qppa-python2-hypothesis-3.70.3.drv
/gnu/store/i7rs3pbnpf3s5rd9w89nqm80xxyn505g-python2-coverage-4.4.1.drv
/gnu/store/jly0spzsm7kxnsqfmwkqs5r5dx34b4lf-python2-functools32-3.2.3-2.drv
/gnu/store/mvzagypypvn8hv644ddkw5hz1sh0kzv2-python2-pbr-minimal-3.0.1.drv
/gnu/store/r1zlg9djch87cwlghdnx7wwa53f1yh68-python2-nose-1.3.7.drv
/gnu/store/41q0l1hylzanwa4w2hrnr4bc21b22ywi-python2-pathlib2-bootstrap-2.3.2.drv
/gnu/store/7r1xcdny7x3vy7mi804bgyl72a2i4nmz-python2-pytest-bootstrap-3.8.0.drv
/gnu/store/bc6blr82kmzzhimipbn9j3sxcr6icfps-python2-funcsigs-bootstrap-1.0.2.drv
/gnu/store/zsqxy0awzd7zddimgng77dix6icwac5l-python2-setuptools-scm-3.1.0.drv
/gnu/store/28k5m2zz01jz19z5apanaypgyjkc1cp4-python2-pathlib2-2.3.2.drv
/gnu/store/4d3xsc3x15qrgx68pkw42gv6aycsrryd-python2-pluggy-0.7.1.drv
/gnu/store/50a0xl3h44282vb3qbvh85kfgwbzq3ys-python2-six-1.11.0.drv
/gnu/store/6jx4jp6gbkni2ydqkdgla3rzbnwa1w0h-python2-six-bootstrap-1.11.0.drv
/gnu/store/a9zi7l3z73cnigfxa1p462y9zwcmas8g-python2-pytest-runner-4.2.drv
/gnu/store/bjws6pmv5r231jgmkbnxy4x86jh0rgpb-python2-atomicwrites-1.1.5.drv
/gnu/store/dxpx5z0rq7akwqmwy9wprj4y9m7jh4pv-python2-more-itertools-4.3.0.drv
/gnu/store/jbj3gpv4i1yrf93gwml8dsgx7ihjqd69-module-import-compiled.drv
/gnu/store/jxp75ljabgj8kkpwhx0cliibkmn495wc-python2-py-1.5.4.drv
/gnu/store/m388wnhx3gf66walgb2npx98vjgdcg9b-module-import.drv
/gnu/store/nyn26kdrbfzh36g62rsp30h4cfs1mmah-python2-scandir-1.9.0.drv
/gnu/store/rbz98wzwqbswp5fz9f5lpc802jp4p82d-python2-pytest-3.8.0.drv
/gnu/store/w1inmhdd3nlkz2c3phiknjbg20an361n-python2-funcsigs-1.0.2.drv
/gnu/store/xxca9rzi04k3m3cqyj3pbrmf3shs21av-python2-attrs-bootstrap-17.4.0.drv
/gnu/store/b9dvzb5vz1d2s8lfb6xb6zvpv986ygw4-python2-fonttools-3.28.0.drv
/gnu/store/x6kpijcjq31cnfjiahddmj52jyy93dpf-tcsh-6.20.00.tar.xz.drv
/gnu/store/9dxhs1xgqvnip051qbk3fp5snn3lhwb8-boost_1_68_0.tar.xz.drv
/gnu/store/bql3ni5g2ra6qic0wmncw9wjdqp7f1x2-tcsh-6.20.00.drv
/gnu/store/4w00spnh6cg37p0jdz7dc9a4pb2l05hk-pcre-8.42.drv
/gnu/store/gihrzdyf1k5nmlry7dxwm4j602h4s6jn-boost-1.68.0.drv
/gnu/store/g6wcv1y0bqj5yimw2gj97gfwd2b5k7f1-libarchive-3.3.2.tar.xz.drv
/gnu/store/vz1i6gmnnn22749my69n5v50f855xybn-lzo-2.10.drv
/gnu/store/ah5j33bi3ymygxsrcr8r3pv0fs23m4la-Linux-PAM-1.2.1.tar.xz.drv
/gnu/store/4mm2s9yxzjzr818sb0iw3ssflj71bspy-shishi-1.0.2.tar.xz.drv
/gnu/store/nv116sgn1nahqnbfklbk9l9lsdnyg0ap-linux-pam-1.2.1.drv
/gnu/store/nzaqj29k09c70lkc8zx0mpzfbkvsjla1-shishi-1.0.2.drv
/gnu/store/g4rd9429i7cfax4vhrahcqqwgg9z6nll-unzip60.tar.xz.drv
/gnu/store/9dgah55cs5r8a5wckaw0pmfgldr1d46i-unzip-6.0.drv
/gnu/store/ibn47hr8qh0wy76jq2p0s1mm81k181wn-net-tools-1.60-0.479bb4a.drv
/gnu/store/jwaznmglj03a8sn6kd4xpybmr95w6043-gnutls-3.5.18.tar.xz.drv
/gnu/store/4cmc9d7c8x1l33mv6vvs91jhy5cn5wxm-cunit-2.1-3.drv
/gnu/store/55kldr5f8ywqmcmrj2ax1h9r5k0k5vbd-jansson-2.11.drv
/gnu/store/cjni13phddsqjyhl4v77m85s8khax236-libev-4.24.drv
/gnu/store/nz2s23jmlxvzg5kw3hzbyklf3vzlnl8f-jemalloc-5.1.0.drv
/gnu/store/wf369yzkapk66cxy5jrbsw9kmrd3b3vy-c-ares-1.14.0.drv
/gnu/store/d073rmnynlhrvkhvhqygnwxlkyv1zc9a-libssh2-1.8.0.tar.xz.drv
/gnu/store/wkkbv1kcbk0p7ryl90393cf93mjnh0cn-lzip-1.20.drv
/gnu/store/1gr026h9g01iiyb828hgqhbh4vif3i6i-mit-krb5-1.16.1.drv
/gnu/store/cq1ks7d18xc8nxxndr15wi0gavxqbgws-cyrus-sasl-2.1.26.tar.xz.drv
/gnu/store/f8py4zn4gy566016kx0dv3ppj83p9cnn-automake-1.16.1.tar.xz.drv
/gnu/store/ymi7crm2yjlhkis84aprf14dyh9fg6j5-autoconf-2.69.drv
/gnu/store/32pa4sr2s8qqafwz5666kfd520cm9zrb-libtool-2.4.6.tar.xz.drv
/gnu/store/69vljdh03kfx17xxfgsm2sjf9rnc1rm6-autoconf-wrapper-2.69.drv
/gnu/store/vfcb2z2wxl4h8bdg3iyng9nm7lk8rlml-automake-1.16.1.drv
/gnu/store/4sgqikml6f6nvxvd93ii2xnzn02jqmjj-libtool-2.4.6.drv
/gnu/store/9skg19shbsal0l0bajnv1vnrj75b87g9-bdb-5.3.28.drv
/gnu/store/z10bjm91jpxvjh3921xdzrgyib802ns0-cyrus-sasl-2.1.26.drv
/gnu/store/18ixgx50lpqrm7c4lgzh6wc60j2d82jf-psutils-17.drv
/gnu/store/rq9w87gk5jsmj9cf4gwzjj4zil18bava-groff-1.22.3.tar.xz.drv
/gnu/store/2jgvb56kvvhkb52yc4z8vm6s4hz8n7fl-groff-1.22.3.drv
/gnu/store/70bcxynv21wm624784zbqr4wz8wakp1r-openldap-2.4.46.drv
/gnu/store/7iyhhax8m9wqisha355q1rf03lk9s624-libidn2-2.0.5.drv
/gnu/store/87hzb4qzyk8vl1fqf1k6k8r151mknhkz-libtasn1-4.13.drv
/gnu/store/dyhysj4djvb891wpn6hnbpf1jb85cdmr-libssh2-1.8.0.drv
/gnu/store/mwvz987pnc2h1hxfvh6iy0202h0fg5dk-nghttp2-1.32.0.drv
/gnu/store/vd09cmlqsaw4fixh7xqwdkpdac38hrbh-gnutls-3.5.18.drv
/gnu/store/w5ayiv3jrmb6d7d614w9ahwjg6m67jyv-libidn-1.35.drv
/gnu/store/y651q2i1fvpr2d35zimi6xbiycj6srpz-gss-1.0.3.drv
/gnu/store/zmwvhkiv5cgq8anb0lnc3gy8y9j4kzrx-nettle-3.4.drv
/gnu/store/330v3vg07kv3wg10kfsrxq1sx6gah7pr-file-5.33.drv
/gnu/store/hc4vx0rkbpmxhvvz95s8bm68s76gzq2x-curl-7.61.1.drv
/gnu/store/j83gwihrcjw2hd11jsx4cyw3b1jzjlj6-libuv-1.23.0.drv
/gnu/store/kpb356kq71xq7xda03hsj2v3mqqfxdy8-rhash-1.3.6.drv
/gnu/store/vk3pgqysvyib66n3hdcx8v47mvhdbg85-libarchive-3.3.2.drv
/gnu/store/w4iwzmvb7v1mk2344gd2rhrizyc3sfvz-cmake-3.12.2.tar.xz.drv
/gnu/store/scbk06qnkcbphydgrzhghb420rv9n5vh-nasm-2.13.03.drv
/gnu/store/1vfzg7vpidawkrq62ywa687fymk7pav2-lcms-2.9.drv
/gnu/store/68h8ifir3c6qxhbfq38y1hyfydbbcdzs-libjpeg-turbo-2.0.0.drv
/gnu/store/9701719rvn9sx3v4536fp5b5y2slc0pl-cmake-3.12.2.drv
/gnu/store/fxcnkg1l44xaqynlvlbzvqgci61q66g5-module-import.drv
/gnu/store/imyhz1cpfr0hr4hhw69wiryd2mf7z03x-module-import-compiled.drv
/gnu/store/qr5nvlalj2j6kb6xwlrzbh5h4jgwrm0a-openjpeg-2.3.0.drv
/gnu/store/rspbfm5s6jysh8aq3jlf3c1jlli9jqzh-cairo-1.14.12.drv
/gnu/store/jgpbn052xkh2yx1spkaxfv3vdc0qwzx4-tiff-4.0.9.tar.xz.drv
/gnu/store/la89w2rv7906nibn64kjpk86qqprh0jm-jbig2dec-0.15.tar.xz.drv
/gnu/store/391s09gr41lhvhkm87s1glvi2vbhg2sa-ghostscript-9.24.tar.xz.drv
/gnu/store/79hscx83qkpkgqb7vc14a4nc3l2njg92-jbig2dec-0.15.drv
/gnu/store/k5d2h2d3qwkkq6hamrfv2xqh98lh4hnc-libpaper-1.1.24.drv
/gnu/store/qcxma3038ygysypp6rgasfxkp797bidq-libtiff-4.0.9.drv
/gnu/store/0ip03rh8qhvxcps01s14nmf5rl9jz8na-cairo-1.14.12.tar.xz.drv
/gnu/store/cl0mb707i2iv3jvhyk9b26vvdywjihxp-ghostscript-9.24.drv
/gnu/store/j8nc5yl63755g52g0wbvfxidv9a61dcs-poppler-0.68.0.drv
/gnu/store/qb14zigyffcap09a3vxav7px6xqd479r-libspectre-0.2.8.drv
/gnu/store/pacgkri88pd2f306c8fisb3dcljwxw09-libXt-1.1.5.tar.xz.drv
/gnu/store/3qi523qqs4g80rgvb7ppf2l512mf3w4a-gs-fonts-8.11.drv
/gnu/store/m6f6nxxx9x6m6ficq1kjal88hn13jzqf-gperf-3.1.drv
/gnu/store/g57x458v8jd7jhmg2zr32pz51hi5pia8-tk8.6.8-src.tar.xz.drv
/gnu/store/z1hj0p9yy6j9a9nsibn31c70hp0jq2r6-libxft-2.3.2.drv
/gnu/store/21fvmbh6ij78jsqv8p7fbc3qmc4afb8d-tk-8.6.8.drv
/gnu/store/9pjz9w044dqabprilwv8n6i38vszkknb-tcl-8.6.8.drv
/gnu/store/mrnjfnw7hkwv90d5ylqph31d2f4qkm70-Python-2.7.15.tar.xz.drv
/gnu/store/mvx66dbxpm12dpfzaz8j5zn3fp7vyjbm-gdbm-1.18.drv
/gnu/store/rb29w2nn59kxqryfq48n55s305s9mshc-sqlite-3.24.0.drv
/gnu/store/j39yf4wg9jyj2h49nvq1hzf4l1nsy5vg-dbus-1.12.10.tar.xz.drv
/gnu/store/ablr2vf5j12x19fqv6dsk86swz8yifx7-gettext-0.19.8.1.tar.xz.drv
/gnu/store/9psnljb4mjjf5djhjmpnsg99rljk966h-acl-2.2.52.src.tar.xz.drv
/gnu/store/8v6jzgpnadcm4blmq10zryy912x435c5-attr-2.4.47.drv
/gnu/store/2kvfxildblic3rpmbrhqfvplhhgrmard-libcap-2.25.drv
/gnu/store/nknfyjpq6yz91s0i5833cjyyfkdrgivy-acl-2.2.52.drv
/gnu/store/1a2ygp0sigrv9j1fqws6ccfsi1b7gx0j-coreutils-8.30.drv
/gnu/store/bflw2px8ddzicxdhk8kh6f2psci9ks4p-tzdata-2018d.drv
/gnu/store/ihy3vp554vmf2ybjpjg3kdiwb22xhpz9-gettext-minimal-0.19.8.1.drv
/gnu/store/kwfg3699z50f7gp7jnhj25ms73g1blgj-glib-2.56.2.tar.xz.drv
/gnu/store/m64v0dzll9zvb8ibbsn1fl67i0x39rww-dbus-1.12.10.drv
/gnu/store/cnjn7zsxcrhsl14rhyqhga5i1kfwv313-indent-2.2.10.drv
/gnu/store/ybq3whhjgychhljk8015l3di0qc73r9v-bison-3.0.5.drv
/gnu/store/8654yb7828ljfrq2z2pswjz8szlc61w3-flex-2.6.4.drv
/gnu/store/d23lk2vlvsdsyy165iqlz5awvjcg3ims-gobject-introspection-1.56.1.tar.xz.drv
/gnu/store/jdpgzjm8kzx14pfmh99apfwkmwyjs6sm-glib-2.56.2.drv
/gnu/store/wqvjkpp60785qv61xfwmb18jlc7si1m9-python2-2.7.15.drv
/gnu/store/br1hk2h8y8h56p1va8hw4swy8cjx90wq-gobject-introspection-1.56.1.drv
/gnu/store/j7ks2pabi1bwcclvi23giqw6rfzshrl9-python-3.7.0.drv
/gnu/store/jl5ml0ykc205qzd9qiiqgnw1n112mkky-python-wrapper-3.7.0.drv
/gnu/store/sjabrfd8ld87qcxq4fj6v8zsiz79kqxm-which-2.21.drv
/gnu/store/hf9296iw3fx6i7id6c75243xr7gs3xbb-libgd-2.2.5.tar.xz.drv
/gnu/store/nv21wg2dmza1fxjy8ryqp948mwa5xnfh-bzip2-1.0.6.drv
/gnu/store/f4rywr441c85kx6xad1cylj6zdnc5l7g-openssl-1.0.2p.tar.xz.drv
/gnu/store/0405s3msq7597fdigwap5dz7cvq0r6xv-Python-3.7.0.tar.xz.drv
/gnu/store/834jh1i2pa9ji0y19cqqjcj0cd1hhji3-openssl-1.0.2p.drv
/gnu/store/yk7n9qhphsia9m08gjk0svafbxzy465j-readline-7.0.tar.xz.drv
/gnu/store/a0l2plf8zfypdhh8mnpwl2ryaw04ykqs-readline-7.0.5.drv
/gnu/store/c6gy9hjipca5gkvimxafj5z7lkizr4wc-ncurses-6.1.drv
/gnu/store/5x29i5bpwsy1acn2gxh7789vjzkvg975-module-import-compiled.drv
/gnu/store/sl0aqj5f72z45w6svp3aypc8f1jxysx7-bash-4.4.23.drv
/gnu/store/v2f59p5g404m2nk6pwff4fw5fl62xkpz-module-import.drv
/gnu/store/9r0qw0i0f99kfngpdpn989g4jw15fvln-libgcrypt-1.8.3.tar.xz.drv
/gnu/store/49xngblbl91y2w7gz5qka6fr21aw0d2f-xz-5.2.4.drv
/gnu/store/50rg4jiiwdqdg9xg0x19mrs21djjwpa1-libxml2-2.9.8.drv
/gnu/store/gpfljxgx93nncinc51plvjblbm54fbb0-libgcrypt-1.8.3.drv
/gnu/store/h31qc5jlvv09faq392a82mwfk4wq840z-libxslt-1.1.32.tar.xz.drv
/gnu/store/jk5dsb80hfqhbcj8sywbw688vy0gq04h-libgpg-error-1.32.drv
/gnu/store/005sww4vpb05nbqsdyms61xhsygq8wg9-xcb-proto-1.13.drv
/gnu/store/6ch1r1nfs261b3200csan57dkzvcyivd-libxslt-1.1.32.drv
/gnu/store/h1mblxgbywpbvlpbkd4vh5z7nig523rf-python-minimal-wrapper-3.7.0.drv
/gnu/store/xl9pbww96cyrg2pd5alkq7linz5hr0r4-python-minimal-3.7.0.drv
/gnu/store/giihhfcvzbprl3j4jv08yzl2vl6fcjwh-libbsd-0.9.1.drv
/gnu/store/zg8ndpy71gb0rj36w8s4kb50qfnqcmwn-xtrans-1.3.5.drv
/gnu/store/083w8h3d719pwv1cv2al2r6c83cvaqmw-libffi-3.2.1.tar.xz.drv
/gnu/store/9m2qa2n7laivi3fbjahg4a63a4sv6as6-bash-4.4.tar.xz.drv
/gnu/store/gcylp6j6dkxnm35i8qx6v6smfdfbqvrh-bash-minimal-4.4.23.drv
/gnu/store/hwgmvhc51wx6n2nk71clhfqdj0vvfchd-libffi-3.2.1.drv
/gnu/store/070vnahp6iy5yhgrq6ny083isv0d2g4g-guile-2.0.14.drv
/gnu/store/08nz5l13l3xcjb2m9ynjmn313rfmq0rw-libxext-1.3.3.drv
/gnu/store/0bia2h4zx0m3ydkdpqv0qpr062n05681-libxau-1.0.8.drv
/gnu/store/0pgw9pr3wqyam9x83wzq75ab1xv13lfn-libpng-1.6.34.drv
/gnu/store/1w6hppji0jag8hrdsxrhzls998d4dvm8-libice-1.0.9.drv
/gnu/store/1zgflgy2x48mg84aisfzprman2kyzymg-libxcb-1.13.drv
/gnu/store/24zw4azrlv55d2kmg4qk47z6q9mlx19q-libjpeg-9c.drv
/gnu/store/4h0dwn6b6m4nl6368m1n5v6pjy8vrwpj-libpthread-stubs-0.4.drv
/gnu/store/6c1p7dv8rjlvnj1l7p7fdw8zcdm67273-icu4c-62.1.drv
/gnu/store/6i5d4x9ncccsawr11snv4hwnbnavj6k9-libxrender-0.9.10.drv
/gnu/store/6rv6smrqf5d7hkn503ksvdwq7p7gk2cv-libxaw-1.0.13.drv
/gnu/store/6ywzsnnl4wvm0x5w5j0f6dmrai8np385-gts-0.7.6.drv
/gnu/store/6zwxx9l9mr8vmnkmp8dnp13nmals2h37-libxmu-1.1.2.drv
/gnu/store/84y441mlgcwmm0iqxhvmkzbasvbimdvl-libsm-1.2.2.drv
/gnu/store/8hshwki238vgwmh016s13m8l8z8a9aj4-gd-2.2.5.drv
/gnu/store/8icygsr1ymgb7dsmiai06p83d91imq6c-libx11-1.6.6.drv
/gnu/store/8jcad438imknc1ajz9zvz4jr4wibg19i-harfbuzz-1.8.8.drv
/gnu/store/ar6gq40s08mb1flr2i613hyxdcsmng4g-pango-1.42.4.drv
/gnu/store/br42l5f811k3yxmjb5p0g2lpfa8bpalf-fontconfig-2.13.1.drv
/gnu/store/dv3b809qi1610w26l8263dwr0am7q105-libxt-1.1.5.drv
/gnu/store/gg87iia8pxh549bfffvmdi4i4sck9z78-cairo-1.14.12.drv
/gnu/store/ginq25h0xfiv5dmw5hdv898nsd443bkz-xorgproto-2018.4.drv
/gnu/store/ixhzivppsarpx8ysgqpfqhaci3yrqdfj-swig-3.0.12.drv
/gnu/store/j9wmgny74q5v7gs5bwq4d4wziz4c1byi-graphite2-1.3.12.drv
/gnu/store/jgmscbf0rcq38dvm0avg1nm8v921cxpa-pixman-0.34.0.drv
/gnu/store/kf0jq8dswkccyn7d58rpjddffq4q0wcz-expat-2.2.6.drv
/gnu/store/l5c7hcj1pfjjm5cyqj7amh2hccc26k88-libxdmcp-1.1.2.drv
/gnu/store/la9wxnhpwhgi2qqgzqy3bq6kaxczvz41-bison-3.0.5.drv
/gnu/store/mfm1q9i1n7gz78ip5nsd1i8gqhk2sin8-util-linux-2.32.1.drv
/gnu/store/p5sc6acsqplj1lj6lxqn7gbksynplj24-zlib-1.2.11.drv
/gnu/store/qki9nf7a4nch40g72j2mlr0if2c7kaqh-freetype-2.9.1.drv
/gnu/store/v24xs418zrqcjymk1409fykmykw9l9x6-fribidi-1.0.5.drv
/gnu/store/zr7viwain7f5vax41bbkb9jqywaf65ma-util-macros-1.19.2.drv
/gnu/store/zvalbg4gi2qlv6djmg632mg12a6whxn2-libxpm-3.5.12.drv
/gnu/store/958c1r55qawp8zzk7isrmj2gc453aayk-pkg-config-0.29.2.drv
/gnu/store/i1956icy2ygfms3f4nfr3gv73fzchlv7-libatomic-ops-7.6.6.drv
/gnu/store/4wdpldc01lwqdqp1hk5gv0qasmczv1ks-perl-boot0-5.28.0.drv
/gnu/store/4hm2li1by1c5v0mlmh21xy54pglij2z6-lzip-1.20.drv
/gnu/store/cfnlg9kwmzs4cf22lp6015s3z83szcyi-ed-1.14.2.drv
/gnu/store/fnykjyw0h9yiqp756yyz3g7pjfpyqwv2-module-import-compiled.drv
/gnu/store/jkjiryh0v8i4zrc4mavlh8cikmmwf4sh-m4-1.4.18.tar.xz.drv
/gnu/store/hss34q6152bincdvpmnfavpsg0pq17iv-m4-1.4.18.drv
/gnu/store/i0a8ki7377q9c9zg4v065b2y8996qy91-gmp-6.1.2.tar.xz.drv
/gnu/store/c7xki19y7dgv16klicyfxfc4fa9wc33g-glibc-headers-mesboot-2.16.0.drv
/gnu/store/lavsjb6dhrgpw9irb2gf23pa7qnsz65c-mesboot-headers-0.18-0.08f04f5.drv
/gnu/store/r9dhvhhhg8y17ymifrd0wn4ji4p0608z-gcc-core-mesboot-2.95.3.drv
/gnu/store/b8sq9jrfdg6zi31m4m1qzs5rvz0jhyas-tcc-boot0-0.9.26-4.46ee3f1.drv
/gnu/store/iz3qnd398va3qhprnb60vxdb9ai45h08-mes-boot-0.18-0.08f04f5.drv
/gnu/store/mzgarfi6pyg6ybfnwj6vmn8wym0czmir-tcc-boot-0.9.27.drv
/gnu/store/864c8w439yw51xxfpzqklm8giamqzrvl-binutils-mesboot0-2.20.1a.drv
/gnu/store/jm7dpc4hmlgizzvch86sjl9dggsjx4zk-make-mesboot0-3.80.drv
/gnu/store/s94wgv4v9am10i7x94cpdxnv6yr7qy92-gcc-mesboot0-2.95.3.drv
/gnu/store/yaq4a6am5lm36q0kj2icb5qv08zzck18-glibc-mesboot0-2.2.5.drv
/gnu/store/014av6h60db5ixavrbbk51qpdl7f19jw-make-mesboot-3.82.drv
/gnu/store/96wl9w1kg9mq3cv8wdfzhkmapyyp31ch-gcc-mesboot1-wrapper-4.7.4.drv
/gnu/store/qrv7qb8w4yyb88wbs9399l4vki85kfsl-diffutils-mesboot-2.7.drv
/gnu/store/zrcd2ilg4bja9vrzvas48g0c9ah2hf7k-gcc-mesboot1-4.7.4.drv
/gnu/store/g19myai8znkydp4wyzmadzxid8p4620c-gcc-mesboot-4.9.4.drv
/gnu/store/hv2wnd46a5zq9c9yqx61pvi9246qkwsv-binutils-mesboot-2.20.1a.drv
/gnu/store/waqjqg1b733zj2q7ii22yqfqzlwhjldc-glibc-mesboot-2.16.0.drv
/gnu/store/261mb7wwa7qs9ldaz6jknviy0p3ll9l5-ld-wrapper-boot3-0.drv
/gnu/store/3ad9mfnn4y9xnm85w4bvfbfc9h8jlkx4-ld-wrapper-boot0-0.drv
/gnu/store/3ls6lc1qf345fm470n6a1ida5xzjakgq-findutils-boot0-4.6.0.drv
/gnu/store/461mg5i4q0pd0q0wvrbn8n6d87i48nim-diffutils-boot0-3.6.drv
/gnu/store/p9ang26iqfl2fpdgqciygd683kqam3pg-gcc-mesboot-wrapper-4.7.4.drv
/gnu/store/sv4im4qld0gy2fb4ad0nnwhjwydvxx2d-file-boot0-5.33.drv
/gnu/store/yngx3kvncs98mkq3mka0ibd1svkc7fnp-make-boot0-4.2.1.drv
/gnu/store/yyzgslk3878k4ncc2j0lglphmkp6sidz-binutils-cross-boot0-2.31.1.drv
/gnu/store/161ynzclzh5q0xf6pqbawhx9rr9fgbbb-xz-5.2.4.drv
/gnu/store/1fchmwdj9v9hz89hdfzz20dpblwmq3cq-gmp-6.1.2.drv
/gnu/store/1jwkxq2g1jndfy9qf84l35knzshbyjap-tar-1.30.drv
/gnu/store/2nggvgy1gx3zh2gny8f40drnmn1ql0sq-patch-2.7.6.drv
/gnu/store/3b83v0xmnnb1hiiz5m8bph8jv83lza39-module-import-compiled.drv
/gnu/store/3rkwbp6ygjv7llknmnyvg27rl0zan201-linux-libre-headers-4.14.67.drv
/gnu/store/51wh1j7z8x7k8wnivmh5wizyhfhf5c4j-bash-minimal-4.4.23.drv
/gnu/store/5ablb8j0nz3ld180iqngxw90h8wrq5qg-libltdl-2.4.6.drv
/gnu/store/5sn4p7cz4y6x08gw44lbsqwvpl4l3g2v-help2man-1.47.6.drv
/gnu/store/8jli3rbikb4bk6sx3bkwx051v0sy5jzx-diffutils-3.6.drv
/gnu/store/8xp1wrpllnij44a9gs5g09j612c0h0nk-libgc-7.6.6.drv
/gnu/store/8zpynp6skz6w6wkjsq04ylaijsdzsy5j-graphviz-2.40.1.drv
/gnu/store/as7naflfvd0fh3s31llv9ff4sm3krmbf-gzip-1.9.drv
/gnu/store/f12932877gzp7dja2n4xawa4xc6mij2m-make-4.2.1.drv
/gnu/store/g3kz7b5ipp5075anfzvldqj21k93l7x1-findutils-4.6.0.drv
/gnu/store/gwrqz84fml3hbnrldh5fmrswai4h01y4-mescc-tools-0.5.2.drv
/gnu/store/hlal0q9xajp78llp4hd8y36nwlk0g99m-sed-4.5.drv
/gnu/store/ijs6qvdv82kd0wx78fzxgj8z4503ps67-gcc-cross-sans-libc-i686-unknown-linux-gnu-5.5.0.drv
/gnu/store/j5mbx938506x1hvz7cz0m28ld033y6da-texinfo-6.5.drv
/gnu/store/j93g2kba6v2fx2mxznva643rysxj6g1s-coreutils-8.30.drv
/gnu/store/jsxpryfsad91fgsq12413k83g5amdiha-module-import.drv
/gnu/store/kv4jyl04wpni464wqdpb1zbkxvxy9qfp-bzip2-1.0.6.drv
/gnu/store/kvvyidgf4maqgrw849fjpd1d6fc4raya-ld-wrapper-0.drv
/gnu/store/lgdpfzh8xpx4al7qpjijmz8gqvvp6hc7-gawk-4.2.1.drv
/gnu/store/liazh7rgnbrwjafr9n96vhqshsc349wf-guile-2.2.4.drv
/gnu/store/mbsz1vdqphi39irmf3cjkxwhl1rqqvlp-binutils-cross-i686-unknown-linux-gnu-2.31.1.drv
/gnu/store/mc4cf91hx15br69xirgmxf91wr370s69-perl-5.28.0.drv
/gnu/store/mvkapqsai9fmz8ap97vh9f918lwh201w-binutils-2.31.1.drv
/gnu/store/n5255d3wvs6fmpkf729ng4hm3wd2pgq3-libunistring-0.9.10.drv
/gnu/store/pc1sva58l7v0ba5bcyygbbyc8yn554xq-nyacc-0.86.0.drv
/gnu/store/qgipdiy5xdbgf6fmbkcx2iqxivymiv4p-gcc-5.5.0.drv
/gnu/store/sy64hwy2npm6fbpc8sya5j6wb4l6iyws-file-5.33.drv
/gnu/store/w91h9hskim0ah2s6i5rhsap8ypbpw1hr-glibc-utf8-locales-2.28.drv
/gnu/store/wmvasmfhjgxa34fsqh8j8lj3glz2bwcd-grep-3.1.drv
/gnu/store/xicdrjg067w985vr6b334fafsbdi6ayg-guile-2.2.4.drv
Building /gnu/store/iz3qnd398va3qhprnb60vxdb9ai45h08-mes-boot-0.18-0.08f04f5.drv - x86_64-linux
--8<---------------cut here---------------end--------------->8---
so the sha hashes may not hold up. I'll add another comment after this
and its i686-linux counterpart have finished...
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-bootstrap-Add-mes-stripped-mes-bootstrap-tarball.patch --]
[-- Type: text/x-patch, Size: 3566 bytes --]
From 47ff097d274d1f6eb1c386adb727106d76692c5a Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sat, 20 Oct 2018 08:59:19 +0200
Subject: [PATCH 1/3] bootstrap: Add %mes-stripped, %mes-bootstrap-tarball.
* gnu/packages/make-bootstrap.scm (%mes-stripped): New variable.
(%mes-bootstrap-tarball): New variable.
* gnu/packages/mes.scm: Oops, remove stray (gnu packages commencement) module
include.
---
gnu/packages/make-bootstrap.scm | 35 +++++++++++++++++++++++++++++++++
gnu/packages/mes.scm | 1 -
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 3553737f1..7bfba3c14 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -38,6 +38,7 @@
#:use-module (gnu packages libunistring)
#:use-module (gnu packages linux)
#:use-module (gnu packages hurd)
+ #:use-module (gnu packages mes)
#:use-module (gnu packages multiprecision)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
@@ -47,6 +48,7 @@
%glibc-bootstrap-tarball
%gcc-bootstrap-tarball
%guile-bootstrap-tarball
+ %mes-bootstrap-tarball
%bootstrap-tarballs
%guile-static-stripped))
@@ -533,6 +535,35 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
#t))))
(inputs `(("gcc" ,%gcc-static)))))
+(define %mes-stripped
+ ;; The subset of Mes files needed for bootstrap.
+ (package
+ (inherit mes)
+ (name "mes-stripped")
+ (build-system trivial-build-system)
+ (source #f)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (srfi srfi-1)
+ (srfi srfi-26)
+ (guix build utils))
+
+ (setvbuf (current-output-port) _IOLBF)
+ (let* ((out (assoc-ref %outputs "out"))
+ (libdir (string-append out "/lib"))
+ (mes (assoc-ref %build-inputs "mes")))
+
+ (copy-recursively (string-append mes "/lib") libdir)
+ (copy-recursively (string-append mes "/share/mes/lib") libdir)
+ (for-each remove-store-references
+ (remove (lambda (file) (or (string-suffix? ".h" file)
+ (string-suffix? ".c" file)))
+ (find-files out ".*")))
+ #t))))
+ (inputs `(("mes" ,mes)))))
+
(define %guile-static
;; A statically-linked Guile that is relocatable--i.e., it can search
;; .scm and .go files relative to its installation directory, rather
@@ -700,6 +731,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; A tarball with the statically-linked, relocatable Guile.
(tarball-package %guile-static-stripped))
+(define %mes-bootstrap-tarball
+ ;; A tarball with Mes ASCII Seed and binary Mes C Library.
+ (tarball-package %mes-stripped))
+
(define %bootstrap-tarballs
;; A single derivation containing all the bootstrap tarballs, for
;; convenience.
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 4f98cd24f..c4cb118e3 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -21,7 +21,6 @@
(define-module (gnu packages mes)
#:use-module (gnu packages)
#:use-module (gnu packages base)
- #:use-module (gnu packages commencement)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages gcc)
#:use-module (gnu packages graphviz)
--
2.18.0
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-bootstrap-FTBFS-hack-for-icu4c-python-more-itertools.patch --]
[-- Type: text/x-patch, Size: 2227 bytes --]
From dea5dfa033624203cc8292466246745340f7787b Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sat, 20 Oct 2018 09:09:22 +0200
Subject: [PATCH 2/3] bootstrap: FTBFS hack for icu4c, python-more-itertools,
swig.
* gnu/packages/icu4c.scm (icu4c)[i686-linux]: Disable tests.
* gnu/packages/python.scm (python-more-itertools)[i686-linux]: Likewise.
* gnu/packages/swig.scm (swig)[i686-linux]: Likewise.
---
gnu/packages/icu4c.scm | 3 ++-
gnu/packages/python.scm | 2 ++
gnu/packages/swig.scm | 3 ++-
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
index cbba9aa42..ed243a510 100644
--- a/gnu/packages/icu4c.scm
+++ b/gnu/packages/icu4c.scm
@@ -47,7 +47,8 @@
(inputs
`(("perl" ,perl)))
(arguments
- `(#:configure-flags
+ `(#:tests? ,(not (equal? (%current-system) "i686-linux")) ; %bootstrap-mes FTBFS hack
+ #:configure-flags
'("--enable-rpath"
,@(if (let ((s (or (%current-target-system)
(%current-system))))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e4926ce30..6135e6e92 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -13517,6 +13517,8 @@ file system events on Linux.")
(base32
"17h3na0rdh8xq30w4b9pizgkdxmm51896bxw600x84jflg9vaxn4"))))
(build-system python-build-system)
+ (arguments
+ `(#:tests? ,(not (equal? (%current-system) "i686-linux")))) ; %bootstrap-mes FTBFS hack
(propagated-inputs
`(("python-six" ,python-six-bootstrap)))
(home-page "https://github.com/erikrose/more-itertools")
diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm
index b931db412..2eb3cdb54 100644
--- a/gnu/packages/swig.scm
+++ b/gnu/packages/swig.scm
@@ -42,7 +42,8 @@
"0kf99ygrjs5616gsqhz1l7bib3a12izmxi7g48bwblbymr3z9ybw"))))
(build-system gnu-build-system)
(arguments
- '(#:phases
+ `(#:tests? ,(not (equal? (%current-system) "i686-linux")) ; %bootstrap-mes FTBFS hack
+ #:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-env
;; Required since Perl 5.26.0's removal of the current
--
2.18.0
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-bootstrap-Add-bootstrap-mes.patch --]
[-- Type: text/x-patch, Size: 3885 bytes --]
From 04c237218d10756582e6dce5763eaca9704d13cf Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sat, 20 Oct 2018 09:02:39 +0200
Subject: [PATCH 3/3] bootstrap: Add %bootstrap-mes.
This include bootstrap seeds
mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz
14sbcm79ml4rgygxvx1135827g3ggfx1c1vchk77z26yibbdw9nh
mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz
1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy
built with the previous commit
dea5dfa03 bootstrap: FTBFS hack for icu4c, python-more-itertools, swig.
Todo: host these on ftp.gnu.org/pub/guix/...
* gnu/packages/bootstrap.scm (%bootstrap-mes): New variable.
---
gnu/packages/bootstrap.scm | 60 ++++++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 82d229569..f43e405f8 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -49,6 +49,7 @@
%bootstrap-gcc
%bootstrap-glibc
%bootstrap-inputs
+ %bootstrap-mes
%mescc-tools-seed
%mes-seed
%srfi-43
@@ -610,6 +611,65 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
(home-page #f)
(license gpl3+)))
+(define %bootstrap-mes
+ ;; The initial Mes. Uses binaries from a tarball typically built by
+ ;; %MES-BOOTSTRAP-TARBALL.
+ (package
+ (name "bootstrap-mes")
+ (version "0")
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ `(#:guile ,%bootstrap-guile
+ #:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils)
+ (ice-9 popen))
+ (let ((out (assoc-ref %outputs "out"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (tarball (assoc-ref %build-inputs "tarball")))
+
+ (mkdir out)
+ (copy-file tarball "binaries.tar.xz")
+ (invoke xz "-d" "binaries.tar.xz")
+ (let ((builddir (getcwd))
+ (bindir (string-append out "/bin")))
+ (with-directory-excursion out
+ (invoke tar "xvf"
+ (string-append builddir "/binaries.tar"))))))))
+ (inputs
+ `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
+ ("xz" ,(search-bootstrap-binary "xz" (%current-system)))
+ ("tarball" ,(bootstrap-origin
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://lilypond.org/janneke/mes/"
+ (match (%current-system)
+ ("x86_64-linux" "mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz")
+ ("i686-linux" "mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz"))))
+ (sha256
+ (match (%current-system)
+ ("x86_64-linux"
+ (base32
+ "14sbcm79ml4rgygxvx1135827g3ggfx1c1vchk77z26yibbdw9nh"))
+ ("i686-linux"
+ (base32
+ "1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy")))))))))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "C_INCLUDE_PATH")
+ (files '("share/mes/include")))
+ (search-path-specification
+ (variable "LIBRARY_PATH")
+ (files '("share/mes/lib")))))
+ (synopsis "Bootstrap binaries of Mes")
+ (description synopsis)
+ (home-page #f)
+ (license gpl3+)))
+
(define %mescc-tools-seed ; todo: add tarballs to alpha.gnu.org/pub/mes/bootstrap/
(let ((commit "dc4e20e74924a5c80a2b7a77b4d7b927234fa71c"))
(origin
--
2.18.0
[-- Attachment #5: Type: text/plain, Size: 806 bytes --]
> Besides we can consider hosting these binaries on ftp.gnu.org, under
> /mes or /guix.
Yes, this series was a prepeparation for that. I didn't want to store
the previous, manually generated seeds there.
it would be nice to store them under /guix and I would prefer that I
didn't build them -- or at least that you (someone) reproduced them.
>> --- a/gnu/packages/mes.scm
>> +++ b/gnu/packages/mes.scm
>> @@ -21,7 +21,6 @@
>> (define-module (gnu packages mes)
>> #:use-module (gnu packages)
>> #:use-module (gnu packages base)
>> - #:use-module (gnu packages commencement)
>
> Indeed ‘commencement’ should never be used by other package modules, for
> reasons having to do with circularity.
>
> Otherwise LGTM!
Yay! Thanks for your review.
Greetings,
janneke
^ permalink raw reply related [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 4/6] gnu: mescc-tools: Update to 0.5.2-0.bb062b0d.
2018-10-19 21:32 ` Ludovic Courtès
@ 2018-10-20 7:41 ` Jan Nieuwenhuizen
0 siblings, 0 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-20 7:41 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33038
Ludovic Courtès writes:
> Jan Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * gnu/packages/mes.scm (mescc-tools): Update to 0.5.2-0.bb062b0d.
>> mescc
>> * gnu/packages/commencement.scm (mescc-tools-boot): Stay at 0.5.2
>
> I guess the choice of commit relates to that of Mes?
Yes, also build adaptations for using the new %bootstrap-mes.
mescc-tools-boot will probably through a number of build updates.
The first bootstrap build of mescc-tools-boot used %mes-seed, now
replaced by %bootstrap-mes. We are working to bootstrap it using
M2-Planet, but currently it still needs manually built
%mescc-tools-seeds and also that hasn't been packaged yet.
> Anyway, LGTM!
Thanks! I'll update core-updates-next with all these together when
we're ready to close #33038.
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 6/6] doc: Update Preparing to Use the Bootstrap Binaries.
2018-10-19 21:37 ` Ludovic Courtès
@ 2018-10-20 8:23 ` Jan Nieuwenhuizen
0 siblings, 0 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-20 8:23 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33038
Ludovic Courtès writes:
> Jan Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * doc/guix.texi (Preparing to Use the Bootstrap Binaries): Mention
>> bootstrap-mes alongside bootstrap-gcc.
>> (Reducing the Set of Bootstrap Binaries): Mention the Reduced Binary Seed
>> bootstrap, MesCC-Tools and Mes.
>
> LGTM!
>
>> +Our first major achievement is the replacement of of GCC, the GNU C Library
>> +and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes
>> +(a Scheme interpreter and a C99 compiler in Scheme). Neither MesCC-Tools nor
>> +Mes can be fully bootstrapped yet and thus we inject them as binary seeds. We
>> +call this the Reduced Binary Seed bootstrap, as it has halved the size of our
>> +bootstrap binaries! Also, it has eliminated the C compiler binary; i686-linux
>> +and x86_64-linux GuixSD are now bootstrapped without any binary C compiler.
>
> s/GuixSD/Guix packages/
> Perhaps add an @pxref for Mes?
Ah, sure. Changed to
+Our first major achievement is the replacement of of GCC, the GNU C Library
+and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes
+(@pxref{Top, GNU Mes Reference Manual,, mes, GNU Mes}, a Scheme interpreter
+and C compiler in Scheme). Neither MesCC-Tools nor Mes can be fully
+bootstrapped yet and thus we inject them as binary seeds. We call this the
+Reduced Binary Seed bootstrap, as it has halved the size of our bootstrap
+binaries! Also, it has eliminated the C compiler binary; i686-linux and
+x86_64-linux Guix packages are now bootstrapped without any binary C compiler.
Updated on gitlab/core-updates-next, "waiting" for the builds to say OK :-)
>> +Work is ongoing to make MesCC-Tools and Mes fully bootstrappable and we are
>> +also looking at any other bootstrap binaries. Your help is welcome!
>
> I still can’t believe this is a reality, awesome!! :-)
Thank you, yes -- what a long road from the initial Mes announcement! Thanks
to all the help from #bootstrappable and from yourself.
And this is only the beginning... :-)
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-20 7:35 ` Jan Nieuwenhuizen
@ 2018-10-20 18:31 ` Jan Nieuwenhuizen
2018-10-21 20:37 ` Marius Bakke
2018-10-21 21:09 ` Ludovic Courtès
2 siblings, 0 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-20 18:31 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33038
Jan Nieuwenhuizen writes:
> (attached, and also on my gitlab core-updates-next. Now for a
> rebuild...
>
> The following derivations will be built:
> /gnu/store/bphs45cqip5xh574azfkqn4lb0g53zqa-mes-0.18-0.08f04f5.drv
> /gnu/store/v8d7ygp7pa7ry2cf1yxjhca8inyjy8b6-libffi-3.2.1.drv
> /gnu/store/xbiq4rwjlbq42ycnk3g69fya8xvnl9ch-gzip-1.9.drv
[...]
> so the sha hashes may not hold up. I'll add another comment after this
> and its i686-linux counterpart have finished...
the i686-linux hash is identical, the x86_64-linux hash changed, I now
have
mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz
1lq4w6s5nqfxsffk0smg7cyrqnjls70kwwllbv8gzsjqjx4q3f2b
mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz
1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy
I have updated the x86_64 tarball on lilypond.org and my
gitlab core-updates-next branch.
I was mis-remembering earlier: Gábor and you managed to reproduce
`hello', you both never re-built any bootstrap binaries... So we
may have a reproducibility issue here, don't really know...
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-20 7:35 ` Jan Nieuwenhuizen
2018-10-20 18:31 ` Jan Nieuwenhuizen
@ 2018-10-21 20:37 ` Marius Bakke
2018-10-21 21:04 ` Ludovic Courtès
2018-10-21 21:09 ` Ludovic Courtès
2 siblings, 1 reply; 49+ messages in thread
From: Marius Bakke @ 2018-10-21 20:37 UTC (permalink / raw)
To: Jan Nieuwenhuizen, Ludovic Courtès; +Cc: 33038
[-- Attachment #1: Type: text/plain, Size: 675 bytes --]
Jan Nieuwenhuizen <janneke@gnu.org> writes:
>> It would be nice to maybe make this a separate commit (following the
>> make-bootstrap.scm changes) so that you can state in the commit log
>> which commit was used to build this binary.
>
> Ah yes, that's nice. Hmm, there's a slight complication because for the
> i686-linux version I cheated; icu4c, python-more-itertools and swig fail
> to build on core-updates-next. I added a hack and reverted that...
> which is probably less than great. So I cleaned it up a bit and just
> added it.
FYI the issues mentioned here have been fixed in the 'core-updates'
branch. I suppose you can still rebase on it, or just merge it.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-21 20:37 ` Marius Bakke
@ 2018-10-21 21:04 ` Ludovic Courtès
2018-10-21 21:28 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-10-21 21:04 UTC (permalink / raw)
To: Marius Bakke; +Cc: 33038
Marius Bakke <mbakke@fastmail.com> skribis:
> Jan Nieuwenhuizen <janneke@gnu.org> writes:
>
>>> It would be nice to maybe make this a separate commit (following the
>>> make-bootstrap.scm changes) so that you can state in the commit log
>>> which commit was used to build this binary.
>>
>> Ah yes, that's nice. Hmm, there's a slight complication because for the
>> i686-linux version I cheated; icu4c, python-more-itertools and swig fail
>> to build on core-updates-next. I added a hack and reverted that...
>> which is probably less than great. So I cleaned it up a bit and just
>> added it.
>
> FYI the issues mentioned here have been fixed in the 'core-updates'
> branch. I suppose you can still rebase on it, or just merge it.
Merging core-updates into core-updates-next sounds like a good idea.
Thanks for letting us know, Marius!
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-20 7:35 ` Jan Nieuwenhuizen
2018-10-20 18:31 ` Jan Nieuwenhuizen
2018-10-21 20:37 ` Marius Bakke
@ 2018-10-21 21:09 ` Ludovic Courtès
2018-10-21 21:32 ` Jan Nieuwenhuizen
2 siblings, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-10-21 21:09 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: 33038
Hi!
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> Ludovic Courtès writes:
[...]
>> Please move the ‘use-modules’ form to the top level (non-top-level
>> ‘use-modules’ works pretty much by chance).
>
> Sure, do you mean like this?
>
> $ git diff -w
> diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
> index f33fc061e..f43e405f8 100644
> --- a/gnu/packages/bootstrap.scm
> +++ b/gnu/packages/bootstrap.scm
> @@ -623,12 +623,13 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
> `(#:guile ,%bootstrap-guile
> #:modules ((guix build utils))
> #:builder
> + (begin
> + (use-modules (guix build utils)
> + (ice-9 popen))
> (let ((out (assoc-ref %outputs "out"))
> (tar (assoc-ref %build-inputs "tar"))
> (xz (assoc-ref %build-inputs "xz"))
> (tarball (assoc-ref %build-inputs "tarball")))
> - (use-modules (guix build utils)
> - (ice-9 popen))
>
> (mkdir out)
> (copy-file tarball "binaries.tar.xz")
Exactly.
> I copied this from %bootstrap-gcc, do we want to to change this in all
> bootstrap packages too?
Yes, we should do that while we’re at it.
> Ah yes, that's nice. Hmm, there's a slight complication because for the
> i686-linux version I cheated; icu4c, python-more-itertools and swig fail
> to build on core-updates-next. I added a hack and reverted that...
> which is probably less than great. So I cleaned it up a bit and just
> added it.
>
> So, now we three commits instead of this single one
>
> 0001-bootstrap-Add-mes-stripped-mes-bootstrap-tarball.patch
> 0002-bootstrap-FTBFS-hack-for-icu4c-python-more-itertools.patch
> 0003-bootstrap-Add-bootstrap-mes.patch
>
>
> (attached, and also on my gitlab core-updates-next. Now for a
> rebuild...
Heh. :-)
Well there’s the option of merging core-updates as Marius suggested,
though that will mean yet another (partial) rebuild, so you’d have to be
patient. WDYT?
> From 04c237218d10756582e6dce5763eaca9704d13cf Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Sat, 20 Oct 2018 09:02:39 +0200
> Subject: [PATCH 3/3] bootstrap: Add %bootstrap-mes.
>
> This include bootstrap seeds
>
> mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz
> 14sbcm79ml4rgygxvx1135827g3ggfx1c1vchk77z26yibbdw9nh
>
> mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz
> 1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy
I think this info is not necessary here since those hashes appear in the
file.
> built with the previous commit
>
> dea5dfa03 bootstrap: FTBFS hack for icu4c, python-more-itertools, swig.
In the final commit please write the full rather than the abbreviated
commit hash.
Anyway LGTM modulo maybe one rebuild and commit log tweak.
Thank you!
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-21 21:04 ` Ludovic Courtès
@ 2018-10-21 21:28 ` Jan Nieuwenhuizen
0 siblings, 0 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-21 21:28 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33038
Ludovic Courtès writes:
> Marius Bakke <mbakke@fastmail.com> skribis:
>
>> Jan Nieuwenhuizen <janneke@gnu.org> writes:
>>
>>>> It would be nice to maybe make this a separate commit (following the
>>>> make-bootstrap.scm changes) so that you can state in the commit log
>>>> which commit was used to build this binary.
>>>
>>> Ah yes, that's nice. Hmm, there's a slight complication because for the
>>> i686-linux version I cheated; icu4c, python-more-itertools and swig fail
>>> to build on core-updates-next. I added a hack and reverted that...
>>> which is probably less than great. So I cleaned it up a bit and just
>>> added it.
>>
>> FYI the issues mentioned here have been fixed in the 'core-updates'
>> branch. I suppose you can still rebase on it, or just merge it.
>
> Merging core-updates into core-updates-next sounds like a good idea.
>
> Thanks for letting us know, Marius!
Great, merged and rebased core-updates-next on my gitlab. More admin
work todo, but that's alright.
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-21 21:09 ` Ludovic Courtès
@ 2018-10-21 21:32 ` Jan Nieuwenhuizen
2018-10-23 21:00 ` bug#33038: " Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-21 21:32 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33038
Ludovic Courtès writes:
>> + (begin
>> + (use-modules (guix build utils)
>> + (ice-9 popen))
>
> Exactly.
Ok, good!
>> I copied this from %bootstrap-gcc, do we want to to change this in all
>> bootstrap packages too?
>
> Yes, we should do that while we’re at it.
I'll add a commit for all other packages, need to do a rebuild anyway :-)
>> (attached, and also on my gitlab core-updates-next. Now for a
>> rebuild...
>
> Heh. :-)
>
> Well there’s the option of merging core-updates as Marius suggested,
> though that will mean yet another (partial) rebuild, so you’d have to be
> patient. WDYT?
Yes, just did that -- happy with Marius' info and suggestion.
>> From 04c237218d10756582e6dce5763eaca9704d13cf Mon Sep 17 00:00:00 2001
>> From: Jan Nieuwenhuizen <janneke@gnu.org>
>> Date: Sat, 20 Oct 2018 09:02:39 +0200
>> Subject: [PATCH 3/3] bootstrap: Add %bootstrap-mes.
>>
>> This include bootstrap seeds
>>
>> mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz
>> 14sbcm79ml4rgygxvx1135827g3ggfx1c1vchk77z26yibbdw9nh
>>
>> mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz
>> 1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy
>
> I think this info is not necessary here since those hashes appear in the
> file.
Ok.
>> built with the previous commit
>>
>> dea5dfa03 bootstrap: FTBFS hack for icu4c, python-more-itertools, swig.
>
> In the final commit please write the full rather than the abbreviated
> commit hash.
Ok.
> Anyway LGTM modulo maybe one rebuild and commit log tweak.
Great, once everything builds I'll update core-updates-next on savannah,
ping this bug and close it. Otherwise...oh well.
Thanks!
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* bug#33038: [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-21 21:32 ` Jan Nieuwenhuizen
@ 2018-10-23 21:00 ` Jan Nieuwenhuizen
2018-10-24 16:18 ` [bug#33038] " Marius Bakke
2018-11-15 9:06 ` Preparing the reduced bootstrap tarballs Ludovic Courtès
0 siblings, 2 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-23 21:00 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 33038-done
Jan Nieuwenhuizen writes:
>> Anyway LGTM modulo maybe one rebuild and commit log tweak.
>
> Great, once everything builds I'll update core-updates-next on savannah,
> ping this bug and close it. Otherwise...oh well.
Did those, pushed to core-updates-next as
d0bb7ed61ed9e356c53de1a8e9bd6c2ec030ffb6
doc: Update Preparing to Use the Bootstrap Binaries.
Marius has a couple of patches on his wip-gcc7 branch that we may
already want to include in core-updates-next too, but I'll leave that to
him.
--8<---------------cut here---------------start------------->8---
bc05a8a9d gnu: Remove duplicate linux-libre-headers package from bootstrap inputs.
c697fdfc1 gnu: gcc-boot0: Improve gcc-wrapper workarounds.
7c1ddb3a4 gnu: libstdc++-boot0: Improve gcc-wrapper workaround.
60111ea82 gnu: Remove gcc-for-libstdc++.
--8<---------------cut here---------------end--------------->8---
I think that I'm "done" here, there's the `put new bootstrap binaries on
ftp.gnu.org/pub/guix/...', are you taking care of that?
Thanks!
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-23 21:00 ` bug#33038: " Jan Nieuwenhuizen
@ 2018-10-24 16:18 ` Marius Bakke
2018-10-24 16:58 ` Jan Nieuwenhuizen
2018-11-15 9:06 ` Preparing the reduced bootstrap tarballs Ludovic Courtès
1 sibling, 1 reply; 49+ messages in thread
From: Marius Bakke @ 2018-10-24 16:18 UTC (permalink / raw)
To: Jan Nieuwenhuizen, Ludovic Courtès; +Cc: 33038-done
[-- Attachment #1: Type: text/plain, Size: 2451 bytes --]
Hello!
Jan Nieuwenhuizen <janneke@gnu.org> writes:
> Jan Nieuwenhuizen writes:
>
>>> Anyway LGTM modulo maybe one rebuild and commit log tweak.
>>
>> Great, once everything builds I'll update core-updates-next on savannah,
>> ping this bug and close it. Otherwise...oh well.
>
> Did those, pushed to core-updates-next as
>
> d0bb7ed61ed9e356c53de1a8e9bd6c2ec030ffb6
> doc: Update Preparing to Use the Bootstrap Binaries.
>
> Marius has a couple of patches on his wip-gcc7 branch that we may
> already want to include in core-updates-next too, but I'll leave that to
> him.
>
> --8<---------------cut here---------------start------------->8---
> bc05a8a9d gnu: Remove duplicate linux-libre-headers package from bootstrap inputs.
> c697fdfc1 gnu: gcc-boot0: Improve gcc-wrapper workarounds.
> 7c1ddb3a4 gnu: libstdc++-boot0: Improve gcc-wrapper workaround.
> 60111ea82 gnu: Remove gcc-for-libstdc++.
> --8<---------------cut here---------------end--------------->8---
These fixes are purely cosmetic, but feel free to include them. I hope
to merge the full branch before core-updates-next is started in a month
or two, so they'll get there eventually.
> I think that I'm "done" here, there's the `put new bootstrap binaries on
> ftp.gnu.org/pub/guix/...', are you taking care of that?
Is it possible to generate these somehow? The mirror at lilypond.org is
serving me the wrong tarball:
building /gnu/store/r9589sgf0d3hxcxg7vi3i5apnx3wcx76-mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz.drv...
Starting download of /gnu/store/z1yrpzja9sivpi138xyjwxax575d7x4j-mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz
From http://lilypond.org/janneke/mes/mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz...
downloading from http://lilypond.org/janneke/mes/mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz...
mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz 550KiB 739KiB/s 00:01 [##################] 100.0%
sha256 hash mismatch for /gnu/store/z1yrpzja9sivpi138xyjwxax575d7x4j-mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz:
expected hash: 1yhxqf1sm67gwjbkkc26m4lcscvpjfmi71bzy8rhysal4lcj1vc8
actual hash: 1lq4w6s5nqfxsffk0smg7cyrqnjls70kwwllbv8gzsjqjx4q3f2b
hash mismatch for store item '/gnu/store/z1yrpzja9sivpi138xyjwxax575d7x4j-mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz'
build of /gnu/store/r9589sgf0d3hxcxg7vi3i5apnx3wcx76-mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz.drv failed
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
^ permalink raw reply [flat|nested] 49+ messages in thread
* [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes.
2018-10-24 16:18 ` [bug#33038] " Marius Bakke
@ 2018-10-24 16:58 ` Jan Nieuwenhuizen
0 siblings, 0 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-10-24 16:58 UTC (permalink / raw)
To: Marius Bakke; +Cc: 33038-done
Marius Bakke writes:
Hi!
>> Marius has a couple of patches on his wip-gcc7 branch that we may
>> already want to include in core-updates-next too, but I'll leave that to
>> him.
>>
>> --8<---------------cut here---------------start------------->8---
>> bc05a8a9d gnu: Remove duplicate linux-libre-headers package from bootstrap inputs.
>> c697fdfc1 gnu: gcc-boot0: Improve gcc-wrapper workarounds.
>> 7c1ddb3a4 gnu: libstdc++-boot0: Improve gcc-wrapper workaround.
>> 60111ea82 gnu: Remove gcc-for-libstdc++.
>> --8<---------------cut here---------------end--------------->8---
>
> These fixes are purely cosmetic, but feel free to include them. I hope
> to merge the full branch before core-updates-next is started in a month
> or two, so they'll get there eventually.
Ok. Then I'd suggest we take them in whenever it's opportune to do so.
Possibly with a new seed generation, putting binaries on gnu.org.
>> I think that I'm "done" here, there's the `put new bootstrap binaries on
>> ftp.gnu.org/pub/guix/...', are you taking care of that?
>
> Is it possible to generate these somehow? The mirror at lilypond.org is
> serving me the wrong tarball:
Ouch; yes. I get the same, wrong hash on the lilypond.org download.
Luckily the hashes that I committed are correct. I used `guix download'
of the build and didn't always update lilypond.org (I failed to do so
this last time...oops).
--8<---------------cut here---------------start------------->8---
18:46:50 janneke@dundal:~/src/guix-wip
$ git checkout -B wip-seed 668ffe1e4
Reset branch 'wip-seed'
18:46:53 janneke@dundal:~/src/guix-wip
$ make
....
18:46:58 janneke@dundal:~/src/guix-wip
$ ./pre-inst-env guix build mes-stripped-tarball
/gnu/store/nyajrfqv40w3xr21pwpdr6plz2l0xzz6-mes-stripped-tarball-0.18-0.08f04f5
18:47:05 janneke@dundal:~/src/guix-wip
$ guix hash /gnu/store/nyajrfqv40w3xr21pwpdr6plz2l0xzz6-mes-stripped-tarball-0.18-0.08f04f5/mes-stripped-0.18-0.08f04f5-x86_64-linux.tar.xz
1yhxqf1sm67gwjbkkc26m4lcscvpjfmi71bzy8rhysal4lcj1vc8
$ guix hash /gnu/store/nyajrfqv40w3xr21pwpdr6plz2l0xzz6-mes-stripped-tarball-0.18-0.08f04f5
18:49:08 janneke@dundal:~/src/guix-wip
$ ./pre-inst-env guix build --system=i686-linux mes-stripped-tarball --substitute-urls="http://192.168.32.125:8181 http://192.168.32.123:8181 http://192.168.32.121:8181 http://192.168.32.122:8181 https://berlin.guixsd.org"
/gnu/store/s0dsrq9mjan4qkyl8nfmbdha0p9mscyc-mes-stripped-tarball-0.18-0.08f04f5
18:49:21 janneke@dundal:~/src/guix-wip
$ guix hash /gnu/store/s0dsrq9mjan4qkyl8nfmbdha0p9mscyc-mes-stripped-tarball-0.18-0.08f04f5/mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz
1p116ya9n52852bryh34n7db4mhvi98qifmmwygl7nbyc4dz92jy
--8<---------------cut here---------------end--------------->8---
I have updated the lilypond.org dowload...sorry, and thanks for your
report!
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* Preparing the reduced bootstrap tarballs
2018-10-23 21:00 ` bug#33038: " Jan Nieuwenhuizen
2018-10-24 16:18 ` [bug#33038] " Marius Bakke
@ 2018-11-15 9:06 ` Ludovic Courtès
2018-11-15 15:44 ` Jan Nieuwenhuizen
1 sibling, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-11-15 9:06 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: guix-devel
Hello!
(This is a followup to <https://bugs.gnu.org/33038>.)
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> Did those, pushed to core-updates-next as
>
> d0bb7ed61ed9e356c53de1a8e9bd6c2ec030ffb6
> doc: Update Preparing to Use the Bootstrap Binaries.
[...]
> I think that I'm "done" here, there's the `put new bootstrap binaries on
> ftp.gnu.org/pub/guix/...', are you taking care of that?
I (finally!) run “guix build bootstrap-tarballs” on ‘core-updates-next’,
but that was a bit silly of me since that built the x86_64-linux
tarballs—i.e., not the “reduced seed.”
So I was about to re-run it with “-s i686-linux”, but I noticed the
following issue in (gnu packages make-bootstrap):
--8<---------------cut here---------------start------------->8---
(define %bootstrap-tarballs
;; A single derivation containing all the bootstrap tarballs, for
;; convenience.
(package
[...]
(inputs `(("guile-tarball" ,%guile-bootstrap-tarball)
,@(match (%current-system)
("i686-linux" `(("mescc-tools-seed" ,(@ (gnu packages bootstrap) %mescc-tools-seed))
("mes-seed" ,(@ (gnu packages bootstrap) %mes-seed))
("srfi-43" ,(@ (gnu packages bootstrap) %srfi-43))
("tinycc-seed" ,(@ (gnu packages bootstrap) %tinycc-seed))))
--8<---------------cut here---------------end--------------->8---
This does not actually build the bootstrap tarballs; instead it returns
the pre-built seeds (also the ‘%tinycc-seed’ variable doesn’t exist.)
What we would need here is something to build the things listed in
‘%bootstrap-inputs’, namely:
‘linux-libre-headers-stripped-4.14.26-i686-linux.tar.xz’ (easy :-)),
‘mescc-tools-seed-XYZ.tar.gz’, and
‘mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz’ (do we really need an
x86_64 version of this Mes?).
Does that make sense?
Sorry for the delay, and apologies if I overlooked something!
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-15 9:06 ` Preparing the reduced bootstrap tarballs Ludovic Courtès
@ 2018-11-15 15:44 ` Jan Nieuwenhuizen
2018-11-16 18:22 ` Ludovic Courtès
0 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-11-15 15:44 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
Ludovic Courtès writes:
Hi!
> (This is a followup to <https://bugs.gnu.org/33038>.)
> I (finally!) run “guix build bootstrap-tarballs” on ‘core-updates-next’,
> but that was a bit silly of me since that built the x86_64-linux
> tarballs—i.e., not the “reduced seed.”
>
> So I was about to re-run it with “-s i686-linux”, but I noticed the
> following issue in (gnu packages make-bootstrap):
>
> (define %bootstrap-tarballs
> ;; A single derivation containing all the bootstrap tarballs, for
> ;; convenience.
> (package
Ah right. I saw that several times but did not use it. I think because
initially it was of no use. It would be nice if this built everything
we need, I agree :-)
> [...]
>
> (inputs `(("guile-tarball" ,%guile-bootstrap-tarball)
> ,@(match (%current-system)
> ("i686-linux" `(("mescc-tools-seed" ,(@ (gnu packages bootstrap) %mescc-tools-seed))
> ("mes-seed" ,(@ (gnu packages bootstrap) %mes-seed))
> ("srfi-43" ,(@ (gnu packages bootstrap) %srfi-43))
> ("tinycc-seed" ,(@ (gnu packages bootstrap) %tinycc-seed))))
>
> This does not actually build the bootstrap tarballs; instead it returns
> the pre-built seeds (also the ‘%tinycc-seed’ variable doesn’t exist.)
Indeed. "mes-seed" and "tinycc-seed" are remnants of the past; the only
things we need are
> What we would need here is something to build the things listed in
> ‘%bootstrap-inputs’, namely:
> ‘linux-libre-headers-stripped-4.14.26-i686-linux.tar.xz’ (easy :-)),
> ‘mescc-tools-seed-XYZ.tar.gz’, and
> ‘mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz’
So if you like, please make that change. There is only one little
thing: I have no (scripted) recipe to create mescc-tools-seed-XYZ. But
wait: I have a great excuse for that...I was too lazy or too sloppy.
The thing is, I used to build mescc-tools-seed, mes-seed and tinycc-seed
manually from the mes+mescc+tinycc source trees. Jeremiah Orians is
working to remove any need for mescc-tools-seed (esp. the forward
dependency on Mes) but I don't think we're there yet.
Anyway, I think we/I will have to put some work into scripting
mescc-tools-seed or otherwise changing the mescc-tools-boot build.
WDYT?
> (do we really need an x86_64 version of this Mes?).
No, I don't think so. I added it esp. to get a preview and enable
future development of pure x86_64 bootstrap; but dependency-wise we
should be able to drop it!
> Does that make sense?
Yes!
> Sorry for the delay, and apologies if I overlooked something!
Thank you for looking into and pointing out!
janneke
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
@ 2018-11-15 20:39 Jeremiah
2018-11-16 18:27 ` Ludovic Courtès
0 siblings, 1 reply; 49+ messages in thread
From: Jeremiah @ 2018-11-15 20:39 UTC (permalink / raw)
To: guix-devel
> Indeed. "mes-seed" and "tinycc-seed" are remnants of the past; the only
> things we need are
>
>> What we would need here is something to build the things listed in
>> ‘%bootstrap-inputs’, namely:
>> ‘linux-libre-headers-stripped-4.14.26-i686-linux.tar.xz’ (easy :-)),
>> ‘mescc-tools-seed-XYZ.tar.gz’, and
>> ‘mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz’
That is correct (With mescc-tools-seed adding steps and removing
binaries over time)
> So if you like, please make that change. There is only one little
> thing: I have no (scripted) recipe to create mescc-tools-seed-XYZ. But
> wait: I have a great excuse for that...I was too lazy or too sloppy.
I do, in mescc-tools-seed; the script bootstrap.sh when run with the
option "sin" will build the mescc-tools-seed binaries using mescc-tools.
The .M1 files are always generated by cc_x86.s using the C source files.
> The thing is, I used to build mescc-tools-seed, mes-seed and tinycc-seed
> manually from the mes+mescc+tinycc source trees.
I've been building them from the stage0 bootstrap tree (which as you can
see is rather trivial:
https://github.com/oriansj/talk-notes/blob/master/Current%20bootstrap%20map.dot
)
> Jeremiah Orians is
> working to remove any need for mescc-tools-seed (esp. the forward
> dependency on Mes) but I don't think we're there yet.
We have eliminated the forward dependency on Mes for the creation of the
mescc-tools-seed already
> Anyway, I think we/I will have to put some work into scripting
> mescc-tools-seed or otherwise changing the mescc-tools-boot build.
Already done in bash and kaem but not in guix yet (Should be trivial)
> WDYT?
I think we will end up having several versions of mescc-tools-seed; as
each architecture guix supports will end up needing a variant if we plan
on keeping them small. (I also have no idea how to make a multi-arch fat
elf binary)
I am also curious if there is any demand for the stripped versions of
mescc-tools-seed as those binaries are nearly half the size.
>> (do we really need an x86_64 version of this Mes?).
> No, I don't think so. I added it esp. to get a preview and enable
> future development of pure x86_64 bootstrap; but dependency-wise we
> should be able to drop it!
also, AMD64 does support i386 binaries without issue
- Jeremiah
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-15 15:44 ` Jan Nieuwenhuizen
@ 2018-11-16 18:22 ` Ludovic Courtès
2018-11-16 20:52 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-11-16 18:22 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: guix-devel
Hello!
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
> Ludovic Courtès writes:
>
> Hi!
>
>> (This is a followup to <https://bugs.gnu.org/33038>.)
>
>> I (finally!) run “guix build bootstrap-tarballs” on ‘core-updates-next’,
>> but that was a bit silly of me since that built the x86_64-linux
>> tarballs—i.e., not the “reduced seed.”
>>
>> So I was about to re-run it with “-s i686-linux”, but I noticed the
>> following issue in (gnu packages make-bootstrap):
>>
>> (define %bootstrap-tarballs
>> ;; A single derivation containing all the bootstrap tarballs, for
>> ;; convenience.
>> (package
>
> Ah right. I saw that several times but did not use it. I think because
> initially it was of no use. It would be nice if this built everything
> we need, I agree :-)
Heheh. :-) It’s what the “Building the Bootstrap Binaries” section
describes.
> Indeed. "mes-seed" and "tinycc-seed" are remnants of the past; the only
> things we need are
OK.
>> What we would need here is something to build the things listed in
>> ‘%bootstrap-inputs’, namely:
>> ‘linux-libre-headers-stripped-4.14.26-i686-linux.tar.xz’ (easy :-)),
>> ‘mescc-tools-seed-XYZ.tar.gz’, and
>> ‘mes-stripped-0.18-0.08f04f5-i686-linux.tar.xz’
>
> So if you like, please make that change. There is only one little
> thing: I have no (scripted) recipe to create mescc-tools-seed-XYZ. But
> wait: I have a great excuse for that...I was too lazy or too sloppy.
>
> The thing is, I used to build mescc-tools-seed, mes-seed and tinycc-seed
> manually from the mes+mescc+tinycc source trees. Jeremiah Orians is
> working to remove any need for mescc-tools-seed (esp. the forward
> dependency on Mes) but I don't think we're there yet.
>
> Anyway, I think we/I will have to put some work into scripting
> mescc-tools-seed or otherwise changing the mescc-tools-boot build.
> WDYT?
I’m confused: how did you build the seeds that (gnu packages bootstrap)
refers to in ‘core-updates-next’?
The goal is for the seeds to be built through Guix so we have a
transparent and documented way to reproduce/verify them.
I could propose a patch to do that, though from what you’re saying
generating ‘mescc-tools-seed’ is not something readily doable?
>> (do we really need an x86_64 version of this Mes?).
>
> No, I don't think so. I added it esp. to get a preview and enable
> future development of pure x86_64 bootstrap; but dependency-wise we
> should be able to drop it!
Neat.
Thanks for the explanations!
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-15 20:39 Preparing the reduced bootstrap tarballs Jeremiah
@ 2018-11-16 18:27 ` Ludovic Courtès
2018-11-16 20:44 ` Jan Nieuwenhuizen
2018-11-17 3:49 ` Mark H Weaver
0 siblings, 2 replies; 49+ messages in thread
From: Ludovic Courtès @ 2018-11-16 18:27 UTC (permalink / raw)
To: Jeremiah; +Cc: guix-devel
Jeremiah@pdp10.guru skribis:
>> So if you like, please make that change. There is only one little
>> thing: I have no (scripted) recipe to create mescc-tools-seed-XYZ. But
>> wait: I have a great excuse for that...I was too lazy or too sloppy.
>
> I do, in mescc-tools-seed; the script bootstrap.sh when run with the
> option "sin" will build the mescc-tools-seed binaries using mescc-tools.
> The .M1 files are always generated by cc_x86.s using the C source files.
I saw this script but it’s not entirely clear to me how to package the
whole thing. We don’t have a “stage0” package for instance in Guix, do
we?
>> WDYT?
> I think we will end up having several versions of mescc-tools-seed; as
> each architecture guix supports will end up needing a variant if we plan
> on keeping them small. (I also have no idea how to make a multi-arch fat
> elf binary)
For now let’s focus on x86_64/i686. :-)
IMO we should change the seeds as rarely as possible because they are
managed “out-of-band” and verifying them is difficult (you need to fetch
the right Guix commit, run “guix build bootstrap-tarballs”, and compare
the result—assuming this is all bit-reproducible.)
The one we’re using today in Guix date back to 2013.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-16 18:27 ` Ludovic Courtès
@ 2018-11-16 20:44 ` Jan Nieuwenhuizen
2018-11-17 14:05 ` Ludovic Courtès
2018-11-17 3:49 ` Mark H Weaver
1 sibling, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-11-16 20:44 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel, Jeremiah
[-- Attachment #1: Type: text/plain, Size: 1701 bytes --]
Ludovic Courtès writes:
> Jeremiah@pdp10.guru skribis:
>
>>> So if you like, please make that change. There is only one little
>>> thing: I have no (scripted) recipe to create mescc-tools-seed-XYZ. But
>>> wait: I have a great excuse for that...I was too lazy or too sloppy.
>>
>> I do, in mescc-tools-seed; the script bootstrap.sh when run with the
>> option "sin" will build the mescc-tools-seed binaries using mescc-tools.
>> The .M1 files are always generated by cc_x86.s using the C source files.
>
> I saw this script but it’s not entirely clear to me how to package the
> whole thing. We don’t have a “stage0” package for instance in Guix, do
> we?
I had a look but it seems we need either binary seeds for stage0, or
binary seeds for mescc-tools and I'd rather build them within Guix; so
that's what I did now.
>>> WDYT?
>> I think we will end up having several versions of mescc-tools-seed; as
>> each architecture guix supports will end up needing a variant if we plan
>> on keeping them small. (I also have no idea how to make a multi-arch fat
>> elf binary)
>
> For now let’s focus on x86_64/i686. :-)
>
> IMO we should change the seeds as rarely as possible because they are
> managed “out-of-band” and verifying them is difficult (you need to fetch
> the right Guix commit, run “guix build bootstrap-tarballs”, and compare
> the result—assuming this is all bit-reproducible.)
>
> The one we’re using today in Guix date back to 2013.
Okay, I am proposing the attached patches, also available on my
core-updates-next at http://gitlab.com/janneke/guix
Still I hope these won't last for five more years ;-)
janneke.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-bootstrap-Add-mescc-tools-static-mescc-tools-static-.patch --]
[-- Type: text/x-patch, Size: 1884 bytes --]
From 5702107a31f52a615c516084b7a82d9f5e2967e0 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Fri, 16 Nov 2018 19:29:55 +0100
Subject: [PATCH 1/3] bootstrap: Add mescc-tools-static,
mescc-tools-static-tarball.
* gnu/packages/make-bootstrap.scm (%mescc-tools-static,
%mescc-tools-bootstrap-tarball): New variable.
---
gnu/packages/make-bootstrap.scm | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 7bfba3c14..36a5f6904 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -48,6 +48,7 @@
%glibc-bootstrap-tarball
%gcc-bootstrap-tarball
%guile-bootstrap-tarball
+ %mescc-tools-bootstrap-tarball
%mes-bootstrap-tarball
%bootstrap-tarballs
@@ -535,6 +536,16 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
#t))))
(inputs `(("gcc" ,%gcc-static)))))
+(define %mescc-tools-static
+ ;; A statically linked MesCC Tools for bootstrap.
+ (package
+ (inherit mescc-tools)
+ (name "mescc-tools-static")
+ (arguments
+ (substitute-keyword-arguments (package-arguments mescc-tools)
+ ((#:make-flags flags)
+ `(cons "CC=gcc -static" ,flags))))))
+
(define %mes-stripped
;; The subset of Mes files needed for bootstrap.
(package
@@ -731,6 +742,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; A tarball with the statically-linked, relocatable Guile.
(tarball-package %guile-static-stripped))
+(define %mescc-tools-bootstrap-tarball
+ ;; A tarball with MesCC binary seed.
+ (tarball-package %mescc-tools-static))
+
(define %mes-bootstrap-tarball
;; A tarball with Mes ASCII Seed and binary Mes C Library.
(tarball-package %mes-stripped))
--
2.19.1
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-bootstrap-Add-bootstrap-mescc-tools.patch --]
[-- Type: text/x-patch, Size: 3163 bytes --]
From cc3782c5f9d2c606a265be0dfdca44d79ec25622 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Fri, 16 Nov 2018 21:30:00 +0100
Subject: [PATCH 2/3] bootstrap: Add %bootstrap-mescc-tools.
Built with
5702107a31f52a615c516084b7a82d9f5e2967e0 bootstrap: Add mescc-tools-static, mescc-tools-static-tarball.
* gnu/packages/bootstrap.scm (%bootstrap-mescc-tools): New variable.
---
gnu/packages/bootstrap.scm | 49 ++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 7e6200c57..1075325dc 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -49,6 +49,7 @@
%bootstrap-gcc
%bootstrap-glibc
%bootstrap-inputs
+ %bootstrap-mescc-tools
%bootstrap-mes
%mescc-tools-seed
%srfi-43))
@@ -615,6 +616,54 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
(home-page #f)
(license gpl3+)))
+(define %bootstrap-mescc-tools
+ ;; The initial MesCC tools. Uses binaries from a tarball typically built by
+ ;; %MESCC-TOOLS-BOOTSTRAP-TARBALL.
+ (package
+ (name "bootstrap-mescc-tools")
+ (version "0.5.2")
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ `(#:guile ,%bootstrap-guile
+ #:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils)
+ (ice-9 popen))
+ (let ((out (assoc-ref %outputs "out"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (tarball (assoc-ref %build-inputs "tarball")))
+
+ (mkdir out)
+ (copy-file tarball "binaries.tar.xz")
+ (invoke xz "-d" "binaries.tar.xz")
+ (let ((builddir (getcwd))
+ (bindir (string-append out "/bin")))
+ (with-directory-excursion out
+ (invoke tar "xvf"
+ (string-append builddir "/binaries.tar"))))))))
+ (inputs
+ `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
+ ("xz" ,(search-bootstrap-binary "xz" (%current-system)))
+ ("tarball" ,(bootstrap-origin
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://lilypond.org/janneke/mes/"
+ (match (%current-system)
+ ((or "i686-linux" "x86_64-linux")
+ "mescc-tools-static-0.5.2-0.bb062b0-i686-linux.tar.xz"))))
+ (sha256
+ (match (%current-system)
+ ((or "i686-linux" "x86_64-linux")
+ (base32 "1qcqz5lfl2blbfvh5ccg08pcxfhqrmlrsh6cyaxvm0hxsr1rvlm1")))))))))
+ (synopsis "Bootstrap binaries of MesCC Tools")
+ (description synopsis)
+ (home-page #f)
+ (license gpl3+)))
+
(define %bootstrap-mes
;; The initial Mes. Uses binaries from a tarball typically built by
;; %MES-BOOTSTRAP-TARBALL.
--
2.19.1
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-bootstrap-Replace-mescc-tools-seed-with-bootstrap-me.patch --]
[-- Type: text/x-patch, Size: 6662 bytes --]
From daa9ff9463917687aabed8330eacb304a7e4deae Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Fri, 16 Nov 2018 21:30:28 +0100
Subject: [PATCH 3/3] bootstrap: Replace %mescc-tools-seed with
%bootstrap-mescc-tools.
* gnu/packages/bootstrap.scm (%mescc-tools-seed): Remove.
(%bootstrap-inputs): Replace %mescc-tools-seed with %bootstrap-mescc-tools.
* gnu/packages/commencement.scm (mes-boot): Likewise.
(tcc-boot0): Likewise.
(mescc-tools-boot): Remove.
---
gnu/packages/bootstrap.scm | 14 +------
gnu/packages/commencement.scm | 79 ++---------------------------------
2 files changed, 4 insertions(+), 89 deletions(-)
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 1075325dc..2eac08cb4 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -51,7 +51,6 @@
%bootstrap-inputs
%bootstrap-mescc-tools
%bootstrap-mes
- %mescc-tools-seed
%srfi-43))
;;; Commentary:
@@ -716,17 +715,6 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
(home-page #f)
(license gpl3+)))
-(define %mescc-tools-seed ; todo: add tarballs to alpha.gnu.org/pub/mes/bootstrap/
- (let ((commit "dc4e20e74924a5c80a2b7a77b4d7b927234fa71c"))
- (origin
- (method url-fetch)
- (uri (string-append "https://gitlab.com/janneke/mescc-tools-seed"
- "/-/archive/" commit
- "/mescc-tools-seed-" commit ".tar.gz"))
- (sha256
- (base32
- "1lj7df73vxanmffmiwkhcn83r7yd9n8568nkki06bqq5zg526nyz")))))
-
(define %srfi-43
(origin
(method url-fetch)
@@ -742,7 +730,7 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
`(,@(match (%current-system)
((or "i686-linux" "x86_64-linux")
`(("linux-libre-headers" ,%bootstrap-linux-libre-headers)
- ("mescc-tools-seed" ,%mescc-tools-seed)
+ ("bootstrap-mescc-tools" ,%bootstrap-mescc-tools)
("mes" ,%bootstrap-mes)
("srfi-43" ,%srfi-43 )))
(_
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 4def178a8..43373b591 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -106,79 +106,6 @@
(native-inputs '())
(propagated-inputs '()))))
-(define mescc-tools-boot
- (package-with-bootstrap-guile
- (package
- (inherit mescc-tools)
- (name "mescc-tools-boot")
- (version "0.5.2")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
- name "-Release_" version
- ".tar.gz"))
- (patches (search-patches "mescc-tools-boot.patch"))
- (file-name (string-append "mescc-tools" "-" version ".tar.gz"))
- (sha256
- (base32
- "01x7bhmgwyf6mc2g1hcvibhps98nllacqm4f0j5l51b1mbi18pc2"))))
- (inputs '())
- (propagated-inputs '())
- (native-inputs
- `(("mescc-tools-seed" ,%mescc-tools-seed)
- ("mes-source" ,(package-source mes-boot0))
-
- ("bootstrap-mes" ,%bootstrap-mes)
- ("coreutils" ,%bootstrap-coreutils&co)))
- (build-system gnu-build-system)
- (arguments
- `(#:implicit-inputs? #f
- #:guile ,%bootstrap-guile
- #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'unpack-seeds
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
- (mescc-tools-seed (assoc-ref %build-inputs "mescc-tools-seed"))
- (mes-source (assoc-ref %build-inputs "mes-source"))
- (out (assoc-ref %outputs "out")))
- (with-directory-excursion ".."
- (and
- (mkdir-p "mescc-tools-seed")
- (invoke "tar" "--strip=1" "-C" "mescc-tools-seed"
- "-xvf" mescc-tools-seed)
- (mkdir-p "mes-source")
- (invoke "tar" "--strip=1" "-C" "mes-source"
- "-xvf" mes-source)
- #t)))))
- (replace 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((coreutils (assoc-ref %build-inputs "coreutils"))
- (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))
- (out (assoc-ref %outputs "out")))
- (setenv "PATH" (string-append coreutils "/bin"
- ":" "../mescc-tools-seed"))
- (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
- (setenv "PREFIX" out)
- (setenv "MES_PREFIX" "../mes-source")
- (setenv "MESCC_TOOLS_SEED" "../mescc-tools-seed")
- (setenv "MES_SEED" (string-append bootstrap-mes "/lib"))
- #t)))
- (replace 'build
- (lambda _
- (invoke "sh" "build.sh")))
- (replace 'check
- (lambda _
- ;; bootstrap build.sh lacks exec_enable, get_machine, and
- ;; kaem_machine
- ;; (invoke "sh" "check.sh")
- #t))
- (replace 'install
- (lambda _
- (invoke "sh" "install.sh")))))))))
-
(define nyacc-boot
(let ((version "0.86.0")
(revision "0")
@@ -211,7 +138,7 @@
(inputs '())
(propagated-inputs '())
(native-inputs
- `(("mescc-tools" ,mescc-tools-boot)
+ `(("mescc-tools" ,%bootstrap-mescc-tools)
("nyacc-source" ,(package-source nyacc-boot))
("coreutils" , %bootstrap-coreutils&co)
@@ -284,7 +211,7 @@
(setenv "MES_ARENA" "100000000")
(setenv "DIFF" "sh scripts/diff.scm")
;; fail fast tests
- ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t")
+ (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t")
;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell")
(invoke "sh" "check.sh"))))
(replace 'install
@@ -332,7 +259,7 @@
(propagated-inputs '())
(native-inputs
`(("mes" ,mes-boot)
- ("mescc-tools" ,mescc-tools-boot)
+ ("mescc-tools" ,%bootstrap-mescc-tools)
("nyacc-source" ,(package-source nyacc-boot))
("coreutils" , %bootstrap-coreutils&co)
--
2.19.1
[-- Attachment #5: Type: text/plain, Size: 152 bytes --]
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
^ permalink raw reply related [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-16 18:22 ` Ludovic Courtès
@ 2018-11-16 20:52 ` Jan Nieuwenhuizen
0 siblings, 0 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-11-16 20:52 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
Ludovic Courtès writes:
>> Ah right. I saw that several times but did not use it. I think because
>> initially it was of no use. It would be nice if this built everything
>> we need, I agree :-)
>
> Heheh. :-) It’s what the “Building the Bootstrap Binaries” section
> describes.
Right...and I still forgot to add my new packages there...sigh.
>> Anyway, I think we/I will have to put some work into scripting
>> mescc-tools-seed or otherwise changing the mescc-tools-boot build.
>> WDYT?
>
> I’m confused: how did you build the seeds that (gnu packages bootstrap)
> refers to in ‘core-updates-next’?
I built them "by hand." Mes used to have a `make seed' target. I
dropped that.
> The goal is for the seeds to be built through Guix so we have a
> transparent and documented way to reproduce/verify them.
Sure.
> I could propose a patch to do that, though from what you’re saying
> generating ‘mescc-tools-seed’ is not something readily doable?
No, of course that's trivial. I just sent patches to do that. However,
building ascii seeds is not so trivial. You need either M2-Planet or
Mes to produce those. And then: ascii seeds is not what we want,
mescc-tools should be bootstrappable without any seeds, ascii or binary.
I don't see how to write a Guix packages to build mescc-tools without
any dependencies (apart from stage0 maybe). It seems we still need a
mescc-tools-seed package anyway, which doesn't help?
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] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-16 18:27 ` Ludovic Courtès
2018-11-16 20:44 ` Jan Nieuwenhuizen
@ 2018-11-17 3:49 ` Mark H Weaver
1 sibling, 0 replies; 49+ messages in thread
From: Mark H Weaver @ 2018-11-17 3:49 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel, Jeremiah
ludo@gnu.org (Ludovic Courtès) writes:
> Jeremiah@pdp10.guru skribis:
>
>>> So if you like, please make that change. There is only one little
>>> thing: I have no (scripted) recipe to create mescc-tools-seed-XYZ. But
>>> wait: I have a great excuse for that...I was too lazy or too sloppy.
>>
>> I do, in mescc-tools-seed; the script bootstrap.sh when run with the
>> option "sin" will build the mescc-tools-seed binaries using mescc-tools.
>> The .M1 files are always generated by cc_x86.s using the C source files.
>
> I saw this script but it’s not entirely clear to me how to package the
> whole thing. We don’t have a “stage0” package for instance in Guix, do
> we?
>
>>> WDYT?
>> I think we will end up having several versions of mescc-tools-seed; as
>> each architecture guix supports will end up needing a variant if we plan
>> on keeping them small. (I also have no idea how to make a multi-arch fat
>> elf binary)
>
> For now let’s focus on x86_64/i686. :-)
>
> IMO we should change the seeds as rarely as possible because they are
> managed “out-of-band” and verifying them is difficult (you need to fetch
> the right Guix commit, run “guix build bootstrap-tarballs”, and compare
> the result—assuming this is all bit-reproducible.)
>
> The one we’re using today in Guix date back to 2013.
I think it's important that the new bootstrap-tarballs be
bit-reproducible, such that they can be independently verified by anyone
who wishes to do so.
In particular, *I* would like to independently verify them, on my own
laptops where I have avoided using binary substitutes for a long time,
and which I keep with me at all times.
My hope until now is that when we generated our existing bootstrap
binaries in 2013, Guix was too marginal a project to attract the
attention of hackers who might wish to compromise our bootstrap. In
2018, as Guix has become more popular, we might well be considered a
worthy target of such efforts.
Mark
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-16 20:44 ` Jan Nieuwenhuizen
@ 2018-11-17 14:05 ` Ludovic Courtès
2018-11-18 7:32 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Ludovic Courtès @ 2018-11-17 14:05 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: guix-devel, Jeremiah
Hello,
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
>> IMO we should change the seeds as rarely as possible because they are
>> managed “out-of-band” and verifying them is difficult (you need to fetch
>> the right Guix commit, run “guix build bootstrap-tarballs”, and compare
>> the result—assuming this is all bit-reproducible.)
>>
>> The one we’re using today in Guix date back to 2013.
>
> Okay, I am proposing the attached patches, also available on my
> core-updates-next at http://gitlab.com/janneke/guix
>
> Still I hope these won't last for five more years ;-)
Well I hope these will last for at least a couple of years, or at least
this is what we should aim for.
Replacing bootstrap binaries is not anecdotal as I wrote because these
are “binary blobs” that need a special procedure to verify them; that
they are smaller blobs is of course a crucial improvement, but it
doesn’t change the fact that one may want to verify them.
> From 5702107a31f52a615c516084b7a82d9f5e2967e0 Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Fri, 16 Nov 2018 19:29:55 +0100
> Subject: [PATCH 1/3] bootstrap: Add mescc-tools-static,
> mescc-tools-static-tarball.
>
> * gnu/packages/make-bootstrap.scm (%mescc-tools-static,
> %mescc-tools-bootstrap-tarball): New variable.
Neat; I’m glad it was as simple as this. :-)
As discussed yesterday on IRC, please also make sure make-bootstrap.scm
does not refer to (gnu packages bootstrap) at all since that would be
like running in circles.
As discussed just now on IRC, we probably also need #:system
"i686-linux" in the appropriate places such that “guix build
bootstrap-tarballs” gives the same result on i686 and on x86_64.
> From cc3782c5f9d2c606a265be0dfdca44d79ec25622 Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Fri, 16 Nov 2018 21:30:00 +0100
> Subject: [PATCH 2/3] bootstrap: Add %bootstrap-mescc-tools.
>
> Built with
> 5702107a31f52a615c516084b7a82d9f5e2967e0 bootstrap: Add mescc-tools-static, mescc-tools-static-tarball.
>
> * gnu/packages/bootstrap.scm (%bootstrap-mescc-tools): New variable.
OK.
If you want, before pushing this patch, you can first push the one
above. From there I (and possibly others!) will run “guix build
bootstrap-tarballs” and make sure we get the same result as you did.
> From daa9ff9463917687aabed8330eacb304a7e4deae Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Fri, 16 Nov 2018 21:30:28 +0100
> Subject: [PATCH 3/3] bootstrap: Replace %mescc-tools-seed with
> %bootstrap-mescc-tools.
>
> * gnu/packages/bootstrap.scm (%mescc-tools-seed): Remove.
> (%bootstrap-inputs): Replace %mescc-tools-seed with %bootstrap-mescc-tools.
> * gnu/packages/commencement.scm (mes-boot): Likewise.
Also: (mescc-tools-boot): Remove.
> (tcc-boot0): Likewise.
> (mescc-tools-boot): Remove.
I suppose this is not directly related to the other changes, but anyway,
LGTM.
Thanks for the quick reply!
Ludo’.
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
@ 2018-11-17 14:27 Jeremiah
2018-11-17 23:14 ` Mark H Weaver
2018-11-19 18:54 ` Giovanni Biscuolo
0 siblings, 2 replies; 49+ messages in thread
From: Jeremiah @ 2018-11-17 14:27 UTC (permalink / raw)
To: guix-devel
> I think it's important that the new bootstrap-tarballs be
> bit-reproducible, such that they can be independently verified by anyone
> who wishes to do so.
Every Piece below M2-Planet has always been bit-reproducible.
In fact, each piece is designed in a way that you could by hand predict
what the resulting binary must be after any change.
and once I finally complete stage0; you would also have the blueprints
for making the virtual machine in hardware, hand toggle in the bits for
the hex0-monitor and have absolute proof that no trusting trust or Nexus
Intruder Class attacks have occurred in the creation of the binaries.
Every issue anyone is willing to bring, I will publicly address until
all bootstrap roots (even on arbitrary hardware) lead to the proof that
these binaries are perfectly reproducible and that they only behave in
the manner explicitly specified by the standards to which they conform.
> In particular, *I* would like to independently verify them, on my own
> laptops where I have avoided using binary substitutes for a long time,
> and which I keep with me at all times.
Already done; here are the steps currently for bootstrapping the
mescc-tools-seed and M2-Planet seed.M1:
git clone 'https://git.savannah.nongnu.org/git/stage0.git'
cd stage0
make test
cd ..
git clone 'https://git.savannah.nongnu.org/git/mescc-tools.git'
cd mescc-tools
make test
cd ..
git clone 'https://github.com/oriansj/mescc-tools-seed.git'
cd mescc-tools-seed
./bootstrap.sh sin
To generate the M2-Planet seed.M1 you need to either export
mescc-tools-seed's blood-elf, M1 and hex2 or mescc-tools (via copying
into your path or doing make install) then the steps to generate are as
follows:
git clone 'https://github.com/oriansj/M2-Planet.git'
cd M2-Planet
./bootstrap.sh refresh
Now you are done
> My hope until now is that when we generated our existing bootstrap
> binaries in 2013, Guix was too marginal a project to attract the
> attention of hackers who might wish to compromise our bootstrap. In
> 2018, as Guix has become more popular, we might well be considered a
> worthy target of such efforts.
I like to go with the assumption that every binary is already
compromised; but by going back to the basics we can find and rip out
every single hook until we are finally secure.
I don't trust any hardware I can't or didn't make myself.
And the only root of trust we have is the ability to work as a
community, giving every member the ability to independently check our
assumptions and point out our mistakes. We will have false starts and
failures of imagination but we by working together will make us all a
dream that is too hard to achieve alone but easy now that we have each
other helping us all strive to a brighter future.
-Jeremiah
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-17 14:27 Jeremiah
@ 2018-11-17 23:14 ` Mark H Weaver
2018-11-19 18:54 ` Giovanni Biscuolo
1 sibling, 0 replies; 49+ messages in thread
From: Mark H Weaver @ 2018-11-17 23:14 UTC (permalink / raw)
To: Jeremiah; +Cc: guix-devel
Hi Jeremiah,
Jeremiah@pdp10.guru writes:
>> I think it's important that the new bootstrap-tarballs be
>> bit-reproducible, such that they can be independently verified by anyone
>> who wishes to do so.
>
> Every Piece below M2-Planet has always been bit-reproducible.
> In fact, each piece is designed in a way that you could by hand predict
> what the resulting binary must be after any change.
Sure, and I'm glad to hear this.
However, my impression (correct me if I'm wrong) is that we are not yet
able to bootstrap Guix exclusively from M2-Planet. For example, unless
I'm mistaken, we still need Guile in our bootstrap, and I'm guessing
that we are not yet able to build Guile exclusively from M2-Planet.
Is that right?
>> My hope until now is that when we generated our existing bootstrap
>> binaries in 2013, Guix was too marginal a project to attract the
>> attention of hackers who might wish to compromise our bootstrap. In
>> 2018, as Guix has become more popular, we might well be considered a
>> worthy target of such efforts.
>
> I like to go with the assumption that every binary is already
> compromised;
I agree. I didn't mean to imply that I consider our 2013 bootstrap
binaries trustworthy. I very much look forward to the day when I
needn't blindly trust any precompiled binaries at all.
My only point is that if we cannot yet avoid blindly trusting
precompiled binaries, I have higher confidence in our 2013 binaries than
in binaries we would produce today, because (1) we are more likely to be
a target today because Guix has become far more popular, (2) I expect
that intelligence agencies have far more advanced tools today than they
did in 2013, and (3) I expect that governmental policies have become far
more favorable to permitting such attacks against projects such as ours.
> I don't trust any hardware I can't or didn't make myself.
> And the only root of trust we have is the ability to work as a
> community, giving every member the ability to independently check our
> assumptions and point out our mistakes. We will have false starts and
> failures of imagination but we by working together will make us all a
> dream that is too hard to achieve alone but easy now that we have each
> other helping us all strive to a brighter future.
I very much appreciate your work on this, which is quite important.
Regards,
Mark
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-17 14:05 ` Ludovic Courtès
@ 2018-11-18 7:32 ` Jan Nieuwenhuizen
2018-11-18 10:02 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-11-18 7:32 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel, Jeremiah
Ludovic Courtès writes:
Hi!
>> Still I hope these won't last for five more years ;-)
>
> Well I hope these will last for at least a couple of years, or at least
> this is what we should aim for.
Yes, we should aim for that while creating them. I'm possibly a bit too
eager to replace the reduced binary seed bootstrap by a scheme only
bootstrap and reduce all of our seeds even further.
> Replacing bootstrap binaries is not anecdotal as I wrote because these
> are “binary blobs” that need a special procedure to verify them; that
> they are smaller blobs is of course a crucial improvement, but it
> doesn’t change the fact that one may want to verify them.
Fully agree.
> As discussed yesterday on IRC, please also make sure make-bootstrap.scm
> does not refer to (gnu packages bootstrap) at all since that would be
> like running in circles.
Thank you. Right, that's fixed now.
> As discussed just now on IRC, we probably also need #:system
> "i686-linux" in the appropriate places such that “guix build
> bootstrap-tarballs” gives the same result on i686 and on x86_64.
I'm looking into that right now.
>> From cc3782c5f9d2c606a265be0dfdca44d79ec25622 Mon Sep 17 00:00:00 2001
>> From: Jan Nieuwenhuizen <janneke@gnu.org>
>> Date: Fri, 16 Nov 2018 21:30:00 +0100
>> Subject: [PATCH 2/3] bootstrap: Add %bootstrap-mescc-tools.
>>
>> Built with
>> 5702107a31f52a615c516084b7a82d9f5e2967e0 bootstrap: Add mescc-tools-static, mescc-tools-static-tarball.
>>
>> * gnu/packages/bootstrap.scm (%bootstrap-mescc-tools): New variable.
>
> OK.
>
> If you want, before pushing this patch, you can first push the one
> above. From there I (and possibly others!) will run “guix build
> bootstrap-tarballs” and make sure we get the same result as you did.
Great, done. I missed
5b01b6034aeab32a5011c5757f18bd9772d3497d python: Honor '--cores=...' in tests.
happening yesterday; so pushed as
fae3c0d953a7b0b552b4ce654ed9b5a51186f491
bootstrap: Add mescc-tools-static, mescc-tools-static-tarball.
Note you'll also need something like these three extra commits
--8<---------------cut here---------------start------------->8---
2d8f7e2ac bootstrap: Update %bootstrap-tarballs.
57fbf077a bootstrap: Replace %mescc-tools-seed with %bootstrap-mescc-tools.
706574ee4 bootstrap: Add %bootstrap-mescc-tools.
--8<---------------cut here---------------end--------------->8---
from core-updates-next @ https://gitlab.com/janneke/guix to be able to
build `guix --system=i686-linux bootstrap-tarballs'. Until then, the
recipe is
--8<---------------cut here---------------start------------->8---
./pre-inst-env guix build --system=i686-linux mes-stripped-tarball mescc-tools-static-tarball
--8<---------------cut here---------------end--------------->8---
Rebuilding that right now, let's compare what we get.
Thanks for all your input!
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] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-18 7:32 ` Jan Nieuwenhuizen
@ 2018-11-18 10:02 ` Jan Nieuwenhuizen
0 siblings, 0 replies; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-11-18 10:02 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
Jan Nieuwenhuizen writes:
>> If you want, before pushing this patch, you can first push the one
>> above. From there I (and possibly others!) will run “guix build
>> bootstrap-tarballs” and make sure we get the same result as you did.
>
> Great, done. I missed
>
> 5b01b6034aeab32a5011c5757f18bd9772d3497d python: Honor '--cores=...' in tests.
>
> happening yesterday; so pushed as
>
> fae3c0d953a7b0b552b4ce654ed9b5a51186f491
> bootstrap: Add mescc-tools-static, mescc-tools-static-tarball.
>
> Note you'll also need something like these three extra commits
>
> 2d8f7e2ac bootstrap: Update %bootstrap-tarballs.
> 57fbf077a bootstrap: Replace %mescc-tools-seed with %bootstrap-mescc-tools.
> 706574ee4 bootstrap: Add %bootstrap-mescc-tools.
>
>
> from core-updates-next @ https://gitlab.com/janneke/guix to be able to
> build `guix --system=i686-linux bootstrap-tarballs'. Until then, the
> recipe is
>
> ./pre-inst-env guix build --system=i686-linux mes-stripped-tarball mescc-tools-static-tarball
>
> Rebuilding that right now, let's compare what we get.
Just to give you a heads up: left to build this last night to find that
the python patch does not build for me. I reverted the python patch on
my personal branch and start a new build.
Not sure what to do about this, YMMV but this is what I get
--8<---------------cut here---------------start------------->8---
building /gnu/store/k3h2iyv4b36a3d5ji7azgi8bcd8czyrz-python-minimal-3.7.0.drv...
[..]
-l and -j don't go together!
make: *** [Makefile:878: test] Error 2
Test suite failed, dumping logs.
Backtrace:
4 (primitive-load "/gnu/store/9lz3rpgyrm1y97g6k9qg0f7a1h6?")
In ice-9/eval.scm:
191:35 3 (_ _)
In srfi/srfi-1.scm:
863:16 2 (every1 #<procedure 80fce20 at /gnu/store/4nhwwas62jab?> ?)
In /gnu/store/4nhwwas62jabgi8lmhimpg4v3fk2ynk1-module-import/guix/build/gnu-build-system.scm:
799:28 1 (_ _)
369:6 0 (check #:target _ #:make-flags _ #:tests? _ # _ # _ # _)
/gnu/store/4nhwwas62jabgi8lmhimpg4v3fk2ynk1-module-import/guix/build/gnu-build-system.scm:369:6: In procedure check:
Throw to key `srfi-34' with args `(#<condition &invoke-error [program: "make" arguments: ("test" "-j" "16" "EXTRATESTOPTS=-j16") exit-status: 2 term-signal: #f stop-signal: #f] 822ea20>)'.
builder for `/gnu/store/llvsk2pszk1cc7qwf6azi9877nhks59f-python2-2.7.15.drv' failed with exit code 1
build of /gnu/store/llvsk2pszk1cc7qwf6azi9877nhks59f-python2-2.7.15.drv failed
--8<---------------cut here---------------end--------------->8---
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] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
@ 2018-11-18 12:56 Jeremiah
2018-11-18 18:27 ` Mark H Weaver
0 siblings, 1 reply; 49+ messages in thread
From: Jeremiah @ 2018-11-18 12:56 UTC (permalink / raw)
To: guix-devel
> However, my impression (correct me if I'm wrong) is that we are not yet
> able to bootstrap Guix exclusively from M2-Planet.
That is correct as the step of bootstrapping MesCC from M2-Planet is not
yet complete.
However once that is done, we can leverage Mes.c and gash to complete
the bootstrap of guix from that trusted reproducible source in a
reproducible fashion.
> For example, unless
> I'm mistaken, we still need Guile in our bootstrap, and I'm guessing
> that we are not yet able to build Guile exclusively from M2-Planet.
> Is that right?
We don't need it, so much as it is people wishing to avoid tedious work.
We already can bootstrap kaem without any shells or interpreters and it
can be used to run shell scripts that can perform the rest of the
bootstrap of a lisp or a proper shell.
I think because that work is less of a technical challenge that it has
been skipped.
> My only point is that if we cannot yet avoid blindly trusting
> precompiled binaries,
Depends on how restricted of an environment you ware willing to work in
> I have higher confidence in our 2013 binaries than
> in binaries we would produce today, because (1) we are more likely to be
> a target today because Guix has become far more popular, (2) I expect
> that intelligence agencies have far more advanced tools today than they
> did in 2013, and (3) I expect that governmental policies have become far
> more favorable to permitting such attacks against projects such as ours.
1) Granted
2) Not exactly; simply because the most advanced attack tool ever
invented was the Nexus Intruder Program in 1958. (Hardware that subverts
software that later subverts hardware designs and more software
[firmware, microcode, etc]). The tools might get more expensive but the
actual quality of attack tools depends on the teams and the market's
demand for pumping out vulnerable products and bugs. (Like the recent
Hard drive firmware attack which leveraged the vendor's cost cutting
process to hijack the drives and then lock out future attempts at
recovery.
3) Actually Government agencies are depending more and more on "Open
source tools" (Their words not mine) as software budgets have gotten
tighter and third party vendors integrate them more and more into their
commercial offerings purchased by Goverment agencies. Putting a backdoor
in the software most Government agencies depend upon, invites
vulnerabilities in our own Intelligence Agencies infrastructure and
increase the probablity that Spies will be identified before their
flight to their target country leaves the ground. To do such would not
only be suicidal for those Intelligence Agencies but also ensure
Cyberwarfare against the Countries they work for that much more
effective.
Now that isn't to say they consider that an extranality and doom us all
but nothing stays hidden when we can read the source and can DDC our
entire bootstrap across arbitrary hardware/operating system
combinations.
-Jeremiah
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-18 12:56 Jeremiah
@ 2018-11-18 18:27 ` Mark H Weaver
2018-11-18 18:39 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Mark H Weaver @ 2018-11-18 18:27 UTC (permalink / raw)
To: Jeremiah; +Cc: guix-devel
Hi,
Jeremiah@pdp10.guru writes:
>> However, my impression (correct me if I'm wrong) is that we are not yet
>> able to bootstrap Guix exclusively from M2-Planet.
> That is correct as the step of bootstrapping MesCC from M2-Planet is not
> yet complete.
> However once that is done, we can leverage Mes.c and gash to complete
> the bootstrap of guix from that trusted reproducible source in a
> reproducible fashion.
>
>> For example, unless
>> I'm mistaken, we still need Guile in our bootstrap, and I'm guessing
>> that we are not yet able to build Guile exclusively from M2-Planet.
>> Is that right?
> We don't need it, so much as it is people wishing to avoid tedious work.
> We already can bootstrap kaem without any shells or interpreters and it
> can be used to run shell scripts that can perform the rest of the
> bootstrap of a lisp or a proper shell.
>
> I think because that work is less of a technical challenge that it has
> been skipped.
I get the feeling that we are talking about two different things here.
I'm not saying that Guile is needed to bootstrap a GNU system from
source by hand.
When I say "we still need Guile in our bootstrap", I'm referring
specifically to the Guix "bootstrap binaries". Guix uses Guile to
execute its automated build scripts.
Anyway, I've answered my own question by looking at:
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/make-bootstrap.scm?h=core-updates-next&id=d9ed0a46301e259c3082fcc67678e72ceae19a2d#n778
which indicates to me that although gcc, binutils, and glibc have been
eliminated from the Guix bootstrap binaries, they still include
statically-linked versions of Guile, Coreutils, Bzip2, XZ, Gawk, Tar,
and Grep. These are the remaining precompiled binaries that I'm worried
about.
>> I have higher confidence in our 2013 binaries than
>> in binaries we would produce today, because (1) we are more likely to be
>> a target today because Guix has become far more popular, (2) I expect
>> that intelligence agencies have far more advanced tools today than they
>> did in 2013, and (3) I expect that governmental policies have become far
>> more favorable to permitting such attacks against projects such as ours.
>
> 1) Granted
> 2) Not exactly; simply because the most advanced attack tool ever
> invented was the Nexus Intruder Program in 1958. (Hardware that subverts
> software that later subverts hardware designs and more software
> [firmware, microcode, etc]). The tools might get more expensive but the
> actual quality of attack tools depends on the teams and the market's
> demand for pumping out vulnerable products and bugs. (Like the recent
> Hard drive firmware attack which leveraged the vendor's cost cutting
> process to hijack the drives and then lock out future attempts at
> recovery.
Interesting. I didn't know about the Nexus Intruder Program, but even
so, I don't think this invalidates my point (2).
> 3) Actually Government agencies are depending more and more on "Open
> source tools" (Their words not mine) as software budgets have gotten
> tighter and third party vendors integrate them more and more into their
> commercial offerings purchased by Goverment agencies. Putting a backdoor
> in the software most Government agencies depend upon, invites
> vulnerabilities in our own Intelligence Agencies infrastructure and
> increase the probablity that Spies will be identified before their
> flight to their target country leaves the ground. To do such would not
> only be suicidal for those Intelligence Agencies but also ensure
> Cyberwarfare against the Countries they work for that much more
> effective.
>
> Now that isn't to say they consider that an extranality and doom us all
Right. It is by now well accepted fact that the NSA has deliberately
weakened cryptographic standards, for example, and your argument above
would seem to argue against the truth of that fact as well.
> but nothing stays hidden when we can read the source and can DDC our
> entire bootstrap across arbitrary hardware/operating system
> combinations.
Here I disagree. DDC is a crucially important step, but even after we
have DDC, a large number of security flaws will continue to stay hidden
in our code. We have far too much code to audit, and too much of it
written in C, which makes it quite difficult to write secure code.
Common classes of security bugs in C such as signed integer overflows
and other undefined behavior can be very hard to find, and I have little
confidence that all of these bugs would be found in any practical audit.
Moreover, our current development practices ensure that new bugs of this
kind will be continuously reintroduced into our software, even as we
discover and fix many of the existing bugs.
So, your work is a very important part, but not a complete solution to
the problem of building a computer system that we can truly consider
trustworthy.
Regards,
Mark
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-18 18:27 ` Mark H Weaver
@ 2018-11-18 18:39 ` Jan Nieuwenhuizen
2018-11-20 15:45 ` Timothy Sample
0 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-11-18 18:39 UTC (permalink / raw)
To: Mark H Weaver; +Cc: guix-devel, Jeremiah
Mark H Weaver writes:
> Anyway, I've answered my own question by looking at:
>
> https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/make-bootstrap.scm?h=core-updates-next&id=d9ed0a46301e259c3082fcc67678e72ceae19a2d#n778
>
> which indicates to me that although gcc, binutils, and glibc have been
> eliminated from the Guix bootstrap binaries, they still include
> statically-linked versions of Guile, Coreutils, Bzip2, XZ, Gawk, Tar,
> and Grep. These are the remaining precompiled binaries that I'm worried
> about.
As far as I'm concerned our next step after the Reduced Binary Seed
bootstrap--that is yet to be released from core-updates-next---is the
Scheme-only bootstrap.
The plan is to have Guile and Gash initially replace all coreutils&co
and build them from source early in the bootstrap phase, right after
having built tcc and GNU make. We have managed to build GNU make
without any dependency on any of the tool you mention (except for
Guile).
We're not there yet, gash cannot build mes or tcc. Also, the latest mes
0.18 release cannot support buillding bash yet. Lots of fun hacking
todo!
A next step could be to replace bootstrap-guile with mes, or create a
real small version of bootstrappable Guile.
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] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-17 14:27 Jeremiah
2018-11-17 23:14 ` Mark H Weaver
@ 2018-11-19 18:54 ` Giovanni Biscuolo
1 sibling, 0 replies; 49+ messages in thread
From: Giovanni Biscuolo @ 2018-11-19 18:54 UTC (permalink / raw)
To: Jeremiah, guix-devel
[-- Attachment #1: Type: text/plain, Size: 1514 bytes --]
Hi Jeremiah,
Jeremiah@pdp10.guru writes:
[...]
> and once I finally complete stage0; you would also have the blueprints
> for making the virtual machine in hardware,
so, if I don't get it wrong, every skilled engineer will be able to
build an "almost analogic" (zero bit of software preloaded) computing
machine ad use stage0/mes [1] as the "metre" [2] to calibrate all other
computing machines (thanks to reproducible builds)?
> hand toggle in the bits for the hex0-monitor
the first bit of code have to be "manually" introduced in the machine,
right?
for the lazyer like me, what about a punched card? :-)
> and have absolute proof that no trusting trust or Nexus
> Intruder Class attacks have occurred in the creation of the binaries.
I didn't know about Nexus Intruder attacks: could you please give me
some links to the relevant bibliography?
> Every issue anyone is willing to bring, I will publicly address until
> all bootstrap roots (even on arbitrary hardware) lead to the proof that
> these binaries are perfectly reproducible and that they only behave in
> the manner explicitly specified by the standards to which they
> conform.
so, having the scientific proof that binary conforms to source, there
will be noo need to trust (the untrastable)
thank you!
Ciao
Giovanni
[2] I still have not fully understood the relationship between stage0
and mes
[1] https://en.m.wikipedia.org/wiki/Metre
--
Giovanni Biscuolo
Xelera IT Infrastructures
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
@ 2018-11-20 0:26 jeremiah
2018-11-20 8:28 ` Ricardo Wurmus
0 siblings, 1 reply; 49+ messages in thread
From: jeremiah @ 2018-11-20 0:26 UTC (permalink / raw)
To: g, guix-devel
> so, if I don't get it wrong, every skilled engineer will be able to
> build an "almost analogic" (zero bit of software preloaded) computing
> machine ad use stage0/mes [1] as the "metre" [2] to calibrate all other
> computing machines (thanks to reproducible builds)?
well, I haven't thought of it in those terms but yes I guess that is one
of the properties of the plan.
> the first bit of code have to be "manually" introduced in the machine,
> right?
Correct, otherwise you'll have to deal with firmware/bios as a trust
vector to be concerned about.
> for the lazyer like me, what about a punched card? :-)
If someone is willing to figure out how to read a deck of punched cards
without software, I'd be interested in learning more.
> I didn't know about Nexus Intruder attacks: could you please give me
> some links to the relevant bibliography?
I'll see if I can dig those up for you.
> so, having the scientific proof that binary conforms to source, there
> will be noo need to trust (the untrastable)
Well, that is what someone else could do with it but not a direct goal
of the work.
-Jeremiah
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-20 0:26 jeremiah
@ 2018-11-20 8:28 ` Ricardo Wurmus
0 siblings, 0 replies; 49+ messages in thread
From: Ricardo Wurmus @ 2018-11-20 8:28 UTC (permalink / raw)
To: jeremiah; +Cc: guix-devel
jeremiah@pdp10.guru writes:
>> for the lazyer like me, what about a punched card? :-)
> If someone is willing to figure out how to read a deck of punched cards
> without software, I'd be interested in learning more.
Now that’s a project for a free hardware design that I’d happily work
on :)
Reading and transmitting of the bitstream can be done in hardware alone
(shift register, MUX, photoresistors, …), though I’d need to know what
kind of interface there is on the receiving side. Just flash memory /
TTL shift register?
--
Ricardo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-18 18:39 ` Jan Nieuwenhuizen
@ 2018-11-20 15:45 ` Timothy Sample
2018-11-21 20:32 ` Jan Nieuwenhuizen
0 siblings, 1 reply; 49+ messages in thread
From: Timothy Sample @ 2018-11-20 15:45 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: guix-devel, Jeremiah
Hi Jan,
Jan Nieuwenhuizen <janneke@gnu.org> writes:
> The plan is to have Guile and Gash initially replace all coreutils&co
> and build them from source early in the bootstrap phase, right after
> having built tcc and GNU make. We have managed to build GNU make
> without any dependency on any of the tool you mention (except for
> Guile).
>
> We're not there yet, gash cannot build mes or tcc. Also, the latest mes
> 0.18 release cannot support buillding bash yet. Lots of fun hacking
> todo!
I wanted to let you know that I’ve been doing more work on the little
Shell backend that we were talking about earlier. It’s kind of like the
worse-is-better version of Gash: it is certainly not as nice, but the
development pace is much faster. I did take a look at just working on
Gash directly, but it looked like it was going to be a lot slower.
So, keeping in mind that software estimates are very unreliable, I would
say that I might have a workable interpreter in the next week or two.
There are three big features missing: globbing, asynchronous commands,
and arithmetic substitutions. I am almost finished globbing,
asynchronous commands should be pretty easy, and I plan to leave
arithmetic substitutions on the road-map for as long as possible (it’s a
little bit boring).
After I get those first two features working, I am going to start
testing running build scripts for Bash. I will contact you then in case
you have any new advice on which scripts are important or anything else.
> Greetings,
> janneke
-- Tim
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
@ 2018-11-21 3:36 Jeremiah
0 siblings, 0 replies; 49+ messages in thread
From: Jeremiah @ 2018-11-21 3:36 UTC (permalink / raw)
To: rekado, samplet; +Cc: guix-devel
> Now that’s a project for a free hardware design that I’d happily work
> on :)
Sweet
> Reading and transmitting of the bitstream can be done in hardware alone
> (shift register, MUX, photoresistors, …), though I’d need to know what
> kind of interface there is on the receiving side. Just flash memory /
> TTL shift register?
Well ultimately that would need to be a memory bus that is connected to
their TTL DRAM (64KB chips) or TTL SRAM (so we wouldn't have to worry
about memory refresh or other sort of issues like that)
and setting the memory address block starting from Zero until end of
deck.
The Memory is Big Endian Bit, Byte and Word Addressed.
The number address pins needs to be atleast 9 (otherwise the bootstrap
binaries would exceed the address space the reader could write to) and
not to exceed 64 (As I don't plan on implementing a 128bit ALU with
Floating point and Vector instructions needed to comply with the 128bit
version of the spec). I am planning on having the memory data bus to be
8bits wide as all instructions and datatypes are multiples of 8bits.
I can provide a clock signal for when the next value is to be loaded or
a line for you to directly drive the memory chips.
Or we could go the uart route and simply leverage a classic serial
connector.
> I?ve thought about this a bit. Would it be possible to go even more
> mechanical, and implement the SPI protocol in switches toggled by holes
> cut in some kind of insulating tape?
Well that mechanical aspect would be what you would expect in punched
cards or paper tape (I was planning on doing a paper tape reader to
allow easier manual inspection of outputs, inputs and binaries)
> You could have a couple of steel
> balls (bearings?) balanced on top of each other, connected to a circuit
> using brushes or springs. Then, you place the tape in between the
> bearings. When there?s a hole in the insulating tape, they make
> contact, and when there is no hole, no contact.
Yep, classical through-hole reader technology. Not as reliable as
optical sensors but much more low tech and no room for anyone to insert
anything funny with the sensors.
> Then, you have a row of
> holes for the SPI clock, and a row of holes for the SPI data. All you
> would have to do is hook up the right voltage to it, and you could write
> to a flash ROM by pulling manually punched tape through it. (You could
> use a crank or motor if the timing needs to be more precise.)
Well you could have a hole aligned with the values being read (say a 9th
bit) which would trigger a clock pulse to indicate reading of the next byte.
> Then, you could take an x200 and setup the bootrom to be whatever you
> wanted with no software whatsoever.
Not possible, there is a 700+KB microcode blob in that CPU, without
which the CPU fails to power on for more than 10 clock cycles.
> If you adjusted stage0 to set up a
> ?cache-as-RAM? environment (like they do in coreboot), you could do
> quite a bit of manoeuvring before having to initialize RAM.
Well the 4MB of space (or 6MB if you have Penryn chip) is more than
enough to bootstrap cc_x86 and be able to compile a self-hosting C compiler
> That is,
> you could probably set up a tiny Scheme environment and do more hardware
> initialization from there.
Well the hardware initialization isn't a concern as that is currently
well documented in libreboot's code. The hard part is those computers
are only going to be working for a few more years before tin whiskers
kill the whole lot of them (the transistion to lead-free solder occurred
during that time) and then we will have a working solution to hardware
that is no longer available, no longer works and we can't build more
that will exactly match those specs without considerable effort.
> Obviously all of this would be easier on a simpler computer, but then
> presumably you have to move from a simpler computer to a more
> complicated computer at some point (depending on your needs).
I assume a 64bit processor with 16+GB of memory, a SATA interface and a
network interface should be sufficiently complicated to bootstrap
everything we will need to conern ourselves with in the next couple
years. (We can always enhance a design of our own making)
The Low end will be a 16bit processor with only 64KB of RAM and will
probably require ugly coding to fit some of the programs in that address size.
> The nice
> thing about booting the x200 as a simple computer is that you can just
> expand its boundaries until it is full-featured.
One needs to be precise by what one means by full-featured. Would you
consider Minix or Linux 1.0 a full-featured kernel? Would the ability to
build GCC and guile be considered full-featured enough? Because I can
build productive environments down to a hex0-monitor in a few hundred
bytes of total memory.
> Sorry for derailing a bit, I just wanted to share some idle thoughts.
I actively encourage alternative perspectives and I love being told
how I can do this better. I look forward to more ideas and suggestions
from you on this subject later ^_^
Just an open reminder our #bootstrappable channel is always looking for
people intersted in these sorts of topics and we love hearing about what
you have created in this regard.
-Jeremiah
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-20 15:45 ` Timothy Sample
@ 2018-11-21 20:32 ` Jan Nieuwenhuizen
2018-11-26 18:49 ` Timothy Sample
0 siblings, 1 reply; 49+ messages in thread
From: Jan Nieuwenhuizen @ 2018-11-21 20:32 UTC (permalink / raw)
To: Timothy Sample; +Cc: guix-devel, Rutger van Beusekom
Timothy Sample writes:
Hello Timothy!
>> The plan is to have Guile and Gash initially replace all coreutils&co
>> and build them from source early in the bootstrap phase, right after
>> having built tcc and GNU make. We have managed to build GNU make
>> without any dependency on any of the tool you mention (except for
>> Guile).
>>
>> We're not there yet, gash cannot build mes or tcc. Also, the latest mes
>> 0.18 release cannot support buillding bash yet. Lots of fun hacking
>> todo!
>
> I wanted to let you know that I’ve been doing more work on the little
> Shell backend that we were talking about earlier. It’s kind of like the
> worse-is-better version of Gash: it is certainly not as nice, but the
> development pace is much faster. I did take a look at just working on
> Gash directly, but it looked like it was going to be a lot slower.
Oh, that's great news! We have been making good progress on Gash. The
parser has been completely revamped. The next target is to add a
transformation that should result in a eval'able shelly Guile script,
ideally something that you'd want to write by hand.
To achieve that will take some time. It would be nice if we could work
together shaping this shelly script language .
If Gash and Geesh would produce (after transformation) the same shelly
script language, we can also share the backend implementation, WDYT?
> So, keeping in mind that software estimates are very unreliable, I would
> say that I might have a workable interpreter in the next week or two.
> There are three big features missing: globbing, asynchronous commands,
> and arithmetic substitutions. I am almost finished globbing,
> asynchronous commands should be pretty easy, and I plan to leave
> arithmetic substitutions on the road-map for as long as possible (it’s a
> little bit boring).
Hehe. I had a look and you did make lots of progress!
> After I get those first two features working, I am going to start
> testing running build scripts for Bash. I will contact you then in case
> you have any new advice on which scripts are important or anything else.
Great,
Keep up the good work!
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: Preparing the reduced bootstrap tarballs
2018-11-21 20:32 ` Jan Nieuwenhuizen
@ 2018-11-26 18:49 ` Timothy Sample
0 siblings, 0 replies; 49+ messages in thread
From: Timothy Sample @ 2018-11-26 18:49 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: guix-devel, Rutger van Beusekom
Hi Jan,
Jan Nieuwenhuizen <janneke@gnu.org> writes:
> Timothy Sample writes:
>
>> I wanted to let you know that I’ve been doing more work on the little
>> Shell backend that we were talking about earlier. It’s kind of like the
>> worse-is-better version of Gash: it is certainly not as nice, but the
>> development pace is much faster. I did take a look at just working on
>> Gash directly, but it looked like it was going to be a lot slower.
>
> Oh, that's great news! We have been making good progress on Gash. The
> parser has been completely revamped. The next target is to add a
> transformation that should result in a eval'able shelly Guile script,
> ideally something that you'd want to write by hand.
That’s what I like best about Gash. My “shelly” code is a mess and no
one should write it by hand! :)
> To achieve that will take some time. It would be nice if we could work
> together shaping this shelly script language .
I agree, but I am hesitant to worry about this now. The more I work on
Geesh the more I realize that building a shell is a big project. I’ve
consistently been moving from worrying about making things work nicely
to just making them work. I hope that once the basic features are in
place it will be a lot more fun to improve things gradually. Does that
make sense?
> If Gash and Geesh would produce (after transformation) the same shelly
> script language, we can also share the backend implementation, WDYT?
I’m a little bit confused about this. After we exchanged notes last
time, I thought we were going to share front-ends. Now it seems you’ve
doubled-down on Gash’s PEG parser and want to share back-ends. Why the
change in plans? It makes more sense to me to share front-ends because
the parser in Geesh is quite complete. Also, you already wrote some
code to transform its output into a Gash script.
>> So, keeping in mind that software estimates are very unreliable, I would
>> say that I might have a workable interpreter in the next week or two.
>> There are three big features missing: globbing, asynchronous commands,
>> and arithmetic substitutions. I am almost finished globbing,
>> asynchronous commands should be pretty easy, and I plan to leave
>> arithmetic substitutions on the road-map for as long as possible (it’s a
>> little bit boring).
>
> Hehe. I had a look and you did make lots of progress!
So have you! It’s pretty funny that we both picked up working on this
at about the same time. In hindsight, I should have contacted you
before diving in again in order to minimize duplicated work. On the
other hand, it seems you’re guilty of the same thing! Oh well. ;)
I‘m not too worried about it, and I’m having fun. I hope you are too.
>> After I get those first two features working, I am going to start
>> testing running build scripts for Bash. I will contact you then in case
>> you have any new advice on which scripts are important or anything else.
>
> Great,
> Keep up the good work!
I skipped asynchronous commands and implemented a bunch of built-ins
instead. Now Geesh will run most of Bash’s configure script. It runs
until it tries to write “config.sub” which it writes incorrectly due to
an unset variable (ironically, it seems to be the “$SHELL” variable).
That means it chews through over 17,000 lines of configure script! It
does this very s-l-o-w-l-y, but it’s exciting all the same.
-- Tim
^ permalink raw reply [flat|nested] 49+ messages in thread
end of thread, other threads:[~2018-11-26 18:49 UTC | newest]
Thread overview: 49+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-14 8:50 [bug#33038] bootstrap: Regeneration of Mes bootstrap seeds Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 2/6] gnu: mes: Update to 0.18.0-08f04f55 Jan Nieuwenhuizen
2018-10-19 21:23 ` Ludovic Courtès
2018-10-20 6:41 ` Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 3/6] bootstrap: Add %bootstrap-mes Jan Nieuwenhuizen
2018-10-19 21:31 ` Ludovic Courtès
2018-10-20 7:35 ` Jan Nieuwenhuizen
2018-10-20 18:31 ` Jan Nieuwenhuizen
2018-10-21 20:37 ` Marius Bakke
2018-10-21 21:04 ` Ludovic Courtès
2018-10-21 21:28 ` Jan Nieuwenhuizen
2018-10-21 21:09 ` Ludovic Courtès
2018-10-21 21:32 ` Jan Nieuwenhuizen
2018-10-23 21:00 ` bug#33038: " Jan Nieuwenhuizen
2018-10-24 16:18 ` [bug#33038] " Marius Bakke
2018-10-24 16:58 ` Jan Nieuwenhuizen
2018-11-15 9:06 ` Preparing the reduced bootstrap tarballs Ludovic Courtès
2018-11-15 15:44 ` Jan Nieuwenhuizen
2018-11-16 18:22 ` Ludovic Courtès
2018-11-16 20:52 ` Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 4/6] gnu: mescc-tools: Update to 0.5.2-0.bb062b0d Jan Nieuwenhuizen
2018-10-19 21:32 ` Ludovic Courtès
2018-10-20 7:41 ` Jan Nieuwenhuizen
2018-10-14 8:58 ` [bug#33038] [PATCH 5/6] bootstrap: Build with %bootstrap-mes Jan Nieuwenhuizen
2018-10-19 21:34 ` Ludovic Courtès
2018-10-14 8:58 ` [bug#33038] [PATCH 6/6] doc: Update Preparing to Use the Bootstrap Binaries Jan Nieuwenhuizen
2018-10-19 21:37 ` Ludovic Courtès
2018-10-20 8:23 ` Jan Nieuwenhuizen
2018-10-19 21:22 ` [bug#33038] [PATCH 1/6] doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping' Ludovic Courtès
-- strict thread matches above, loose matches on Subject: below --
2018-11-15 20:39 Preparing the reduced bootstrap tarballs Jeremiah
2018-11-16 18:27 ` Ludovic Courtès
2018-11-16 20:44 ` Jan Nieuwenhuizen
2018-11-17 14:05 ` Ludovic Courtès
2018-11-18 7:32 ` Jan Nieuwenhuizen
2018-11-18 10:02 ` Jan Nieuwenhuizen
2018-11-17 3:49 ` Mark H Weaver
2018-11-17 14:27 Jeremiah
2018-11-17 23:14 ` Mark H Weaver
2018-11-19 18:54 ` Giovanni Biscuolo
2018-11-18 12:56 Jeremiah
2018-11-18 18:27 ` Mark H Weaver
2018-11-18 18:39 ` Jan Nieuwenhuizen
2018-11-20 15:45 ` Timothy Sample
2018-11-21 20:32 ` Jan Nieuwenhuizen
2018-11-26 18:49 ` Timothy Sample
2018-11-20 0:26 jeremiah
2018-11-20 8:28 ` Ricardo Wurmus
2018-11-21 3:36 Jeremiah
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.