From: Jan Nieuwenhuizen <janneke@gnu.org>
To: guix-devel@gnu.org
Subject: bootstrap: i686-linux now builds without binutils, gcc seeds
Date: Fri, 31 Aug 2018 18:31:16 +0200 [thread overview]
Message-ID: <87h8jats4r.fsf@gnu.org> (raw)
We have been working on the wip-bootstrap branch with the aim to remove
bootstrap binary seeds. At the moment this is for i686-linux only.
The first step was to build binutils-mesboot-2.20.1a,
glibc-mesboot-2.2.5 and gcc-mesboot-4.7.4 without the use of any binary
binutils, glibc or gcc.
The second step was to remove binutils, glibc and gcc from the
%bootstrap-binaries for i686-linux and replace them with the *-mesboot
binaries. That only got us to build make-boot0, other bootstrap tools
seem (!) to need a newer glibc.
Currently, the i686-linux bootstrap binaries are ~230MB in size
(unpacked). Removing binutils, glibc and gcc reduces this to ~130MB.
The end goal is what we call a `full source bootstrap'; to only have a
~500 byte binary seed: the hex0 monitor. Getting there will take some
time. Meanwhile we settle for a `reduced binary seed' bootstrap.
Sadly, bootstrapping a glibc newer than 2.2.5 proved to be non-trivial.
As a temporary workaround, we chose to increase the bootstrap debt again
and inject the old %bootstrap-glibc after building all *-mesboot
binaries.
Now we have a prototype bootstrap that needs
("i686-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)))
("coreutils&co" ,%bootstrap-coreutils&co)
("bash" ,%bootstrap-coreutils&co)))
plus, to build the rest of Guix
("libc" ,%bootstrap-glibc)
To try it, do something like
git clone git://git.savannah.nongnu.org/guix
cd guix
git checkout -b wip-bootstrap
guix environment guix
./bootstrap
./configure
make
and then, if you're feeling courageous and lucky
./pre-inst-env guix build --system=i686-linux hello
or otherwise, you can do as I did
./pre-inst-env guix build --system=i686-linux gcc-mesboot
./pre-inst-env guix build --system=i686-linux -e '(@@ (gnu packages commencement) make-boot0)'
./pre-inst-env guix build --system=i686-linux -e '(@@ (gnu packages commencement) bintutils-cross-boot0)'
./pre-inst-env guix build --system=i686-linux -e '(@@ (gnu packages commencement) gcc-cross-boot0)'
./pre-inst-env guix build --system=i686-linux -e '(@@ (gnu packages commencement) gcc-final)'
./pre-inst-env guix build --system=i686-linux -e '(@@ (gnu packages commencement) guile-final)'
...
We need to determine the next steps and we could use some help. A rough
list of things to be done
* cleanup the wip-bootstrap branch, merge it
* replace %bootstrap-glibc with a bootstrapped glibc again+)
* release mes 0.18
* replace coreutils&co by bootstrapped packages
* other architectures: x86_64, arm*, ...
* replace mes-seed by a full source bootstrapped mes.M2
* replace Bash with Gash and/or Geesh*)
Wea; think that with "just a little bit" of extra effort we can have Guix
x86 be the first GNU/Linux that was bootstrapped without the use of
binary C compiler seed.
Greetings,
janneke
+) After bootstrapping a static glibc-2.2.5, I tried building a shared
2.2.5, 2.3, 2.3.4, 2.3.6, 2.4, 2.5 and 2.6. When all failed, I
invested a couple of days to patch 2.3.6...but that started to look
like a gargantuan undertaking. Iow, I'm stuck here.
*) Gash and Geesh are exciting new projects that have the mostly
overlapping goal to create a posix/bash compatible shell in Guile.
Although it may not be the highest priority from a full source
bootstrap point of view, having a shell in Guile is very exciting and
would help Guix a lot. We need to evaluate gash and geesh and
formulate a strategy.
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
next reply other threads:[~2018-08-31 16:31 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-31 16:31 Jan Nieuwenhuizen [this message]
2018-09-01 18:16 ` bootstrap: i686-linux now builds without binutils, gcc seeds Gábor Boskovits
2018-09-02 5:21 ` Jan Nieuwenhuizen
2018-09-16 19:24 ` Ludovic Courtès
2018-09-17 6:10 ` Pjotr Prins
2018-09-17 18:29 ` Ricardo Wurmus
2018-09-17 19:25 ` Jan Nieuwenhuizen
2018-09-17 19:47 ` Jan Nieuwenhuizen
2018-09-17 21:55 ` Ricardo Wurmus
2018-09-18 8:27 ` Jan Nieuwenhuizen
2018-09-18 8:04 ` Vincent Legoll
2018-09-18 8:33 ` Jan Nieuwenhuizen
2018-09-18 20:53 ` Jan Nieuwenhuizen
2018-09-19 5:07 ` Jan Nieuwenhuizen
2018-09-19 18:07 ` Jan Nieuwenhuizen
2018-09-22 12:35 ` Ludovic Courtès
2018-09-22 15:34 ` Jan Nieuwenhuizen
2018-09-22 18:23 ` Jan Nieuwenhuizen
2018-09-23 8:02 ` branched core-updates-next [WAS: Re: bootstrap: i686-linux now builds without binutils, gcc seeds] Jan Nieuwenhuizen
2018-09-23 16:09 ` bootstrap: i686-linux now builds without binutils, gcc seeds Joshua Branson
2018-09-23 16:29 ` Jonathan Brielmaier
2018-09-22 12:23 ` Ludovic Courtès
2018-09-22 14:38 ` Jan Nieuwenhuizen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87h8jats4r.fsf@gnu.org \
--to=janneke@gnu.org \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.