unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Jan Nieuwenhuizen <janneke@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: bootstrap: i686-linux now builds without binutils, gcc seeds
Date: Sun, 16 Sep 2018 21:24:20 +0200	[thread overview]
Message-ID: <87k1nlfdp7.fsf@gnu.org> (raw)
In-Reply-To: <87h8jats4r.fsf@gnu.org> (Jan Nieuwenhuizen's message of "Fri, 31 Aug 2018 18:31:16 +0200")

Hello Janneke!

It’s taken me a while but I successfully built /gnu/store/58q6748dydqxrhrw8xn2gsf60djl6gvv-hello-2.10
for i686 from commit 5d8b7131c23d2285dd3546c59022dd5953508943 of
‘wip-bootstrap’.  :-)

--8<---------------cut here---------------start------------->8---
$ guix hash -r /gnu/store/58q6748dydqxrhrw8xn2gsf60djl6gvv-hello-2.10
005zi21nvhmygjam6vsvkgmw9awsmyacz6a65naxcblrpbra1g94
--8<---------------cut here---------------end--------------->8---

The “interesting commits” are these:

  5d8b7131c * gnu: mes: Oops, use mirror://gnu download url.
  1ff6d26ac * bootstrap: Replace GNU toolchain seeds with Mes for i686-linux.
  ca8895bdb * bootstrap: Add Mes bootstrap.
  be65bf958 * gnu: Add Mes bootstrap seeds.
  45856f886 * gnu: Add linux-libre-headers-bootstrap-tarball.
  cd9830fcd * guix: copy-linux-headers: Prepare for Mes bootstrap.
  6265040e7 * guix: package-from-tarball: Allow PROGRAM-TO-TEST to be #f.
  8d9c16ed3 * gnu: texinfo-boot0: Remove bootstrap leaks.
  f9a76a79c * gnu: bison-boot0: Remove bootstrap leaks.
  12394cc83 * gnu: m4-boot0: New variable.
  6891da335 * gnu: perl-boot0: Remove bootstrap leaks.
  f933b162c * gnu: file-boot0: Remove bootstrap leaks.
  9c0912a20 * gnu: findutils-boot0: Remove bootstrap leaks.
  53616d896 * gnu: diffutils-boot0: Remove bootstrap leaks.
  7503cee76 * bootstrap: %bootstrap-inputs+toolchain: Prepare for Mes bootstrap.
  80bd4a995 * bootstrap: %bootstrap-inputs: Prepare for Mes bootstrap.

I looked at the result and overall it LGTM!  So I think the next step is
to rebase the branch on ‘core-updates’ (or merge it) and rename it
‘core-updates-next’.  WDYT?  Ricardo?

Previously we discussed that “-s i686-linux” on x86_64 would lead to a
different graph compared to a native i686-linux run.  Is it still the
case?  It looks like 80bd4a995 does the right thing in that respect.

Some comments on things that I think could be improved, in no particular
order:

  • It would be good to update the “Bootstrapping” section of the
    manual—no urgency though.  It would be useful both to Guix
    developers and to outsiders interested in bootstrapping
    (Bootstrappable, Reproducible Builds, maybe projects like GNU/Linux
    From Scratch, etc.)

  • I think all the “mesboot” & co. packages in commencement.scam can be
    made private–i.e., changing ‘define-public’ to ‘define’.

  • There’s a couple of tests (for example in tests/debug-link.scm) that
    rely on %gcc-bootstrap, on the assumption that building it is
    cheap.  We should double-check that these are still okay on i686.

  • IWBN to add comments for gcc-mesboot1-wrapper,
    glibc-headers-mesboot, %bootstrap-inputs+toolchain, just a line or
    two giving some context.

  • I saw a couple of hanging parens in commencement.scm, they want to
    be next to their friends.  ;-)

  • Minor style issues:
    `(,@(substitute-keyword-arguments …)) → (substitute-keyword-arguments …)
    (zero? (system* …)) → (invoke …)

  • Could you add a couple of lines of explanation at the top of the new
    gnu/packages/patches/*.patch files, as we do for other patches?
    Some of them could also be simplified; for instance
    ‘glibc-boot-2.2.5.patch’ contains the diff of what looks like a
    leftover file.

  • For ‘binutils-mesboot0’: package/inherit → package (inherit …)
    since replacement for ‘binutils’ certainly won’t apply to
    ‘binutils-mesboot0’.

  • For commit 80bd4a995 for instance, instead of “Prepare for Mes
    bootstrap”, the message could be “Wrap input lists into thunks.” or
    something like that to clarify what the actual change is.

I noticed that:

  ./pre-inst-env guix graph -e '(begin (use-modules (guix utils)) (%current-system "i686-linux")(@@ (gnu packages commencement) gnu-make-boot0))' | dot -Tps > t.ps

shows lots of repetitions, which defeats eq? memoization, but the
problem is not new; I’ll try to look into fixing this.


As we were discussing on IRC, we’ll have to figure out what the next
step should be, once this branch has become ‘core-updates-next’.  One
interesting bit is to remove the mes.M1 seed, as you wrote.  Another one
might be to do x86_64 bootstrapping (using i686 binaries at the
beginning of the graph, until we reach gcc@4.9, at which point we should
be able to build x86_64 binaries; though maybe I’m just too naive here
:-)).  Another low-hanging fruit (I think!) is using Gash instead of
Bash, though that’s completely orthogonal.

Thoughts?

Thank you for the amazing work, and again apologies for taking so long
to get back to you!

Ludo’.

  parent reply	other threads:[~2018-09-16 19:24 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k1nlfdp7.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=janneke@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 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).