unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* bootstrap: i686-linux now builds without binutils, gcc seeds
@ 2018-08-31 16:31 Jan Nieuwenhuizen
  2018-09-01 18:16 ` Gábor Boskovits
  2018-09-16 19:24 ` Ludovic Courtès
  0 siblings, 2 replies; 23+ messages in thread
From: Jan Nieuwenhuizen @ 2018-08-31 16:31 UTC (permalink / raw)
  To: guix-devel

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

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2018-09-23 16:30 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-31 16:31 bootstrap: i686-linux now builds without binutils, gcc seeds Jan Nieuwenhuizen
2018-09-01 18:16 ` 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

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).