GNU bug report logs - #38390
[core-updates] Scheme-only bootstrap: merge wip-bootstrap

Previous Next

Package: guix-patches;

Reported by: Jan Nieuwenhuizen <janneke <at> gnu.org>

Date: Tue, 26 Nov 2019 16:39:01 UTC

Severity: important

Tags: patch

Done: Jan Nieuwenhuizen <janneke <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 38390 in the body.
You can then email your comments to 38390 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Tue, 26 Nov 2019 16:39:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jan Nieuwenhuizen <janneke <at> gnu.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 26 Nov 2019 16:39:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: guix-patches <at> gnu.org
Cc: Timothy Sample <samplet <at> ngyro.com>
Subject: [core-updates] Scheme-only bootstrap: merge wip-bootstrap
Date: Tue, 26 Nov 2019 17:38:39 +0100
Hi!

With the release of Mes 0.21, the wip-bootstrap branch is ready for a
first review.  This is a big one, so I am opening this bug to discuss
and keep track of things.

Please note that wip-bootstrap uses development snapshots of Gash and
Gash Core Utils; we still expect some changes here and probably hard
resets of `wip-bootstrap'.

Gash has now reached pretty good posix compliance, which really helps to
run configure scripts and sh snippets in autotool-generated Makefiles.

Gash Core Utils currently comes with

   [, awk, basename, cat, chmod, cmp, compress, cp, cut, diff, dirname,
   egrep, expr, false, fgrep, find, gawk, grep, gzip, head, ln, ls,
   mkdir, mv, pwd, reboot, rm, rmdir, sed, sleep, sort, tar, test,
   touch, tr, true, uname, uniq, wc, and which.

that in comparison with Gash are much flakier.  While basic
functionality is generally OK, most Gash tools cannot be used to
bootstrap the entire system yet.  This holds especially for awk, grep,
and sed.

Between autoconf 2.61 (2006) and autoconf-2.63 (2008), much
functionality that was written in sed was moved to awk.  The NEWS file
states performance reasons.  Gash's sed is much mature than Gash's awk,
so currently it makes sense to target C versions of around 2004.

However, some of the 2004 C tools are not good enough anymore to
bootstrap the entire system; so we need a second round for them.  The
Mes C Library is another constraint.  With Mes 0.21 it gained support
for many early C tools; but more recent tools have C library
requirements that are not yet covered.

Another thing to note is that we do not have bzip2, lzip or xz and that
after 2009 some crucial tools (coreutils, diffutils, grep, sed, ...)
start shipping .xz or .lz tarballs only.  While bzip2 can be built early
in the bootstrap, I only managed to build xz with a fairly recent gcc
(4.6).

Even with these considerations, there still is quite some room to change
build order and versions of the C versions of coreutils&co.  The current
choices are mostly made by "what works".  We could invest in fixing
Gash's awk or sed or enrich the Mes C library or ..., if that seems a
helpful thing to do.

When we manage to merge this, we will have halved the bootstrap seed
again, reducing the bootstrap seed to under 60MB.

--8<---------------cut here---------------start------------->8---
10:40:02 janneke <at> dundal:~/tmp [env]
$ cd guix-sob/
10:40:04 janneke <at> dundal:~/tmp/guix-sob [env]
$ du -schx $(readlink $(~/src/guix/wip-bootstrap/pre-inst-env guix build bootstrap-tarballs)/*)
388K	/gnu/store/49giv6b94zbv2pjl6a9ycgy5ny9x3jbc-gash-bootstrap-guile-tarball-0.1-9.32188ac/gash-bootstrap-guile-0.1-9.32188ac-x86_64-linux.tar.xz
5.7M	/gnu/store/47qxvqs7rm7agdp86lxr2jzvval5hkqc-guile-static-stripped-tarball-2.2.6/guile-static-stripped-2.2.6-x86_64-linux.tar.xz
80K	/gnu/store/l6m2rmqs31mc9w7rl99xxl6m35x7fg6v-linux-libre-headers-stripped-tarball-4.19.56/linux-libre-headers-stripped-4.19.56-x86_64-linux.tar.xz
280K	/gnu/store/gnz5mlnzcb0nkaiyad5smblalfjvi8xc-mescc-tools-static-stripped-tarball-0.6.1/mescc-tools-static-stripped-0.6.1-x86_64-linux.tar.xz
352K	/gnu/store/p32p46x5iic0sff2wcf5gilddvfibb19-mes-minimal-stripped-tarball-0.21/mes-minimal-stripped-0.21-x86_64-linux.tar.xz
6.7M	total
10:40:14 janneke <at> dundal:~/tmp/guix-sob [env]
$ for i in $(readlink $(~/src/guix/wip-bootstrap/pre-inst-env guix build bootstrap-tarballs)/*); do sudo tar xf $i; done
10:45:29 janneke <at> dundal:~/tmp/guix-sob [env]
$ du -schx *
6.2M	bin
988K	include
42M	lib
8.3M	share
58M	total
--8<---------------cut here---------------end--------------->8---

Just when I thought the branch was functionally done; I already found one
small problem; I have pushed this ugly workaround

--8<---------------cut here---------------start------------->8---
bootstrap: ACL: disable tests.  FIXME: LD_PRELOAD.

Running

    ./pre-inst-env build hello

fails to build acl:

ERROR: ld.so: object '/tmp/guix-build-acl-2.2.53.drv-0/acl-2.2.53/.libs/libtestlookup.so' from LD_PRELOAD cannot be preloaded: ignored. != ~
ERROR: ld.so: object '/tmp/guix-build-acl-2.2.53.drv-0/acl-2.2.53/.libs/libtestlookup.so' from LD_PRELOAD cannot be preloaded: ignored. != ~
ERROR: ld.so: object '/tmp/guix-build-acl-2.2.53.drv-0/acl-2.2.53/.libs/libtestlookup.so' from LD_PRELOAD cannot be preloaded: ignored. != ~
ERROR: ld.so: object '/tmp/guix-build-acl-2.2.53.drv-0/acl-2.2.53/.libs/libtestlookup.so' from LD_PRELOAD cannot be preloaded: ignored. != ~
[7] $ rm large-file -- failed
ERROR: ld.so: object '/tmp/guix-build-acl-2.2.53.drv-0/acl-2.2.53/.libs/libtestlookup.so' from LD_PRELOAD cannot be preloaded: ignored. != ~
4 commands (2 passed, 2 failed)
FAIL test/getfacl-lfs.test (exit status: 2)

* gnu/packages/acl.scm (acl): Disable tests.
--8<---------------cut here---------------end--------------->8---

It looks like a coreutils is getting built with a too early bootstrap
gcc/glibc, but I could use some help here.

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 01 Dec 2019 14:02:02 GMT) Full text and rfc822 format available.

Message #8 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sun, 01 Dec 2019 15:01:25 +0100
Hello Janneke & Timothy!

Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:

> Gash has now reached pretty good posix compliance, which really helps to
> run configure scripts and sh snippets in autotool-generated Makefiles.
>
> Gash Core Utils currently comes with
>
>    [, awk, basename, cat, chmod, cmp, compress, cp, cut, diff, dirname,
>    egrep, expr, false, fgrep, find, gawk, grep, gzip, head, ln, ls,
>    mkdir, mv, pwd, reboot, rm, rmdir, sed, sleep, sort, tar, test,
>    touch, tr, true, uname, uniq, wc, and which.

Woow, excellent!  Do I get it right that “Gash Core Utils” refers to the
‘gash-core-utils’ branch at <https://gitlab.com/janneke/gash>?

So this is meant to be a Gash extension but separate from Gash.  Looks
really cool!

Do you plan to eventually merge it on Savannah?  (I expected to find the
code there.  :-)  BTW, I posted (unimportant) patches to
<https://lists.gnu.org/archive/html/gash-devel/2019-06/threads.html>.)

> that in comparison with Gash are much flakier.  While basic
> functionality is generally OK, most Gash tools cannot be used to
> bootstrap the entire system yet.  This holds especially for awk, grep,
> and sed.

(gash core-utils awk *) look quite fancy though!  I thought ‘configure’
only used a couple of trivial Awk snippets and after checking, I see
that there are in fact relatively fancy Awk programs in there.  Bah.

> Between autoconf 2.61 (2006) and autoconf-2.63 (2008), much
> functionality that was written in sed was moved to awk.  The NEWS file
> states performance reasons.  Gash's sed is much mature than Gash's awk,
> so currently it makes sense to target C versions of around 2004.
>
> However, some of the 2004 C tools are not good enough anymore to
> bootstrap the entire system; so we need a second round for them.  The
> Mes C Library is another constraint.  With Mes 0.21 it gained support
> for many early C tools; but more recent tools have C library
> requirements that are not yet covered.

How much work would be necessary at first sign to implement what’s
missing from (gash core-utils awk) to cover what modern-time ‘configure’
scripts need?

I suppose having a good(-enough) Awk implementation in Gash would be
more fruitful in the long run than reviving old C packages.  Notably, I
think you’d rather keep Mes’ libc as small as possible IMO, because it’s
cumbersome to write and maintain, which means more Scheme and less C.
But obviously, this all depends on the difficulty of implementing the
missing bits of Awk.

> Another thing to note is that we do not have bzip2, lzip or xz and that
> after 2009 some crucial tools (coreutils, diffutils, grep, sed, ...)
> start shipping .xz or .lz tarballs only.  While bzip2 can be built early
> in the bootstrap, I only managed to build xz with a fairly recent gcc
> (4.6).

At worst, we could host gzipped versions of these tarballs (or ask the
maintainers to do so).

Or we could have a fixed-output derivation that does the lzip->gzip
conversion (creating a “soft” circular dependency), which is kinda
equivalent to hosting a gzipped versions when substitutes are available.

Longer-term, we could also consider having a derivation built-in that
would allow us to “cheat” (i.e., take gz/lzip/xz/bzip2 for granted),
though it’s not so nice.

> Even with these considerations, there still is quite some room to change
> build order and versions of the C versions of coreutils&co.  The current
> choices are mostly made by "what works".  We could invest in fixing
> Gash's awk or sed or enrich the Mes C library or ..., if that seems a
> helpful thing to do.
>
> When we manage to merge this, we will have halved the bootstrap seed
> again, reducing the bootstrap seed to under 60MB.

Woohoo!

> Just when I thought the branch was functionally done; I already found one
> small problem; I have pushed this ugly workaround
>
> bootstrap: ACL: disable tests.  FIXME: LD_PRELOAD.
>
> Running
>
>     ./pre-inst-env build hello
>
> fails to build acl:
>
> ERROR: ld.so: object '/tmp/guix-build-acl-2.2.53.drv-0/acl-2.2.53/.libs/libtestlookup.so' from LD_PRELOAD cannot be preloaded: ignored. != ~

We should have a debugging session for this one.  :-)

What about building the ‘core’ subset of ‘wip-bootstrap’ on berlin?
That would allow others to experiment (and debug!) without having to
build it all by themselves.

At some point we should consider “cleaning up” the history of that
branch.  For instance, I see commit “326d45561c gnu: Add gash.  WIP”,
which adds ‘guile-gash’ when there’s already a ‘gash’ package (and it
also modifies ‘jupyter-guile-kernel’).

We’ll also have to collectively review the new bootstrap tarballs.

Anyway, great perspectives and much excitement!  :-)

Thank you,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 01 Dec 2019 16:26:02 GMT) Full text and rfc822 format available.

Message #11 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Timothy Sample <samplet <at> ngyro.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sun, 01 Dec 2019 11:25:03 -0500
Hi Ludovic,

Ludovic Courtès <ludo <at> gnu.org> writes:

> Hello Janneke & Timothy!
>
> Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:
>
>> Gash has now reached pretty good posix compliance, which really helps to
>> run configure scripts and sh snippets in autotool-generated Makefiles.
>>
>> Gash Core Utils currently comes with
>>
>>    [, awk, basename, cat, chmod, cmp, compress, cp, cut, diff, dirname,
>>    egrep, expr, false, fgrep, find, gawk, grep, gzip, head, ln, ls,
>>    mkdir, mv, pwd, reboot, rm, rmdir, sed, sleep, sort, tar, test,
>>    touch, tr, true, uname, uniq, wc, and which.
>
> Woow, excellent!  Do I get it right that “Gash Core Utils” refers to the
> ‘gash-core-utils’ branch at <https://gitlab.com/janneke/gash>?

For now (see below).

> So this is meant to be a Gash extension but separate from Gash.  Looks
> really cool!

My long term plan for it is to be a really, really souped-up version of
“(guix build utils)”.  Hopefully we can get reasonably nice Scheme
interfaces for common shell idioms and then build the utilities on top
of those interfaces.  Then, the library could be useful independent of
the external utilities, Gash, and bootstrapping.  It’s nowhere near
there yet, but that’s the goal.

> Do you plan to eventually merge it on Savannah?  (I expected to find the
> code there.  :-)

Yes!  I plan to add another repo as part of the Gash project.  This will
happen when it’s closer to an initial release.  (I’ll have to audit all
of the copyright notices, etc., which I find easier to do while getting
ready for a release.)

> BTW, I posted (unimportant) patches to
> <https://lists.gnu.org/archive/html/gash-devel/2019-06/threads.html>.)

I was not subscribed to gash-devel!  :P  I was an admin, but that
doesn’t mean I was subscribed.  Sorry!

I noticed the install path patch that you added to the Guix package, so
it’s already fixed.  So far I’ve been too busy to test on Guile 3....

> [...]

> How much work would be necessary at first sign to implement what’s
> missing from (gash core-utils awk) to cover what modern-time ‘configure’
> scripts need?
>
> I suppose having a good(-enough) Awk implementation in Gash would be
> more fruitful in the long run than reviving old C packages.  Notably, I
> think you’d rather keep Mes’ libc as small as possible IMO, because it’s
> cumbersome to write and maintain, which means more Scheme and less C.
> But obviously, this all depends on the difficulty of implementing the
> missing bits of Awk.

I agree this is the right way to go in the long run.  I’m pretty sure
we’ll get there, but I haven’t worked on the Awk implementation yet.

In around one week (with the usual caveats around software estimates), I
will make another release of Gash, at which point it will be “good
enough” for the bootstrapping task.  After that, I plan to turn my
attention to the other utilities.  There’s a lot of administrative work
and cleaning to do there, so it will take some time to get a release
out.  Once that happens I’ll move on to removing some intermediate
bootstrapping packages like early versions of Gawk, etc.


-- Tim




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 01 Dec 2019 16:57:01 GMT) Full text and rfc822 format available.

Message #14 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sun, 01 Dec 2019 17:55:57 +0100
Timothy Sample writes:

Hi Ludo, Timothy,

>>> Gash Core Utils currently comes with
>>>
>>>    [, awk, basename, cat, chmod, cmp, compress, cp, cut, diff, dirname,
>>>    egrep, expr, false, fgrep, find, gawk, grep, gzip, head, ln, ls,
>>>    mkdir, mv, pwd, reboot, rm, rmdir, sed, sleep, sort, tar, test,
>>>    touch, tr, true, uname, uniq, wc, and which.
>>
>> Woow, excellent!  Do I get it right that “Gash Core Utils” refers to the
>> ‘gash-core-utils’ branch at <https://gitlab.com/janneke/gash>?
>
> For now (see below).

Right.  I think that while Timothy mostly worked on the Gash core to
make it a full sh alternative, I have been working in parallel to add
all utilities that are needed during bootstrap.  That worked out pretty
OK, but now things need to come together again.

>> So this is meant to be a Gash extension but separate from Gash.  Looks
>> really cool!
>
> My long term plan for it is to be a really, really souped-up version of
> “(guix build utils)”.  Hopefully we can get reasonably nice Scheme
> interfaces for common shell idioms and then build the utilities on top
> of those interfaces.  Then, the library could be useful independent of
> the external utilities, Gash, and bootstrapping.  It’s nowhere near
> there yet, but that’s the goal.

Yes, a nice shell library for Guile was Rutger's initial goal for the
pre-merger Gash.  I have diverged quite a bit from that path by
focussing on the actual shell tools -- so while some of the library
functionality is starting to fall in place, an actual nice library
interface is still mostly missing...

>> Do you plan to eventually merge it on Savannah?  (I expected to find the
>> code there.  :-)
>
> Yes!  I plan to add another repo as part of the Gash project.  This will
> happen when it’s closer to an initial release.  (I’ll have to audit all
> of the copyright notices, etc., which I find easier to do while getting
> ready for a release.)

Great!

>> BTW, I posted (unimportant) patches to
>> <https://lists.gnu.org/archive/html/gash-devel/2019-06/threads.html>.)
>
> I was not subscribed to gash-devel!  :P  I was an admin, but that
> doesn’t mean I was subscribed.  Sorry!
>
> I noticed the install path patch that you added to the Guix package, so
> it’s already fixed.  So far I’ve been too busy to test on Guile 3....

Oh, I only subscribed in September 22nd...oops!

>> I suppose having a good(-enough) Awk implementation in Gash would be
>> more fruitful in the long run than reviving old C packages.  Notably, I
>> think you’d rather keep Mes’ libc as small as possible IMO, because it’s
>> cumbersome to write and maintain, which means more Scheme and less C.
>> But obviously, this all depends on the difficulty of implementing the
>> missing bits of Awk.
>
> I agree this is the right way to go in the long run.  I’m pretty sure
> we’ll get there, but I haven’t worked on the Awk implementation yet.

I think the parser is OK, and I also thought the Awk we needed was only
assignments and printing columns.  I started with a naive AST-interpreter
that worked a bit too well but has a flawed design (I don't remember the
details).  We need some good tests and probably a re-thinking and
re-implementatation of the `run-commands' and `awk-expression'
functions.

> In around one week (with the usual caveats around software estimates), I
> will make another release of Gash, at which point it will be “good
> enough” for the bootstrapping task.  After that, I plan to turn my
> attention to the other utilities.  There’s a lot of administrative work
> and cleaning to do there, so it will take some time to get a release
> out.  Once that happens I’ll move on to removing some intermediate
> bootstrapping packages like early versions of Gawk, etc.

Great!
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 01 Dec 2019 17:15:02 GMT) Full text and rfc822 format available.

Message #17 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sun, 01 Dec 2019 18:14:23 +0100
Hi, Timothy!

Timothy Sample <samplet <at> ngyro.com> skribis:

> Ludovic Courtès <ludo <at> gnu.org> writes:

[...]

>> So this is meant to be a Gash extension but separate from Gash.  Looks
>> really cool!
>
> My long term plan for it is to be a really, really souped-up version of
> “(guix build utils)”.  Hopefully we can get reasonably nice Scheme
> interfaces for common shell idioms and then build the utilities on top
> of those interfaces.  Then, the library could be useful independent of
> the external utilities, Gash, and bootstrapping.  It’s nowhere near
> there yet, but that’s the goal.

I agree with the goal!  Having a nice Scheme interface for all these
things, perhaps with inspiration from scsh, would be great, and
certainly nicer than the very ad-hoc (guix build utils).

>> Do you plan to eventually merge it on Savannah?  (I expected to find the
>> code there.  :-)
>
> Yes!  I plan to add another repo as part of the Gash project.  This will
> happen when it’s closer to an initial release.  (I’ll have to audit all
> of the copyright notices, etc., which I find easier to do while getting
> ready for a release.)

Alright!

>> BTW, I posted (unimportant) patches to
>> <https://lists.gnu.org/archive/html/gash-devel/2019-06/threads.html>.)
>
> I was not subscribed to gash-devel!  :P  I was an admin, but that
> doesn’t mean I was subscribed.  Sorry!
>
> I noticed the install path patch that you added to the Guix package, so
> it’s already fixed.  So far I’ve been too busy to test on Guile 3....

Heheh, no problem.  :-)

> In around one week (with the usual caveats around software estimates), I
> will make another release of Gash, at which point it will be “good
> enough” for the bootstrapping task.  After that, I plan to turn my
> attention to the other utilities.  There’s a lot of administrative work
> and cleaning to do there, so it will take some time to get a release
> out.  Once that happens I’ll move on to removing some intermediate
> bootstrapping packages like early versions of Gawk, etc.

Sounds good, thanks a lot for all the work!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 01 Dec 2019 17:22:02 GMT) Full text and rfc822 format available.

Message #20 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sun, 01 Dec 2019 18:21:05 +0100
Ludovic Courtès writes:

> (gash core-utils awk *) look quite fancy though!  I thought ‘configure’
> only used a couple of trivial Awk snippets and after checking, I see
> that there are in fact relatively fancy Awk programs in there.  Bah.

Yeah, that's what I thought...and then it grew.

> How much work would be necessary at first sign to implement what’s
> missing from (gash core-utils awk) to cover what modern-time ‘configure’
> scripts need?
>
> I suppose having a good(-enough) Awk implementation in Gash would be
> more fruitful in the long run than reviving old C packages.  Notably, I
> think you’d rather keep Mes’ libc as small as possible IMO, because it’s
> cumbersome to write and maintain, which means more Scheme and less C.
> But obviously, this all depends on the difficulty of implementing the
> missing bits of Awk.
>
>> Another thing to note is that we do not have bzip2, lzip or xz and that
>> after 2009 some crucial tools (coreutils, diffutils, grep, sed, ...)
>> start shipping .xz or .lz tarballs only.  While bzip2 can be built early
>> in the bootstrap, I only managed to build xz with a fairly recent gcc
>> (4.6).
>
> At worst, we could host gzipped versions of these tarballs (or ask the
> maintainers to do so).

Hmm.  Yes.  Somehow I would prefer if we could convince upstream to help
us bootstrap their package (dare I say to "do the right thing"?).

> Or we could have a fixed-output derivation that does the lzip->gzip
> conversion (creating a “soft” circular dependency), which is kinda
> equivalent to hosting a gzipped versions when substitutes are available.
>
> Longer-term, we could also consider having a derivation built-in that
> would allow us to “cheat” (i.e., take gz/lzip/xz/bzip2 for granted),
> though it’s not so nice.

Okay, that's many options.  Maybe we could brainstorm a bit about
possible attack vectors against the different "solutions", WDYT?

>> When we manage to merge this, we will have halved the bootstrap seed
>> again, reducing the bootstrap seed to under 60MB.
>
> Woohoo!

Yes, I feel so too; thanks!

>> ERROR: ld.so: object '/tmp/guix-build-acl-2.2.53.drv-0/acl-2.2.53/.libs/libtestlookup.so' from LD_PRELOAD cannot be preloaded: ignored. != ~
>
> We should have a debugging session for this one.  :-)

I would love that; I looked into it today but there is some dependency
that I do not grok yet...

> What about building the ‘core’ subset of ‘wip-bootstrap’ on berlin?
> That would allow others to experiment (and debug!) without having to
> build it all by themselves.

Yes, that would be great!

> At some point we should consider “cleaning up” the history of that
> branch.  For instance, I see commit “326d45561c gnu: Add gash.  WIP”,
> which adds ‘guile-gash’ when there’s already a ‘gash’ package (and it
> also modifies ‘jupyter-guile-kernel’).

Hmm, I cannot find that commit; are you looking at `wip-bootstrap' on
savannah?  I remember something like that and probably rewrote it.

Anyway, the Gash and Gash Core Utils commits are marked WIP because I
want to replace them with a proper release by Timothy :-)

> We’ll also have to collectively review the new bootstrap tarballs.

Yes, sure.

> Anyway, great perspectives and much excitement!  :-)

Very happily enjoying the excitement you share, thanks :-)
Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Fri, 06 Dec 2019 16:16:02 GMT) Full text and rfc822 format available.

Message #23 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Fri, 06 Dec 2019 07:53:32 +0100
Jan Nieuwenhuizen writes:

>>> ERROR: ld.so: object
>>> '/tmp/guix-build-acl-2.2.53.drv-0/acl-2.2.53/.libs/libtestlookup.so'
>>> from LD_PRELOAD cannot be preloaded: ignored. != ~
>>
>> We should have a debugging session for this one.  :-)
>
> I would love that; I looked into it today but there is some dependency
> that I do not grok yet...

Just a heads-up: In a productive and fun debugging session yesterday in
Marrakech Ludo and I got a fix in for this!  This means that I now
consider `wip-bootstrap' functionally correct.

Earlier this week, Ludo and I found a way to not add Gash or Gash Core
Utils to the Bootstrap Seed and instead build them as first packages
using %bootstrap-guile.

We will be working on a rewrite of wip-bootstrap to have it use Gash
wip-0.2.0+ and include a number of cleanups.

Here is my current TODO list

  * base bootstrap on Gash wip-0.20.0 (plus janneke's 2 patches)
  * remove %bootstrap-gash (with gash core utils) from bootstrap seed
  * look at possibility/cost to avoid updating the mescc-tools and mes
    bootstrap binaries
  * remove any generated (gitlab/github) tarballs
  * look into awkward combined bash+gash dependency of glibc-mesboot0
  * add some %bootX-input stages, at least when reached gcc-mesboot1
  * commit messages: Use "Use Gash instead of coretutils&co." rather than
    "Scheme-only bootstrap."
  * some smaller cleanups and nitpicks here and there

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 08 Dec 2019 03:01:01 GMT) Full text and rfc822 format available.

Message #26 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sat, 07 Dec 2019 23:31:37 +0100
Hello!

Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:

> Just a heads-up: In a productive and fun debugging session yesterday in
> Marrakech Ludo and I got a fix in for this!  This means that I now
> consider `wip-bootstrap' functionally correct.
>
> Earlier this week, Ludo and I found a way to not add Gash or Gash Core
> Utils to the Bootstrap Seed and instead build them as first packages
> using %bootstrap-guile.
>
> We will be working on a rewrite of wip-bootstrap to have it use Gash
> wip-0.2.0+ and include a number of cleanups.

It looks like this is all shaping up nicely, and I’m happy to see we’ve
already (!) reached that point where we can again strip some of the
binary seeds!  Kudos, comrades!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 08 Dec 2019 20:09:01 GMT) Full text and rfc822 format available.

Message #29 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: 38390 <at> debbugs.gnu.org
Subject: Re: Gash 0.2.0
Date: Sun, 08 Dec 2019 21:08:27 +0100
Timothy Sample writes:

[cc: 38390 <at> debbugs.gnu.org]

Hi Timothy,

> There’s one last thing I need from you (besides an OK on your test
> whenever you get to it).

I just found two things I'm not too happy about.  Both stem from using
our bootstrap guile-2.0.9.  Previously, I used guile-2.0 (= 2.0.14) to
compile the .go files that were later used during bootstrap.

When I build `gash-boot' on my real experimental `wip-boot' guix branch
at gitlab (https://gitlab.com/janneke/guix/tree/wip-boot) like so

    ./pre-inst-env guix build -e '(@@ (gnu packages commencement) gash-boot)'

and run gash, I get:

--8<---------------cut here---------------start------------->8---
20:44:25 janneke <at> dundal:~/src/guix/wip-boot [env]
$ ./pre-inst-env guix build -e '(@@ (gnu packages commencement) gash-boot)'
/gnu/store/hihv59xdpqfnijb5i2mi0g8wg09qphi4-gash-boot-0.1.50-c1b8
20:44:32 janneke <at> dundal:~/src/guix/wip-boot [env]
$ /gnu/store/8bl7iqln6qaajr3d6kwbyvkzy2gvr4rf-gash-boot-0.1.50-c1b8/bin/gash --version
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 242
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 241
%% Shift/Reduce conflict (shift 25, reduce 50) on 'LESS' in state 236
%% Shift/Reduce conflict (shift 24, reduce 50) on 'GREAT' in state 236
%% Shift/Reduce conflict (shift 23, reduce 50) on 'LPAREN' in state 236
%% Shift/Reduce conflict (shift 241, reduce 50) on 'DSEMI' in state 236
%% Shift/Reduce conflict (shift 22, reduce 50) on 'DLESS' in state 236
%% Shift/Reduce conflict (shift 21, reduce 50) on 'DGREAT' in state 236
%% Shift/Reduce conflict (shift 20, reduce 50) on 'LESSAND' in state 236
%% Shift/Reduce conflict (shift 19, reduce 50) on 'GREATAND' in state 236
%% Shift/Reduce conflict (shift 18, reduce 50) on 'LESSGREAT' in state 236
%% Shift/Reduce conflict (shift 17, reduce 50) on 'DLESSDASH' in state 236
%% Shift/Reduce conflict (shift 16, reduce 50) on 'CLOBBER' in state 236
%% Shift/Reduce conflict (shift 15, reduce 50) on 'If' in state 236
%% Shift/Reduce conflict (shift 14, reduce 50) on 'Case' in state 236
%% Shift/Reduce conflict (shift 13, reduce 50) on 'While' in state 236
%% Shift/Reduce conflict (shift 12, reduce 50) on 'Until' in state 236
%% Shift/Reduce conflict (shift 11, reduce 50) on 'For' in state 236
%% Shift/Reduce conflict (shift 10, reduce 50) on 'Lbrace' in state 236
%% Shift/Reduce conflict (shift 9, reduce 50) on 'Bang' in state 236
%% Shift/Reduce conflict (shift 8, reduce 50) on 'WORD' in state 236
%% Shift/Reduce conflict (shift 7, reduce 50) on 'ASSIGNMENT-WORD' in state 236
%% Shift/Reduce conflict (shift 6, reduce 50) on 'NAME' in state 236
%% Shift/Reduce conflict (shift 5, reduce 50) on 'IO-NUMBER' in state 236
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 234
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 233
%% Shift/Reduce conflict (shift 180, reduce 60) on 'Else' in state 232
%% Shift/Reduce conflict (shift 179, reduce 60) on 'Elif' in state 232
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 231
%% Shift/Reduce conflict (shift 25, reduce 48) on 'LESS' in state 228
%% Shift/Reduce conflict (shift 24, reduce 48) on 'GREAT' in state 228
%% Shift/Reduce conflict (shift 23, reduce 48) on 'LPAREN' in state 228
%% Shift/Reduce conflict (shift 233, reduce 48) on 'DSEMI' in state 228
%% Shift/Reduce conflict (shift 22, reduce 48) on 'DLESS' in state 228
%% Shift/Reduce conflict (shift 21, reduce 48) on 'DGREAT' in state 228
%% Shift/Reduce conflict (shift 20, reduce 48) on 'LESSAND' in state 228
%% Shift/Reduce conflict (shift 19, reduce 48) on 'GREATAND' in state 228
%% Shift/Reduce conflict (shift 18, reduce 48) on 'LESSGREAT' in state 228
%% Shift/Reduce conflict (shift 17, reduce 48) on 'DLESSDASH' in state 228
%% Shift/Reduce conflict (shift 16, reduce 48) on 'CLOBBER' in state 228
%% Shift/Reduce conflict (shift 15, reduce 48) on 'If' in state 228
%% Shift/Reduce conflict (shift 14, reduce 48) on 'Case' in state 228
%% Shift/Reduce conflict (shift 13, reduce 48) on 'While' in state 228
%% Shift/Reduce conflict (shift 12, reduce 48) on 'Until' in state 228
%% Shift/Reduce conflict (shift 11, reduce 48) on 'For' in state 228
%% Shift/Reduce conflict (shift 10, reduce 48) on 'Lbrace' in state 228
%% Shift/Reduce conflict (shift 9, reduce 48) on 'Bang' in state 228
%% Shift/Reduce conflict (shift 8, reduce 48) on 'WORD' in state 228
%% Shift/Reduce conflict (shift 7, reduce 48) on 'ASSIGNMENT-WORD' in state 228
%% Shift/Reduce conflict (shift 6, reduce 48) on 'NAME' in state 228
%% Shift/Reduce conflict (shift 5, reduce 48) on 'IO-NUMBER' in state 228
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 226
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 219
%% Shift/Reduce conflict (shift 25, reduce 67) on 'LESS' in state 216
%% Shift/Reduce conflict (shift 24, reduce 67) on 'GREAT' in state 216
%% Shift/Reduce conflict (shift 22, reduce 67) on 'DLESS' in state 216
%% Shift/Reduce conflict (shift 21, reduce 67) on 'DGREAT' in state 216
%% Shift/Reduce conflict (shift 20, reduce 67) on 'LESSAND' in state 216
%% Shift/Reduce conflict (shift 19, reduce 67) on 'GREATAND' in state 216
%% Shift/Reduce conflict (shift 18, reduce 67) on 'LESSGREAT' in state 216
%% Shift/Reduce conflict (shift 17, reduce 67) on 'DLESSDASH' in state 216
%% Shift/Reduce conflict (shift 16, reduce 67) on 'CLOBBER' in state 216
%% Shift/Reduce conflict (shift 5, reduce 67) on 'IO-NUMBER' in state 216
%% Shift/Reduce conflict (shift 25, reduce 66) on 'LESS' in state 183
%% Shift/Reduce conflict (shift 24, reduce 66) on 'GREAT' in state 183
%% Shift/Reduce conflict (shift 22, reduce 66) on 'DLESS' in state 183
%% Shift/Reduce conflict (shift 21, reduce 66) on 'DGREAT' in state 183
%% Shift/Reduce conflict (shift 20, reduce 66) on 'LESSAND' in state 183
%% Shift/Reduce conflict (shift 19, reduce 66) on 'GREATAND' in state 183
%% Shift/Reduce conflict (shift 18, reduce 66) on 'LESSGREAT' in state 183
%% Shift/Reduce conflict (shift 17, reduce 66) on 'DLESSDASH' in state 183
%% Shift/Reduce conflict (shift 16, reduce 66) on 'CLOBBER' in state 183
%% Shift/Reduce conflict (shift 5, reduce 66) on 'IO-NUMBER' in state 183
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 180
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 179
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 164
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 157
%% Shift/Reduce conflict (shift 25, reduce 30) on 'LESS' in state 156
%% Shift/Reduce conflict (shift 24, reduce 30) on 'GREAT' in state 156
%% Shift/Reduce conflict (shift 23, reduce 30) on 'LPAREN' in state 156
%% Shift/Reduce conflict (shift 22, reduce 30) on 'DLESS' in state 156
%% Shift/Reduce conflict (shift 21, reduce 30) on 'DGREAT' in state 156
%% Shift/Reduce conflict (shift 20, reduce 30) on 'LESSAND' in state 156
%% Shift/Reduce conflict (shift 19, reduce 30) on 'GREATAND' in state 156
%% Shift/Reduce conflict (shift 18, reduce 30) on 'LESSGREAT' in state 156
%% Shift/Reduce conflict (shift 17, reduce 30) on 'DLESSDASH' in state 156
%% Shift/Reduce conflict (shift 16, reduce 30) on 'CLOBBER' in state 156
%% Shift/Reduce conflict (shift 15, reduce 30) on 'If' in state 156
%% Shift/Reduce conflict (shift 14, reduce 30) on 'Case' in state 156
%% Shift/Reduce conflict (shift 13, reduce 30) on 'While' in state 156
%% Shift/Reduce conflict (shift 12, reduce 30) on 'Until' in state 156
%% Shift/Reduce conflict (shift 11, reduce 30) on 'For' in state 156
%% Shift/Reduce conflict (shift 10, reduce 30) on 'Lbrace' in state 156
%% Shift/Reduce conflict (shift 9, reduce 30) on 'Bang' in state 156
%% Shift/Reduce conflict (shift 8, reduce 30) on 'WORD' in state 156
%% Shift/Reduce conflict (shift 7, reduce 30) on 'ASSIGNMENT-WORD' in state 156
%% Shift/Reduce conflict (shift 6, reduce 30) on 'NAME' in state 156
%% Shift/Reduce conflict (shift 5, reduce 30) on 'IO-NUMBER' in state 156
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 149
%% Shift/Reduce conflict (shift 25, reduce 71) on 'LESS' in state 146
%% Shift/Reduce conflict (shift 24, reduce 71) on 'GREAT' in state 146
%% Shift/Reduce conflict (shift 22, reduce 71) on 'DLESS' in state 146
%% Shift/Reduce conflict (shift 21, reduce 71) on 'DGREAT' in state 146
%% Shift/Reduce conflict (shift 20, reduce 71) on 'LESSAND' in state 146
%% Shift/Reduce conflict (shift 19, reduce 71) on 'GREATAND' in state 146
%% Shift/Reduce conflict (shift 18, reduce 71) on 'LESSGREAT' in state 146
%% Shift/Reduce conflict (shift 17, reduce 71) on 'DLESSDASH' in state 146
%% Shift/Reduce conflict (shift 16, reduce 71) on 'CLOBBER' in state 146
%% Shift/Reduce conflict (shift 97, reduce 71) on 'If' in state 146
%% Shift/Reduce conflict (shift 96, reduce 71) on 'Then' in state 146
%% Shift/Reduce conflict (shift 95, reduce 71) on 'Else' in state 146
%% Shift/Reduce conflict (shift 94, reduce 71) on 'Elif' in state 146
%% Shift/Reduce conflict (shift 93, reduce 71) on 'Fi' in state 146
%% Shift/Reduce conflict (shift 92, reduce 71) on 'Do' in state 146
%% Shift/Reduce conflict (shift 91, reduce 71) on 'Done' in state 146
%% Shift/Reduce conflict (shift 90, reduce 71) on 'Case' in state 146
%% Shift/Reduce conflict (shift 89, reduce 71) on 'Esac' in state 146
%% Shift/Reduce conflict (shift 88, reduce 71) on 'While' in state 146
%% Shift/Reduce conflict (shift 87, reduce 71) on 'Until' in state 146
%% Shift/Reduce conflict (shift 86, reduce 71) on 'For' in state 146
%% Shift/Reduce conflict (shift 85, reduce 71) on 'Lbrace' in state 146
%% Shift/Reduce conflict (shift 84, reduce 71) on 'Rbrace' in state 146
%% Shift/Reduce conflict (shift 83, reduce 71) on 'Bang' in state 146
%% Shift/Reduce conflict (shift 82, reduce 71) on 'In' in state 146
%% Shift/Reduce conflict (shift 81, reduce 71) on 'WORD' in state 146
%% Shift/Reduce conflict (shift 80, reduce 71) on 'ASSIGNMENT-WORD' in state 146
%% Shift/Reduce conflict (shift 79, reduce 71) on 'NAME' in state 146
%% Shift/Reduce conflict (shift 5, reduce 71) on 'IO-NUMBER' in state 146
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 143
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 135
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 134
%% Shift/Reduce conflict (shift 127, reduce 29) on 'AND' in state 131
%% Shift/Reduce conflict (shift 126, reduce 29) on 'SEMI' in state 131
%% Shift/Reduce conflict (shift 1, reduce 29) on 'NEWLINE' in state 131
%% Shift/Reduce conflict (shift 25, reduce 105) on 'LESS' in state 130
%% Shift/Reduce conflict (shift 24, reduce 105) on 'GREAT' in state 130
%% Shift/Reduce conflict (shift 23, reduce 105) on 'LPAREN' in state 130
%% Shift/Reduce conflict (shift 22, reduce 105) on 'DLESS' in state 130
%% Shift/Reduce conflict (shift 21, reduce 105) on 'DGREAT' in state 130
%% Shift/Reduce conflict (shift 20, reduce 105) on 'LESSAND' in state 130
%% Shift/Reduce conflict (shift 19, reduce 105) on 'GREATAND' in state 130
%% Shift/Reduce conflict (shift 18, reduce 105) on 'LESSGREAT' in state 130
%% Shift/Reduce conflict (shift 17, reduce 105) on 'DLESSDASH' in state 130
%% Shift/Reduce conflict (shift 16, reduce 105) on 'CLOBBER' in state 130
%% Shift/Reduce conflict (shift 15, reduce 105) on 'If' in state 130
%% Shift/Reduce conflict (shift 14, reduce 105) on 'Case' in state 130
%% Shift/Reduce conflict (shift 13, reduce 105) on 'While' in state 130
%% Shift/Reduce conflict (shift 12, reduce 105) on 'Until' in state 130
%% Shift/Reduce conflict (shift 11, reduce 105) on 'For' in state 130
%% Shift/Reduce conflict (shift 10, reduce 105) on 'Lbrace' in state 130
%% Shift/Reduce conflict (shift 9, reduce 105) on 'Bang' in state 130
%% Shift/Reduce conflict (shift 8, reduce 105) on 'WORD' in state 130
%% Shift/Reduce conflict (shift 7, reduce 105) on 'ASSIGNMENT-WORD' in state 130
%% Shift/Reduce conflict (shift 6, reduce 105) on 'NAME' in state 130
%% Shift/Reduce conflict (shift 51, reduce 105) on 'NEWLINE' in state 130
%% Shift/Reduce conflict (shift 5, reduce 105) on 'IO-NUMBER' in state 130
%% Shift/Reduce conflict (shift 25, reduce 6) on 'LESS' in state 128
%% Shift/Reduce conflict (shift 24, reduce 6) on 'GREAT' in state 128
%% Shift/Reduce conflict (shift 23, reduce 6) on 'LPAREN' in state 128
%% Shift/Reduce conflict (shift 22, reduce 6) on 'DLESS' in state 128
%% Shift/Reduce conflict (shift 21, reduce 6) on 'DGREAT' in state 128
%% Shift/Reduce conflict (shift 20, reduce 6) on 'LESSAND' in state 128
%% Shift/Reduce conflict (shift 19, reduce 6) on 'GREATAND' in state 128
%% Shift/Reduce conflict (shift 18, reduce 6) on 'LESSGREAT' in state 128
%% Shift/Reduce conflict (shift 17, reduce 6) on 'DLESSDASH' in state 128
%% Shift/Reduce conflict (shift 16, reduce 6) on 'CLOBBER' in state 128
%% Shift/Reduce conflict (shift 15, reduce 6) on 'If' in state 128
%% Shift/Reduce conflict (shift 14, reduce 6) on 'Case' in state 128
%% Shift/Reduce conflict (shift 13, reduce 6) on 'While' in state 128
%% Shift/Reduce conflict (shift 12, reduce 6) on 'Until' in state 128
%% Shift/Reduce conflict (shift 11, reduce 6) on 'For' in state 128
%% Shift/Reduce conflict (shift 10, reduce 6) on 'Lbrace' in state 128
%% Shift/Reduce conflict (shift 9, reduce 6) on 'Bang' in state 128
%% Shift/Reduce conflict (shift 8, reduce 6) on 'WORD' in state 128
%% Shift/Reduce conflict (shift 7, reduce 6) on 'ASSIGNMENT-WORD' in state 128
%% Shift/Reduce conflict (shift 6, reduce 6) on 'NAME' in state 128
%% Shift/Reduce conflict (shift 5, reduce 6) on 'IO-NUMBER' in state 128
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 125
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 124
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 123
%% Shift/Reduce conflict (shift 25, reduce 19) on 'LESS' in state 122
%% Shift/Reduce conflict (shift 24, reduce 19) on 'GREAT' in state 122
%% Shift/Reduce conflict (shift 22, reduce 19) on 'DLESS' in state 122
%% Shift/Reduce conflict (shift 21, reduce 19) on 'DGREAT' in state 122
%% Shift/Reduce conflict (shift 20, reduce 19) on 'LESSAND' in state 122
%% Shift/Reduce conflict (shift 19, reduce 19) on 'GREATAND' in state 122
%% Shift/Reduce conflict (shift 18, reduce 19) on 'LESSGREAT' in state 122
%% Shift/Reduce conflict (shift 17, reduce 19) on 'DLESSDASH' in state 122
%% Shift/Reduce conflict (shift 16, reduce 19) on 'CLOBBER' in state 122
%% Shift/Reduce conflict (shift 5, reduce 19) on 'IO-NUMBER' in state 122
%% Shift/Reduce conflict (shift 25, reduce 74) on 'LESS' in state 119
%% Shift/Reduce conflict (shift 24, reduce 74) on 'GREAT' in state 119
%% Shift/Reduce conflict (shift 22, reduce 74) on 'DLESS' in state 119
%% Shift/Reduce conflict (shift 21, reduce 74) on 'DGREAT' in state 119
%% Shift/Reduce conflict (shift 20, reduce 74) on 'LESSAND' in state 119
%% Shift/Reduce conflict (shift 19, reduce 74) on 'GREATAND' in state 119
%% Shift/Reduce conflict (shift 18, reduce 74) on 'LESSGREAT' in state 119
%% Shift/Reduce conflict (shift 17, reduce 74) on 'DLESSDASH' in state 119
%% Shift/Reduce conflict (shift 16, reduce 74) on 'CLOBBER' in state 119
%% Shift/Reduce conflict (shift 97, reduce 74) on 'If' in state 119
%% Shift/Reduce conflict (shift 96, reduce 74) on 'Then' in state 119
%% Shift/Reduce conflict (shift 95, reduce 74) on 'Else' in state 119
%% Shift/Reduce conflict (shift 94, reduce 74) on 'Elif' in state 119
%% Shift/Reduce conflict (shift 93, reduce 74) on 'Fi' in state 119
%% Shift/Reduce conflict (shift 92, reduce 74) on 'Do' in state 119
%% Shift/Reduce conflict (shift 91, reduce 74) on 'Done' in state 119
%% Shift/Reduce conflict (shift 90, reduce 74) on 'Case' in state 119
%% Shift/Reduce conflict (shift 89, reduce 74) on 'Esac' in state 119
%% Shift/Reduce conflict (shift 88, reduce 74) on 'While' in state 119
%% Shift/Reduce conflict (shift 87, reduce 74) on 'Until' in state 119
%% Shift/Reduce conflict (shift 86, reduce 74) on 'For' in state 119
%% Shift/Reduce conflict (shift 85, reduce 74) on 'Lbrace' in state 119
%% Shift/Reduce conflict (shift 84, reduce 74) on 'Rbrace' in state 119
%% Shift/Reduce conflict (shift 83, reduce 74) on 'Bang' in state 119
%% Shift/Reduce conflict (shift 82, reduce 74) on 'In' in state 119
%% Shift/Reduce conflict (shift 81, reduce 74) on 'WORD' in state 119
%% Shift/Reduce conflict (shift 80, reduce 74) on 'ASSIGNMENT-WORD' in state 119
%% Shift/Reduce conflict (shift 79, reduce 74) on 'NAME' in state 119
%% Shift/Reduce conflict (shift 5, reduce 74) on 'IO-NUMBER' in state 119
%% Shift/Reduce conflict (shift 25, reduce 72) on 'LESS' in state 116
%% Shift/Reduce conflict (shift 24, reduce 72) on 'GREAT' in state 116
%% Shift/Reduce conflict (shift 22, reduce 72) on 'DLESS' in state 116
%% Shift/Reduce conflict (shift 21, reduce 72) on 'DGREAT' in state 116
%% Shift/Reduce conflict (shift 20, reduce 72) on 'LESSAND' in state 116
%% Shift/Reduce conflict (shift 19, reduce 72) on 'GREATAND' in state 116
%% Shift/Reduce conflict (shift 18, reduce 72) on 'LESSGREAT' in state 116
%% Shift/Reduce conflict (shift 17, reduce 72) on 'DLESSDASH' in state 116
%% Shift/Reduce conflict (shift 16, reduce 72) on 'CLOBBER' in state 116
%% Shift/Reduce conflict (shift 97, reduce 72) on 'If' in state 116
%% Shift/Reduce conflict (shift 96, reduce 72) on 'Then' in state 116
%% Shift/Reduce conflict (shift 95, reduce 72) on 'Else' in state 116
%% Shift/Reduce conflict (shift 94, reduce 72) on 'Elif' in state 116
%% Shift/Reduce conflict (shift 93, reduce 72) on 'Fi' in state 116
%% Shift/Reduce conflict (shift 92, reduce 72) on 'Do' in state 116
%% Shift/Reduce conflict (shift 91, reduce 72) on 'Done' in state 116
%% Shift/Reduce conflict (shift 90, reduce 72) on 'Case' in state 116
%% Shift/Reduce conflict (shift 89, reduce 72) on 'Esac' in state 116
%% Shift/Reduce conflict (shift 88, reduce 72) on 'While' in state 116
%% Shift/Reduce conflict (shift 87, reduce 72) on 'Until' in state 116
%% Shift/Reduce conflict (shift 86, reduce 72) on 'For' in state 116
%% Shift/Reduce conflict (shift 85, reduce 72) on 'Lbrace' in state 116
%% Shift/Reduce conflict (shift 84, reduce 72) on 'Rbrace' in state 116
%% Shift/Reduce conflict (shift 83, reduce 72) on 'Bang' in state 116
%% Shift/Reduce conflict (shift 82, reduce 72) on 'In' in state 116
%% Shift/Reduce conflict (shift 81, reduce 72) on 'WORD' in state 116
%% Shift/Reduce conflict (shift 80, reduce 72) on 'ASSIGNMENT-WORD' in state 116
%% Shift/Reduce conflict (shift 79, reduce 72) on 'NAME' in state 116
%% Shift/Reduce conflict (shift 5, reduce 72) on 'IO-NUMBER' in state 116
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 98
%% Shift/Reduce conflict (shift 135, reduce 106) on 'SEMI' in state 76
%% Shift/Reduce conflict (shift 134, reduce 106) on 'Do' in state 76
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 76
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 50
%% Shift/Reduce conflict (shift 127, reduce 7) on 'AND' in state 48
%% Shift/Reduce conflict (shift 126, reduce 7) on 'SEMI' in state 48
%% Shift/Reduce conflict (shift 25, reduce 18) on 'LESS' in state 43
%% Shift/Reduce conflict (shift 24, reduce 18) on 'GREAT' in state 43
%% Shift/Reduce conflict (shift 22, reduce 18) on 'DLESS' in state 43
%% Shift/Reduce conflict (shift 21, reduce 18) on 'DGREAT' in state 43
%% Shift/Reduce conflict (shift 20, reduce 18) on 'LESSAND' in state 43
%% Shift/Reduce conflict (shift 19, reduce 18) on 'GREATAND' in state 43
%% Shift/Reduce conflict (shift 18, reduce 18) on 'LESSGREAT' in state 43
%% Shift/Reduce conflict (shift 17, reduce 18) on 'DLESSDASH' in state 43
%% Shift/Reduce conflict (shift 16, reduce 18) on 'CLOBBER' in state 43
%% Shift/Reduce conflict (shift 5, reduce 18) on 'IO-NUMBER' in state 43
%% Shift/Reduce conflict (shift 25, reduce 75) on 'LESS' in state 32
%% Shift/Reduce conflict (shift 24, reduce 75) on 'GREAT' in state 32
%% Shift/Reduce conflict (shift 22, reduce 75) on 'DLESS' in state 32
%% Shift/Reduce conflict (shift 21, reduce 75) on 'DGREAT' in state 32
%% Shift/Reduce conflict (shift 20, reduce 75) on 'LESSAND' in state 32
%% Shift/Reduce conflict (shift 19, reduce 75) on 'GREATAND' in state 32
%% Shift/Reduce conflict (shift 18, reduce 75) on 'LESSGREAT' in state 32
%% Shift/Reduce conflict (shift 17, reduce 75) on 'DLESSDASH' in state 32
%% Shift/Reduce conflict (shift 16, reduce 75) on 'CLOBBER' in state 32
%% Shift/Reduce conflict (shift 97, reduce 75) on 'If' in state 32
%% Shift/Reduce conflict (shift 96, reduce 75) on 'Then' in state 32
%% Shift/Reduce conflict (shift 95, reduce 75) on 'Else' in state 32
%% Shift/Reduce conflict (shift 94, reduce 75) on 'Elif' in state 32
%% Shift/Reduce conflict (shift 93, reduce 75) on 'Fi' in state 32
%% Shift/Reduce conflict (shift 92, reduce 75) on 'Do' in state 32
%% Shift/Reduce conflict (shift 91, reduce 75) on 'Done' in state 32
%% Shift/Reduce conflict (shift 90, reduce 75) on 'Case' in state 32
%% Shift/Reduce conflict (shift 89, reduce 75) on 'Esac' in state 32
%% Shift/Reduce conflict (shift 88, reduce 75) on 'While' in state 32
%% Shift/Reduce conflict (shift 87, reduce 75) on 'Until' in state 32
%% Shift/Reduce conflict (shift 86, reduce 75) on 'For' in state 32
%% Shift/Reduce conflict (shift 85, reduce 75) on 'Lbrace' in state 32
%% Shift/Reduce conflict (shift 84, reduce 75) on 'Rbrace' in state 32
%% Shift/Reduce conflict (shift 83, reduce 75) on 'Bang' in state 32
%% Shift/Reduce conflict (shift 82, reduce 75) on 'In' in state 32
%% Shift/Reduce conflict (shift 81, reduce 75) on 'WORD' in state 32
%% Shift/Reduce conflict (shift 80, reduce 75) on 'ASSIGNMENT-WORD' in state 32
%% Shift/Reduce conflict (shift 79, reduce 75) on 'NAME' in state 32
%% Shift/Reduce conflict (shift 5, reduce 75) on 'IO-NUMBER' in state 32
%% Shift/Reduce conflict (shift 25, reduce 73) on 'LESS' in state 31
%% Shift/Reduce conflict (shift 24, reduce 73) on 'GREAT' in state 31
%% Shift/Reduce conflict (shift 22, reduce 73) on 'DLESS' in state 31
%% Shift/Reduce conflict (shift 21, reduce 73) on 'DGREAT' in state 31
%% Shift/Reduce conflict (shift 20, reduce 73) on 'LESSAND' in state 31
%% Shift/Reduce conflict (shift 19, reduce 73) on 'GREATAND' in state 31
%% Shift/Reduce conflict (shift 18, reduce 73) on 'LESSGREAT' in state 31
%% Shift/Reduce conflict (shift 17, reduce 73) on 'DLESSDASH' in state 31
%% Shift/Reduce conflict (shift 16, reduce 73) on 'CLOBBER' in state 31
%% Shift/Reduce conflict (shift 8, reduce 73) on 'WORD' in state 31
%% Shift/Reduce conflict (shift 113, reduce 73) on 'ASSIGNMENT-WORD' in state 31
%% Shift/Reduce conflict (shift 112, reduce 73) on 'NAME' in state 31
%% Shift/Reduce conflict (shift 5, reduce 73) on 'IO-NUMBER' in state 31
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 26
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 15
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 13
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 12
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 10
%% Shift/Reduce conflict (shift 25, reduce 3) on 'LESS' in state 2
%% Shift/Reduce conflict (shift 24, reduce 3) on 'GREAT' in state 2
%% Shift/Reduce conflict (shift 23, reduce 3) on 'LPAREN' in state 2
%% Shift/Reduce conflict (shift 22, reduce 3) on 'DLESS' in state 2
%% Shift/Reduce conflict (shift 21, reduce 3) on 'DGREAT' in state 2
%% Shift/Reduce conflict (shift 20, reduce 3) on 'LESSAND' in state 2
%% Shift/Reduce conflict (shift 19, reduce 3) on 'GREATAND' in state 2
%% Shift/Reduce conflict (shift 18, reduce 3) on 'LESSGREAT' in state 2
%% Shift/Reduce conflict (shift 17, reduce 3) on 'DLESSDASH' in state 2
%% Shift/Reduce conflict (shift 16, reduce 3) on 'CLOBBER' in state 2
%% Shift/Reduce conflict (shift 15, reduce 3) on 'If' in state 2
%% Shift/Reduce conflict (shift 14, reduce 3) on 'Case' in state 2
%% Shift/Reduce conflict (shift 13, reduce 3) on 'While' in state 2
%% Shift/Reduce conflict (shift 12, reduce 3) on 'Until' in state 2
%% Shift/Reduce conflict (shift 11, reduce 3) on 'For' in state 2
%% Shift/Reduce conflict (shift 10, reduce 3) on 'Lbrace' in state 2
%% Shift/Reduce conflict (shift 9, reduce 3) on 'Bang' in state 2
%% Shift/Reduce conflict (shift 8, reduce 3) on 'WORD' in state 2
%% Shift/Reduce conflict (shift 7, reduce 3) on 'ASSIGNMENT-WORD' in state 2
%% Shift/Reduce conflict (shift 6, reduce 3) on 'NAME' in state 2
%% Shift/Reduce conflict (shift 5, reduce 3) on 'IO-NUMBER' in state 2
%% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 0
Backtrace:
In ice-9/boot-9.scm:
3966: 19 [#<procedure 152f880 at ice-9/boot-9.scm:3961:3 ()>]
1645: 18 [%start-stack load-stack ...]
1650: 17 [#<procedure 1534540 ()>]
In unknown file:
   ?: 16 [primitive-load "/gnu/store/8bl7iqln6qaajr3d6kwbyvkzy2gvr4rf-gash-boot-0.1.50-c1b8/bin/gash"]
In ice-9/eval.scm:
 505: 15 [#<procedure 13fba20 at ice-9/eval.scm:499:4 (exp)> (define # # #)]
In ice-9/psyntax.scm:
1101: 14 [expand-top-sequence ((define (main args) (setenv "SHELL" #) ...)) () ...]
1259: 13 [#<procedure 1488120 at ice-9/psyntax.scm:1067:36 ()>]
1605: 12 [expand-simple-lambda (# . #) () (()) ...]
1509: 11 [parse ((# . #) (# . #)) () () ...]
In ice-9/boot-9.scm:
 625: 10 [map #<procedure 1538f60 at ice-9/psyntax.scm:1510:50 (x)> (# #)]
In ice-9/psyntax.scm:
1257: 9 [#<procedure 1538f60 at ice-9/psyntax.scm:1510:50 (x)> (# . #)]
1186: 8 [syntax-type (# #) (# #) (# # #) ...]
 579: 7 [syntax-type main (# #) (#) ...]
 293: 6 [get-global-definition-hook main (public gash gash)]
In ice-9/boot-9.scm:
2708: 5 [#<procedure 14a3f20 at ice-9/boot-9.scm:2696:4 (name #:optional autoload version #:key ensure)> # ...]
2981: 4 [try-module-autoload (gash gash) #f]
2320: 3 [save-module-excursion #<procedure 15389f0 at ice-9/boot-9.scm:2982:17 ()>]
3001: 2 [#<procedure 15389f0 at ice-9/boot-9.scm:2982:17 ()>]
In unknown file:
   ?: 1 [primitive-load-path "gash/gash" ...]
   ?: 0 [setlocale 6 ""]

ERROR: In procedure setlocale:
ERROR: In procedure setlocale: Invalid argument
[1]20:44:45 janneke <at> dundal:~/src/guix/wip-boot [env]
$ 
--8<---------------cut here---------------end--------------->8---

If I set LC_ALL=C 

    LC_ALL=C /gnu/store/8bl7iqln6qaajr3d6kwbyvkzy2gvr4rf-gash-boot-0.1.50-c1b8/bin/gash --version

then I (of course) still get the Shift/Reduce warnings and everything
"seems" to work.  It seems that the empty locale is problematic for
guile 2.0.9 or our bootstrap environment.  I just tried a patch and
pushed to my wip-0.2.0.

I am less cheerful about the Shift/Reduce warnings; I am afraid they
might break something somewhere during the bootstrap build.  Any ideas
why these surface at this time?  I'll play some more with
lalr.upstream.scm versions...

> Assuming all of the above is okay, Gash 0.2.0 is ready.  \o/

Yay, scheme-only bootstrap, here we come \o/

Thanks for all your amazing work!
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 08 Dec 2019 22:12:01 GMT) Full text and rfc822 format available.

Message #32 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Timothy Sample <samplet <at> ngyro.com>
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: 38390 <at> debbugs.gnu.org
Subject: Re: Gash 0.2.0
Date: Sun, 08 Dec 2019 17:11:10 -0500
[Message part 1 (text/plain, inline)]
Hi Jan,

Jan Nieuwenhuizen <janneke <at> gnu.org> writes:

> Timothy Sample writes:
>
> [cc: 38390 <at> debbugs.gnu.org]
>
> Hi Timothy,
>
>> There’s one last thing I need from you (besides an OK on your test
>> whenever you get to it).
>
> I just found two things I'm not too happy about.  Both stem from using
> our bootstrap guile-2.0.9.  Previously, I used guile-2.0 (= 2.0.14) to
> compile the .go files that were later used during bootstrap.

I did all of my bootstrapping tests with the bootstrap Guile.  I’ve
attached my package definition for reference (it belongs in
“commencement.scm”).  The reason I say this is to reassure you that
going from 2.0.14 to 2.0.9 shouldn’t be too disruptive.

> When I build `gash-boot' on my real experimental `wip-boot' guix branch
> at gitlab (https://gitlab.com/janneke/guix/tree/wip-boot) like so
>
>     ./pre-inst-env guix build -e '(@@ (gnu packages commencement) gash-boot)'
>
> and run gash, I get:
>
> 20:44:25 janneke <at> dundal:~/src/guix/wip-boot [env]
> $ ./pre-inst-env guix build -e '(@@ (gnu packages commencement) gash-boot)'
> /gnu/store/hihv59xdpqfnijb5i2mi0g8wg09qphi4-gash-boot-0.1.50-c1b8
> 20:44:32 janneke <at> dundal:~/src/guix/wip-boot [env]
> $ /gnu/store/8bl7iqln6qaajr3d6kwbyvkzy2gvr4rf-gash-boot-0.1.50-c1b8/bin/gash --version
> %% Shift/Reduce conflict (shift 1, reduce 106) on 'NEWLINE' in state 242
>

Snipping a thousand more “Shift/Reduce” warnings....

>
> Backtrace:
> In ice-9/boot-9.scm:
> 3966: 19 [#<procedure 152f880 at ice-9/boot-9.scm:3961:3 ()>]
> 1645: 18 [%start-stack load-stack ...]
> 1650: 17 [#<procedure 1534540 ()>]
> In unknown file:
>    ?: 16 [primitive-load "/gnu/store/8bl7iqln6qaajr3d6kwbyvkzy2gvr4rf-gash-boot-0.1.50-c1b8/bin/gash"]
> In ice-9/eval.scm:
>  505: 15 [#<procedure 13fba20 at ice-9/eval.scm:499:4 (exp)> (define # # #)]
> In ice-9/psyntax.scm:
> 1101: 14 [expand-top-sequence ((define (main args) (setenv "SHELL" #) ...)) () ...]
> 1259: 13 [#<procedure 1488120 at ice-9/psyntax.scm:1067:36 ()>]
> 1605: 12 [expand-simple-lambda (# . #) () (()) ...]
> 1509: 11 [parse ((# . #) (# . #)) () () ...]
> In ice-9/boot-9.scm:
>  625: 10 [map #<procedure 1538f60 at ice-9/psyntax.scm:1510:50 (x)> (# #)]
> In ice-9/psyntax.scm:
> 1257: 9 [#<procedure 1538f60 at ice-9/psyntax.scm:1510:50 (x)> (# . #)]
> 1186: 8 [syntax-type (# #) (# #) (# # #) ...]
>  579: 7 [syntax-type main (# #) (#) ...]
>  293: 6 [get-global-definition-hook main (public gash gash)]
> In ice-9/boot-9.scm:
> 2708: 5 [#<procedure 14a3f20 at ice-9/boot-9.scm:2696:4 (name #:optional autoload version #:key ensure)> # ...]
> 2981: 4 [try-module-autoload (gash gash) #f]
> 2320: 3 [save-module-excursion #<procedure 15389f0 at ice-9/boot-9.scm:2982:17 ()>]
> 3001: 2 [#<procedure 15389f0 at ice-9/boot-9.scm:2982:17 ()>]
> In unknown file:
>    ?: 1 [primitive-load-path "gash/gash" ...]
>    ?: 0 [setlocale 6 ""]
>
> ERROR: In procedure setlocale:
> ERROR: In procedure setlocale: Invalid argument
> [1]20:44:45 janneke <at> dundal:~/src/guix/wip-boot [env]
> $ 
>
> If I set LC_ALL=C 
>
>     LC_ALL=C
> /gnu/store/8bl7iqln6qaajr3d6kwbyvkzy2gvr4rf-gash-boot-0.1.50-c1b8/bin/gash
> --version
>
> then I (of course) still get the Shift/Reduce warnings and everything
> "seems" to work.  It seems that the empty locale is problematic for
> guile 2.0.9 or our bootstrap environment.  I just tried a patch and
> pushed to my wip-0.2.0.

I added (at the last minute) the call to “setlocale” to normalize some
differences between Guile 2 and Guile 2.2 (I was getting test failures
without it).  From reading Guile’s NEWS, version 2.2 started
initializing the locale automatically, so I “backported” that to Guile 2
by calling “setlocale” with an empty string (as discussed in the
manual).  Anyway, this is definitely my fault!  Perhaps it should try
that and then fall back on “(setlocale LC_ALL "C")” if there is a
problem.  I’ll figure it out before releasing.

> I am less cheerful about the Shift/Reduce warnings; I am afraid they
> might break something somewhere during the bootstrap build.  Any ideas
> why these surface at this time?  I'll play some more with
> lalr.upstream.scm versions...

My understanding is that these are spurious.  There is upstream commit
92b64f9b3c02b0086a4aea7cbe7dc38376768150 which is not included in Guile
2.0.9 but included in later versions (maybe starting with 2.0.10 – I
don’t recall).  The commit message is “No more unexpected shift-reduce
conflicts with LR driver.”  See <https://github.com/schemeway/lalr-scm>.
Since the newer versions are fine with the parser, and I have parsed
oodles of shell script using Guile 2.0.9, I think the these warnings are
just the result of a bug.  :)


-- Tim

[gash-boot.scm (text/plain, attachment)]

Added tag(s) patch. Request was from Ludovic Courtès <ludo <at> gnu.org> to control <at> debbugs.gnu.org. (Sun, 08 Dec 2019 22:21:02 GMT) Full text and rfc822 format available.

Severity set to 'important' from 'normal' Request was from Ludovic Courtès <ludo <at> gnu.org> to control <at> debbugs.gnu.org. (Sun, 08 Dec 2019 22:21:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Mon, 09 Dec 2019 06:38:02 GMT) Full text and rfc822 format available.

Message #39 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: 38390 <at> debbugs.gnu.org
Subject: Re: Gash 0.2.0
Date: Mon, 09 Dec 2019 07:37:29 +0100
Timothy Sample writes:

Hi Timothy,

>> I just found two things I'm not too happy about.  Both stem from using
>> our bootstrap guile-2.0.9.  Previously, I used guile-2.0 (= 2.0.14) to
>> compile the .go files that were later used during bootstrap.
>
> I did all of my bootstrapping tests with the bootstrap Guile.  I’ve
> attached my package definition for reference (it belongs in
> “commencement.scm”).  The reason I say this is to reassure you that
> going from 2.0.14 to 2.0.9 shouldn’t be too disruptive.

Ah, that's great.

>> then I (of course) still get the Shift/Reduce warnings and everything
>> "seems" to work.  It seems that the empty locale is problematic for
>> guile 2.0.9 or our bootstrap environment.  I just tried a patch and
>> pushed to my wip-0.2.0.
>
> I added (at the last minute) the call to “setlocale” to normalize some
> differences between Guile 2 and Guile 2.2 (I was getting test failures
> without it).  From reading Guile’s NEWS, version 2.2 started
> initializing the locale automatically, so I “backported” that to Guile 2
> by calling “setlocale” with an empty string (as discussed in the
> manual).  Anyway, this is definitely my fault!  Perhaps it should try
> that and then fall back on “(setlocale LC_ALL "C")” if there is a
> problem.  I’ll figure it out before releasing.

OK, thanks.

>> I am less cheerful about the Shift/Reduce warnings; I am afraid they
>> might break something somewhere during the bootstrap build.  Any ideas
>> why these surface at this time?  I'll play some more with
>> lalr.upstream.scm versions...
>
> My understanding is that these are spurious.

That's what I was hoping...although

> There is upstream commit
> 92b64f9b3c02b0086a4aea7cbe7dc38376768150 which is not included in Guile
> 2.0.9 but included in later versions (maybe starting with 2.0.10 – I
> don’t recall).  The commit message is “No more unexpected shift-reduce
> conflicts with LR driver.”  See <https://github.com/schemeway/lalr-scm>.
> Since the newer versions are fine with the parser, and I have parsed
> oodles of shell script using Guile 2.0.9, I think the these warnings are
> just the result of a bug.  :)

...if something in our bootstrap build is asserting that stderr is
empty, they might break on these spurious warnings?

Would it be a good idea to include this fixed lalr when the guile
version is too old?  Note that in the bootstrap build, I am using
the `guile-build-system' (no sh or make yet when bootstrapping our first
gash :-).

> -- Tim
>
> (define gash-boot

Ah, nice; thanks.

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Wed, 11 Dec 2019 18:26:02 GMT) Full text and rfc822 format available.

Message #42 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Wed, 11 Dec 2019 19:25:01 +0100
Jan Nieuwenhuizen writes:

Hi!

> We will be working on a rewrite of wip-bootstrap to have it use Gash
> wip-0.2.0+ and include a number of cleanups.

I have just hard-reset wip-bootstrap for the next iteration!

> Here is my current TODO list
>
>   * base bootstrap on Gash wip-0.20.0 (plus janneke's 2 patches)

Done.  I just built `hello', so Gash 0.2.0 here we come (afaic).

>   * remove %bootstrap-gash (with gash core utils) from bootstrap seed

Done; thanks to Ludo's insights about %boostrap-guile+guild, we were
able to do this.  The `gash-boot' and `gash-core-utils-boot' packages no
longer appear in shells.scm; they are built during bootstrap using the
guile-build-system.  I currently add lalr.upstream as an extra origin
to gash core utils from

--8<---------------cut here---------------start------------->8---
"http://git.savannah.gnu.org/cgit/guile.git/plain/module/system/base/lalr.upstream.scm?h=v2.0.9"
--8<---------------cut here---------------end--------------->8---

>   * look at possibility/cost to avoid updating the mescc-tools and mes
>     bootstrap binaries

This proved possible (dare I say feasible?).  What was needed is

 - allow mescc (0.21+) to work with old mescc-tools 0.5.2
 - add %bootstrap-mes-rewired, to remove MesCC from mes-0.19 and
   enable it to run 0.21+ MesCC

%bootstrap-mes-rewired uses this hack
--8<---------------cut here---------------start------------->8---
         (add-after 'unpack 'patch-%moduledir
           (lambda _
             (copy-file "module/mescc.scm" "module/mescc.scm.orig")
             (substitute* "module/mescc.scm"
               (("^  \\(mes-use-module \\(mescc mescc\\)" all)
                (string-append "
  ;; MesCC from mes-0.21
  (let* ((self (car (command-line)))
         (prefix (dirname (dirname self))))
    (set! %moduledir (string-append prefix \"/mes/module/\"))
    (setenv \"%numbered_arch\" \"true\"))

  ;; A fixed map, from mes-0.21
  (define (map f h . t)
    (if (or (null? h)
            (and (pair? t) (null? (car t)))
            (and (pair? t) (pair? (cdr t)) (null? (cadr t)))) '()
        (if (null? t) (cons (f (car h)) (map f (cdr h)))
            (if (null? (cdr t))
                (cons (f (car h) (caar t)) (map f (cdr h) (cdar t)))
                (if (null? (cddr t))
                    (cons (f (car h) (caar t) (caadr t)) (map f (cdr h) (cdar t) (cdadr t)))
                    (if (null? (cdddr t))
                        (cons (f (car h) (caar t) (caadr t) (car (caddr t))) (map f (cdr h) (cdar t) (cdadr t) (cdr (caddr t))))
                        (error 'unsupported (cons* 'map-5: f h t))) )))))
" all)))
             #t))
--8<---------------cut here---------------end--------------->8---

...not particularly nice/clean/auditable; but "it works".  WDYT?
On a related note, should mescc 0.21 include some kind of `hook' make
this kind of change easier to make?

This snippet could also be pushed "upstream", to mes-0.21+...but meh...

>   * remove any generated (gitlab/github) tarballs

Done (but please check!).

>   * look into awkward combined bash+gash dependency of glibc-mesboot0

Haven't addressed this.  I quickly looked with Ludo at this, not really
into it though.  WYDT?

>   * add some %bootX-input stages, at least when reached gcc-mesboot1

Done.  Numbering of bootX, mesbootX could possibly made to make more
sense.  However, I also would like to get rid of the whole 2.95 story
some time soon and then many things change again.  I could do with some
help/inspiration here.

>   * commit messages: Use "Use Gash instead of coretutils&co." rather than
>     "Scheme-only bootstrap."

Done.

>   * some smaller cleanups and nitpicks here and there

Removed "ed-1.4" again (using a revert commit, that we can drop).

I kept most earlier commits that add to the bootstrap seed and added
revert commits.  If we like what we have, we can remove both the commits
that introduced these and their reverts.

We are really getting there!  I would like to do a rewrite once Gash
0.2.0 is out.  What to do about Gash Core Utils?  I also plan to do a
rewrite once MES 0.22 is out.

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 15 Dec 2019 21:34:01 GMT) Full text and rfc822 format available.

Message #45 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sun, 15 Dec 2019 22:33:47 +0100
[Message part 1 (text/plain, inline)]
Howdy!

Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:

>> We will be working on a rewrite of wip-bootstrap to have it use Gash
>> wip-0.2.0+ and include a number of cleanups.
>
> I have just hard-reset wip-bootstrap for the next iteration!

Yay!

>> Here is my current TODO list
>>
>>   * base bootstrap on Gash wip-0.20.0 (plus janneke's 2 patches)
>
> Done.  I just built `hello', so Gash 0.2.0 here we come (afaic).
>
>>   * remove %bootstrap-gash (with gash core utils) from bootstrap seed
>
> Done; thanks to Ludo's insights about %boostrap-guile+guild, we were
> able to do this.  The `gash-boot' and `gash-core-utils-boot' packages no
> longer appear in shells.scm; they are built during bootstrap using the
> guile-build-system.  I currently add lalr.upstream as an extra origin
> to gash core utils from
>
> "http://git.savannah.gnu.org/cgit/guile.git/plain/module/system/base/lalr.upstream.scm?h=v2.0.9"

Awesome.

BTW, I’d suggest this for clarity:

[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 9e3cecc174..d4cf58a7eb 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -266,6 +266,7 @@
                       ,(origin
                          (method url-fetch)
                          (uri (string-append "http://git.savannah.gnu.org/cgit/guile.git/plain/module/system/base/lalr.upstream.scm?h=v2.0.9"))
+                         (file-name "lalr.upstream.scm")
                          (sha256
                           (base32
                            "0h7gyjj8nr2qrgzwma146s7l22scp8bbcqzdy9wqf12bgyhbw7d5"))))))
[Message part 3 (text/plain, inline)]
>>   * look at possibility/cost to avoid updating the mescc-tools and mes
>>     bootstrap binaries
>
> This proved possible (dare I say feasible?).  What was needed is
>
>  - allow mescc (0.21+) to work with old mescc-tools 0.5.2
>  - add %bootstrap-mes-rewired, to remove MesCC from mes-0.19 and
>    enable it to run 0.21+ MesCC
>
> %bootstrap-mes-rewired uses this hack
>
>          (add-after 'unpack 'patch-%moduledir
>            (lambda _
>              (copy-file "module/mescc.scm" "module/mescc.scm.orig")
>              (substitute* "module/mescc.scm"
>                (("^  \\(mes-use-module \\(mescc mescc\\)" all)
>                 (string-append "
>   ;; MesCC from mes-0.21
>   (let* ((self (car (command-line)))
>          (prefix (dirname (dirname self))))
>     (set! %moduledir (string-append prefix \"/mes/module/\"))
>     (setenv \"%numbered_arch\" \"true\"))
>
>   ;; A fixed map, from mes-0.21
>   (define (map f h . t)
>     (if (or (null? h)
>             (and (pair? t) (null? (car t)))
>             (and (pair? t) (pair? (cdr t)) (null? (cadr t)))) '()
>         (if (null? t) (cons (f (car h)) (map f (cdr h)))
>             (if (null? (cdr t))
>                 (cons (f (car h) (caar t)) (map f (cdr h) (cdar t)))
>                 (if (null? (cddr t))
>                     (cons (f (car h) (caar t) (caadr t)) (map f (cdr h) (cdar t) (cdadr t)))
>                     (if (null? (cdddr t))
>                         (cons (f (car h) (caar t) (caadr t) (car (caddr t))) (map f (cdr h) (cdar t) (cdadr t) (cdr (caddr t))))
>                         (error 'unsupported (cons* 'map-5: f h t))) )))))
> " all)))
>              #t))
>
> ...not particularly nice/clean/auditable; but "it works".  WDYT?

‘caddr’, loooove it!  ;-)

It seems to me that mescc.scm in 0.21 only use the two-argument ‘map’,
no?  In that case I guess we could go with a two-argument, fixed-arity
version that would have fewer cdadrs caddrs and caadrs?  Just sayin’.
:-)

> On a related note, should mescc 0.21 include some kind of `hook' make
> this kind of change easier to make?

Good question!  During the summit, Vagrant (I think?) asked whether Mes
and MesCC should be separated.  I think in this case it would have been
beneficial to have them distributed separately, no?  It might be worth
looking at which parts change frequently to determine what to keep as
part of the ‘mes’ package itself.

Thoughts?

>>   * remove any generated (gitlab/github) tarballs
>
> Done (but please check!).

LGTM!

>>   * look into awkward combined bash+gash dependency of glibc-mesboot0
>
> Haven't addressed this.  I quickly looked with Ludo at this, not really
> into it though.  WYDT?

Hmm, dunno.  I can take a look later.

>>   * add some %bootX-input stages, at least when reached gcc-mesboot1
>
> Done.  Numbering of bootX, mesbootX could possibly made to make more
> sense.  However, I also would like to get rid of the whole 2.95 story
> some time soon and then many things change again.  I could do with some
> help/inspiration here.

I think it’s good to have ‘%bootX-inputs’ for when we’re going to reuse
more or less the same input set several times, because it clarifies that
there’s a “plateau” of sorts, but I guess it’s not always appropriate
early on in the graph.

Another thing we discussed was the growth of the dependency graph:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix graph -e '(@@ (gnu packages commencement) coreutils-final)' | grep 'label =' | wc -l
177
$ guix graph -e '(@@ (gnu packages commencement) coreutils-final)' | grep 'label =' | wc -l
76
--8<---------------cut here---------------end--------------->8---

Clearly we’re adding way more nodes than we mean to.

For example, you can remove the call to ‘package-with-bootstrap-guile’
for ‘bash-mesboot’ (down to 153 nodes) and the one for
‘gcc-core-mesboot1’ (down to 121) and the one for ‘binutils-mesboot’
(down to 87), and I think at this point we’re done and the graph has a
lovely shape.  :-)

It makes a noticeable difference from a performance viewpoint (see
<https://lists.gnu.org/archive/html/guix-devel/2019-10/msg00350.html>.)

Also, you can leave out calls to ‘bootstrap-origin’ for origins without
a snippet and without patches (it’s purely stylistic though.)

> We are really getting there!  I would like to do a rewrite once Gash
> 0.2.0 is out.  What to do about Gash Core Utils?  I also plan to do a
> rewrite once MES 0.22 is out.

I think we should probably wait for the Gash and Gash Core Utils
releases so we can refer to them directly.  How does that sound to you,
Timothy?

Thanks!

Ludo’.

Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 15 Dec 2019 22:40:02 GMT) Full text and rfc822 format available.

Message #48 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Timothy Sample <samplet <at> ngyro.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sun, 15 Dec 2019 17:39:28 -0500
Hi Ludo,

Ludovic Courtès <ludo <at> gnu.org> writes:

> Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:
>
>> We are really getting there!  I would like to do a rewrite once Gash
>> 0.2.0 is out.  What to do about Gash Core Utils?  I also plan to do a
>> rewrite once MES 0.22 is out.
>
> I think we should probably wait for the Gash and Gash Core Utils
> releases so we can refer to them directly.  How does that sound to you,
> Timothy?

I’m planning on releasing Gash tonight, so that should be okay.  :D

For the utilities, it might take some time (especially since we are
running up against the holidays).  My current plan is to do it as
quickly as possible, meaning that I will focus on the bare minimum for a
first release.  Even then, it won’t be speedy: besides cleaning up
what’s there and setting up the build scripts, I will have to coordinate
with the folks at Savannah to get another Git repo.

Even if it takes a few weeks for a release, I think it makes sense to
wait.  This whole project has taken years!  What’s a couple of weeks?
:)


-- Tim




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sun, 15 Dec 2019 22:47:02 GMT) Full text and rfc822 format available.

Message #51 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Brett Gilio <brettg <at> posteo.net>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 38390 <at> debbugs.gnu.org,
 Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Sun, 15 Dec 2019 16:45:44 -0600
Timothy Sample <samplet <at> ngyro.com> writes:

>
> I’m planning on releasing Gash tonight, so that should be okay.  :D


Yes!

-- 
Brett M. Gilio
Homepage -- https://scm.pw/
GNU Guix -- https://guix.gnu.org/




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Mon, 16 Dec 2019 06:36:01 GMT) Full text and rfc822 format available.

Message #54 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Mon, 16 Dec 2019 07:34:50 +0100
Timothy Sample writes:

Hi All,

>> Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:
>>
>>> We are really getting there!  I would like to do a rewrite once Gash
>>> 0.2.0 is out.  What to do about Gash Core Utils?  I also plan to do a
>>> rewrite once MES 0.22 is out.
>>
>> I think we should probably wait for the Gash and Gash Core Utils
>> releases so we can refer to them directly.  How does that sound to you,
>> Timothy?
>
> I’m planning on releasing Gash tonight, so that should be okay.  :D

\o/

> For the utilities, it might take some time (especially since we are
> running up against the holidays).  My current plan is to do it as
> quickly as possible, meaning that I will focus on the bare minimum for a
> first release.  Even then, it won’t be speedy: besides cleaning up
> what’s there and setting up the build scripts, I will have to coordinate
> with the folks at Savannah to get another Git repo.
>
> Even if it takes a few weeks for a release, I think it makes sense to
> wait.  This whole project has taken years!  What’s a couple of weeks?
> :)

I agree; no need to hurry, there is time.

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Mon, 16 Dec 2019 19:29:01 GMT) Full text and rfc822 format available.

Message #57 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Mon, 16 Dec 2019 20:28:02 +0100
Ludovic Courtès writes:

Hi!

>> I have just hard-reset wip-bootstrap for the next iteration!
>
> Yay!

and I did it again.

> Awesome.
>
> BTW, I’d suggest this for clarity:
> +                         (file-name "lalr.upstream.scm")

Ah, yes.  Added.

>>>   * look at possibility/cost to avoid updating the mescc-tools and mes
>>>     bootstrap binaries
>>
>> This proved possible (dare I say feasible?).  What was needed is
>>
>>  - allow mescc (0.21+) to work with old mescc-tools 0.5.2
>>  - add %bootstrap-mes-rewired, to remove MesCC from mes-0.19 and
>>    enable it to run 0.21+ MesCC
>>
>> %bootstrap-mes-rewired uses this hack
>>   ;; MesCC from mes-0.21
>>     (set! %moduledir (string-append prefix \"/mes/module/\"))
>>
>>   ;; A fixed map, from mes-0.21
>>   (define (map f h . t)
>
> ‘caddr’, loooove it!  ;-)
>
> It seems to me that mescc.scm in 0.21 only use the two-argument ‘map’,
> no?  In that case I guess we could go with a two-argument, fixed-arity
> version that would have fewer cdadrs caddrs and caadrs?  Just sayin’.
> :-)

Ah yes...well almost.  MesCC uses map3; so I cut only map4.

>> On a related note, should mescc 0.21 include some kind of `hook' make
>> this kind of change easier to make?
>
> Good question!  During the summit, Vagrant (I think?) asked whether Mes
> and MesCC should be separated.  I think in this case it would have been
> beneficial to have them distributed separately, no?  It might be worth
> looking at which parts change frequently to determine what to keep as
> part of the ‘mes’ package itself.
>
> Thoughts?

I've been "struggling" with this question a bit myself.  In this
particular instance it would not have helped much, since map was
broken and I would not have wanted to add a fix for that in mescc.

It would have helped switching to the newer mescc.  Keeping them in one
archive for now is a bit less work for me I think; it saves me managing
another dependency.  Possibly until mes can boot guile modules.  Until
mes can do that, mes needs to come with a "shadow *.mes" tree for module
inclusion, like it has for Nyacc too.  That's less than great, but
works...

I am open to other perspectives, though.

>>>   * look into awkward combined bash+gash dependency of glibc-mesboot0
>>
>> Haven't addressed this.  I quickly looked with Ludo at this, not really
>> into it though.  WYDT?
>
> Hmm, dunno.  I can take a look later.

Okay, great.  This issue still remains.  I will try to create a bug
report for Gash, I think Gash hangs while running configure, while
bash-mesboot* have trouble running make-syscalls.sh correctly.

I just realise that the mixture of bash/gawk/sed here is possibly one of
the things that was replaced by Python.  Bootstrapping-wise that seemed
like a very bad idea, but I may be starting to see the sanity in such a
choice.  It would be great if it were Guile, though, or else if Guile
could run this Python.

> Another thing we discussed was the growth of the dependency graph:
>
> $ ./pre-inst-env guix graph -e '(@@ (gnu packages commencement) coreutils-final)' | grep 'label =' | wc -l
> 177
> $ guix graph -e '(@@ (gnu packages commencement) coreutils-final)' | grep 'label =' | wc -l
> 76
>
> Clearly we’re adding way more nodes than we mean to.
>
> For example, you can remove the call to ‘package-with-bootstrap-guile’
> for ‘bash-mesboot’ (down to 153 nodes) and the one for
> ‘gcc-core-mesboot1’ (down to 121) and the one for ‘binutils-mesboot’
> (down to 87), and I think at this point we’re done and the graph has a
> lovely shape.  :-)

Oh, thank you!  Incorporated those changes and verified I got the 87
nodes too.

> Also, you can leave out calls to ‘bootstrap-origin’ for origins without
> a snippet and without patches (it’s purely stylistic though.)

Ah, I didn't realise that.  Removed most, if not all of them.

> I think we should probably wait for the Gash and Gash Core Utils
> releases so we can refer to them directly.  How does that sound to you,
> Timothy?

Incoroprated Gash 0.2.0!

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Wed, 18 Dec 2019 22:56:02 GMT) Full text and rfc822 format available.

Message #60 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Wed, 18 Dec 2019 23:55:13 +0100
Jan Nieuwenhuizen writes:

Hi,

A new step forward.

>>>>   * look into awkward combined bash+gash dependency of glibc-mesboot0
>>>
>>> Haven't addressed this.  I quickly looked with Ludo at this, not really
>>> into it though.  WYDT?
>>
>> Hmm, dunno.  I can take a look later.
>
> Okay, great.  This issue still remains.  I will try to create a bug
> report for Gash, I think Gash hangs while running configure, while
> bash-mesboot* have trouble running make-syscalls.sh correctly.

Good news.  bash-mesboot0 now compiles with either gash+gash-core-utils,
or with bash-mesboot0.

Gash' "test -L FILE" used to crash on non-existing files, not sure why
that made configure hang; but that's how I found and fixed it.

The problem with bash-mesboot0 turned out to be a Mes C Library problem,
related to buffered reads.  Buffered reads were introduced when working
on the Hurd.

Not clearing the read buffer on lseek, when lseek is not allowed (bash
uses the same: lseek (FD, 0, SEEK_CUR) to find out if it may seek),
fixes the problem.  That took me a couple of days to find, but very
happy 

--8<---------------cut here---------------start------------->8---
diff --git a/lib/linux/lseek.c b/lib/linux/lseek.c
index 94f2f9f7a..f71af59f5 100644
--- a/lib/linux/lseek.c
+++ b/lib/linux/lseek.c
@@ -24,9 +24,21 @@
 #include <stdio.h>
 #include <sys/types.h>
 
+#if !__MESC__ /* FIXME: We want bin/mes-mescc's x86-linux sha256sum to stay the same. */
+off_t
+_lseek (int filedes, off_t offset, int whence)
+{
+  return _sys_call3 (SYS_lseek, (int) filedes, (long) offset, (int) whence);
+}
+#endif
+
 off_t
 lseek (int filedes, off_t offset, int whence)
 {
+#if !__MESC__ /* FIXME: We want bin/mes-mescc's x86-linux sha256sum to stay the same. */
+  if (_lseek (filedes, 0, SEEK_CUR) == -1)
+    return -1;
+#endif
   size_t skip = __buffered_read_clear (filedes);
   if (whence == SEEK_CUR)
     offset -= skip;
--8<---------------cut here---------------end--------------->8---

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Thu, 19 Dec 2019 11:10:02 GMT) Full text and rfc822 format available.

Message #63 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap
Date: Thu, 19 Dec 2019 12:08:54 +0100
Hi!

Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:

> Good news.  bash-mesboot0 now compiles with either gash+gash-core-utils,
> or with bash-mesboot0.
>
> Gash' "test -L FILE" used to crash on non-existing files, not sure why
> that made configure hang; but that's how I found and fixed it.
>
> The problem with bash-mesboot0 turned out to be a Mes C Library problem,
> related to buffered reads.  Buffered reads were introduced when working
> on the Hurd.
>
> Not clearing the read buffer on lseek, when lseek is not allowed (bash
> uses the same: lseek (FD, 0, SEEK_CUR) to find out if it may seek),
> fixes the problem.  That took me a couple of days to find, but very
> happy 

Woow, wild!  Great that you found out!

Thank you,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Mon, 03 Feb 2020 17:38:02 GMT) Full text and rfc822 format available.

Message #66 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Timothy Sample <samplet <at> ngyro.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Mon, 03 Feb 2020 12:37:04 -0500
[Message part 1 (text/plain, inline)]
Hi Ludo,

(CC’ing Jan and bug#38390.)

We’re nearing a release for Gash-Utils, and while working on it I made
some changes to how the bootstrap Gash and Gash-Utils are built (on the
wip-bootstrap branch.)  Jan suggested that we get your opinion on the
changes, as you are behind the current '%bootstrap-guile+guild'
approach.

The very short story is that I found that the Scheme GZip code is being
maintained and works out-of-the-box on Guile 2.0.9 [1].  This made me
unsure about copying the code into Gash-Utils when maybe we could just
use it as a dependency.  Then, I realized that the library included a
simple Tar reader, and wondered how simple a program could be that could
handle 'tar xvf gash.tar.gz'.  It turns out pretty simple!  So I put the
program and all its dependencies in an a-list with a little loop that
writes them to disk, and made a self-extracting Scheme script that can
unpack compressed tarballs [2].

[1] https://github.com/weinholt/compression
[2] https://git.ngyro.com/bootar/

The other thing is that I always intended for Gash and Gash-Utils to be
built with a loop calling “compile-file”.  This avoids the need for
“guild” which in turn avoids “bash” (AIUI).

These patches update Gash-Utils, replace the binary “tar” with my
self-extracting Scheme implementation, and replace “guild” with
“compile-file”.  I think this simplifies the bootstrap processes, and I
really like getting rid of the references to “tar”, “bash”, and “xz”
(even though they are needed for the bootstrap Guile, it feels nice to
quarantine them there).

WDYT?


-- Tim

[0001-Rename-gash-core-utils-to-gash-utils.patch (text/x-patch, attachment)]
[0002-Simplify-bootstrap-Gash-and-Gash-Utils.patch (text/x-patch, attachment)]
[0003-Remove-bootstrap-guile-guild.patch (text/x-patch, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Wed, 05 Feb 2020 09:00:02 GMT) Full text and rfc822 format available.

Message #69 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Wed, 05 Feb 2020 09:58:50 +0100
Hello Timothy!

Timothy Sample <samplet <at> ngyro.com> skribis:

> We’re nearing a release for Gash-Utils, and while working on it I made
> some changes to how the bootstrap Gash and Gash-Utils are built (on the
> wip-bootstrap branch.)  Jan suggested that we get your opinion on the
> changes, as you are behind the current '%bootstrap-guile+guild'
> approach.

Thanks for reaching out to me!

> The very short story is that I found that the Scheme GZip code is being
> maintained and works out-of-the-box on Guile 2.0.9 [1].  This made me
> unsure about copying the code into Gash-Utils when maybe we could just
> use it as a dependency.  Then, I realized that the library included a
> simple Tar reader, and wondered how simple a program could be that could
> handle 'tar xvf gash.tar.gz'.  It turns out pretty simple!  So I put the
> program and all its dependencies in an a-list with a little loop that
> writes them to disk, and made a self-extracting Scheme script that can
> unpack compressed tarballs [2].

Woow, that is very nice!  So all of a sudden there’s an extra bunch of
binary seeds we can get rid of, woohoo!  I didn’t expect that even bzip2
and xz would be implemented.

> [2] https://git.ngyro.com/bootar/

Clean, short, and elegant; brilliant!

> The other thing is that I always intended for Gash and Gash-Utils to be
> built with a loop calling “compile-file”.  This avoids the need for
> “guild” which in turn avoids “bash” (AIUI).
>
> These patches update Gash-Utils, replace the binary “tar” with my
> self-extracting Scheme implementation, and replace “guild” with
> “compile-file”.  I think this simplifies the bootstrap processes, and I
> really like getting rid of the references to “tar”, “bash”, and “xz”
> (even though they are needed for the bootstrap Guile, it feels nice to
> quarantine them there).
>
> WDYT?

I think it’s perfect.

One comment that can be addressed later:

> From 2cec50928a4ff67df363322d2adfb6aaa5aedc83 Mon Sep 17 00:00:00 2001
> From: Timothy Sample <samplet <at> ngyro.com>
> Date: Mon, 3 Feb 2020 10:51:07 -0500
> Subject: [PATCH 2/3] Simplify bootstrap Gash and Gash-Utils.
>
> This change does three things.  First Gash-Utils is updated to
> 0.1.0-preview.  Then, the bootstrap Gash and Gash-Utils packages are
> arranged to be built without using 'guild'.  Finally, instead of
> using a binary 'tar' via 'bootstrap-executable' to extract Gash and
> Gash-Utils, a self-extracting Scheme implementation of 'tar' and
> 'gzip' is used instead.

[...]

> +(define (make-bootstrap-phases version scripts modules)
> +  "Create a form that modifies the standard GNU build phases so that
> +they build simple Guile programs using only the bootstrap Guile.  The
> +'.in' files in the directory MODULES are configured with VERSION, the
> +'.in' files in the directory SCRIPTS are configured with the bootstrap
> +Guile and its module and object directories, and the Scheme files in the
> +directory MODULES are compiled and installed."
> +  `(modify-phases %standard-phases
> +     (replace 'configure

Should this be factorized out in a (guix build gnu-bootstrap) module or
similar?  That would keep build-side code separate and would avoid
making ‘commencement.scm’ bigger.

I guess the only thing that remains to be done is changing the temporary
URLs to the self-extracting script & co., right?

Thanks a lot!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Wed, 05 Feb 2020 14:34:02 GMT) Full text and rfc822 format available.

Message #72 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Timothy Sample <samplet <at> ngyro.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Wed, 05 Feb 2020 09:32:59 -0500
Hello,

Ludovic Courtès <ludo <at> gnu.org> writes:

> Timothy Sample <samplet <at> ngyro.com> skribis:
>
> [...]
>
>> So I put the program and all its dependencies in an a-list with a
>> little loop that writes them to disk, and made a self-extracting
>> Scheme script that can unpack compressed tarballs [2].
>
> Woow, that is very nice!  So all of a sudden there’s an extra bunch of
> binary seeds we can get rid of, woohoo!  I didn’t expect that even bzip2
> and xz would be implemented.

I don’t think we could get rid of any binaries just yet.  We need Guile
to run Bootar and we can’t get Guile without the statically linked
“tar”, “xz”, “mkdir”, and “bash”.  This just removes some references to
them.  Although, it occurred to me that we could get something like
Bootar (perhaps further simplified) to run on Mes, in which case we
could use a statically linked Mes to unpack and wrap Guile.  That would
let us get rid of “%bootstrap-executables”.  (Note however that I tried
running Bootar in Mes for fun, and the extractor script – once it was
simplified – caused a segfault.)

BZip2 and XZ just barely work, by the way.  I implemented BZip2, but I
skipped over all the CRC checking.  XZ has a bug when called with input
from stdin, which is how Gash-Utils tries to call it.

>> [2] https://git.ngyro.com/bootar/
>
> Clean, short, and elegant; brilliant!

Thanks!

>> [...]
>>
>> WDYT?
>
> I think it’s perfect.

\o/

> One comment that can be addressed later:
>
>> From 2cec50928a4ff67df363322d2adfb6aaa5aedc83 Mon Sep 17 00:00:00 2001
>> From: Timothy Sample <samplet <at> ngyro.com>
>> Date: Mon, 3 Feb 2020 10:51:07 -0500
>> Subject: [PATCH 2/3] Simplify bootstrap Gash and Gash-Utils.
>>
>> This change does three things.  First Gash-Utils is updated to
>> 0.1.0-preview.  Then, the bootstrap Gash and Gash-Utils packages are
>> arranged to be built without using 'guild'.  Finally, instead of
>> using a binary 'tar' via 'bootstrap-executable' to extract Gash and
>> Gash-Utils, a self-extracting Scheme implementation of 'tar' and
>> 'gzip' is used instead.
>
> [...]
>
>> +(define (make-bootstrap-phases version scripts modules)
>> +  "Create a form that modifies the standard GNU build phases so that
>> +they build simple Guile programs using only the bootstrap Guile.  The
>> +'.in' files in the directory MODULES are configured with VERSION, the
>> +'.in' files in the directory SCRIPTS are configured with the bootstrap
>> +Guile and its module and object directories, and the Scheme files in the
>> +directory MODULES are compiled and installed."
>> +  `(modify-phases %standard-phases
>> +     (replace 'configure
>
> Should this be factorized out in a (guix build gnu-bootstrap) module or
> similar?  That would keep build-side code separate and would avoid
> making ‘commencement.scm’ bigger.

I would be happy to do that.  It’s nice having everything in one place,
but having a bootstrap build system would certainly make the packages
clearer.  I suppose it could also get rid of the implicit inputs for us
and use “%bootstrap-guile” by default.

> I guess the only thing that remains to be done is changing the temporary
> URLs to the self-extracting script & co., right?

Yup.  I’ll release both packages soon.

> Thanks a lot!

My pleasure!


-- Tim




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Wed, 05 Feb 2020 21:35:01 GMT) Full text and rfc822 format available.

Message #75 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Wed, 05 Feb 2020 22:33:53 +0100
Hello!

Timothy Sample <samplet <at> ngyro.com> skribis:

> Ludovic Courtès <ludo <at> gnu.org> writes:

[...]

>> Woow, that is very nice!  So all of a sudden there’s an extra bunch of
>> binary seeds we can get rid of, woohoo!  I didn’t expect that even bzip2
>> and xz would be implemented.
>
> I don’t think we could get rid of any binaries just yet.  We need Guile
> to run Bootar and we can’t get Guile without the statically linked
> “tar”, “xz”, “mkdir”, and “bash”.  This just removes some references to
> them.  Although, it occurred to me that we could get something like
> Bootar (perhaps further simplified) to run on Mes, in which case we
> could use a statically linked Mes to unpack and wrap Guile.  That would
> let us get rid of “%bootstrap-executables”.  (Note however that I tried
> running Bootar in Mes for fun, and the extractor script – once it was
> simplified – caused a segfault.)

Oh cool.  Being able to run Guile code on Mes sounds like a worthy goal
longer-term anyway, so hopefully we’ll get there!

> BZip2 and XZ just barely work, by the way.  I implemented BZip2, but I
> skipped over all the CRC checking.  XZ has a bug when called with input
> from stdin, which is how Gash-Utils tries to call it.

Heh, not so bad.

>>> +(define (make-bootstrap-phases version scripts modules)
>>> +  "Create a form that modifies the standard GNU build phases so that
>>> +they build simple Guile programs using only the bootstrap Guile.  The
>>> +'.in' files in the directory MODULES are configured with VERSION, the
>>> +'.in' files in the directory SCRIPTS are configured with the bootstrap
>>> +Guile and its module and object directories, and the Scheme files in the
>>> +directory MODULES are compiled and installed."
>>> +  `(modify-phases %standard-phases
>>> +     (replace 'configure
>>
>> Should this be factorized out in a (guix build gnu-bootstrap) module or
>> similar?  That would keep build-side code separate and would avoid
>> making ‘commencement.scm’ bigger.
>
> I would be happy to do that.  It’s nice having everything in one place,
> but having a bootstrap build system would certainly make the packages
> clearer.  I suppose it could also get rid of the implicit inputs for us
> and use “%bootstrap-guile” by default.

I doesn’t have to be a full-blown build system, because there might be
as much boilerplate as actual code, but simply moving the definitions of
phases in a separate file could help keep commencement.scm clear.

>> I guess the only thing that remains to be done is changing the temporary
>> URLs to the self-extracting script & co., right?
>
> Yup.  I’ll release both packages soon.

Great, thank you!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Thu, 06 Feb 2020 22:59:01 GMT) Full text and rfc822 format available.

Message #78 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Thu, 06 Feb 2020 23:58:28 +0100
Ludovic Courtès writes:

Hello!

I have rebased wip-bootstrap on core-updates that include your
commencements updates.

With your explanations on irc and studying your patch, I was able to
keep using your cleanups and do without the most ugly 'setenv stages.

So, wip-bootstrap on savannah is reset once again.

> Timothy Sample <samplet <at> ngyro.com> skribis:
>
>> Ludovic Courtès <ludo <at> gnu.org> writes:

>> I would be happy to do that.  It’s nice having everything in one place,
>> but having a bootstrap build system would certainly make the packages
>> clearer.  I suppose it could also get rid of the implicit inputs for us
>> and use “%bootstrap-guile” by default.
>
> I doesn’t have to be a full-blown build system, because there might be
> as much boilerplate as actual code, but simply moving the definitions of
> phases in a separate file could help keep commencement.scm clear.
>
>>> I guess the only thing that remains to be done is changing the temporary
>>> URLs to the self-extracting script & co., right?
>>
>> Yup.  I’ll release both packages soon.
>
> Great, thank you!

Yes, that's great!

@Timothy: I haven't included your previous patches on `wip-bootstrap',
feel free to push them to wip-bootstrap.

We are getting real close to merging this, I think.

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Fri, 07 Feb 2020 11:01:02 GMT) Full text and rfc822 format available.

Message #81 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: Timothy Sample <samplet <at> ngyro.com>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Fri, 07 Feb 2020 12:00:08 +0100
Hi,

Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:

> I have rebased wip-bootstrap on core-updates that include your
> commencements updates.
>
> With your explanations on irc and studying your patch, I was able to
> keep using your cleanups and do without the most ugly 'setenv stages.
>
> So, wip-bootstrap on savannah is reset once again.

Great, thanks for taking the time to rebase and adjust the code, and
apologies for all the trouble!  (Actually making this change to
commencement.scm wasn’t on my agenda, it’s one of the things that pop up
and give you a good excuse to avoid more boring stuff, I suppose…)

> @Timothy: I haven't included your previous patches on `wip-bootstrap',
> feel free to push them to wip-bootstrap.
>
> We are getting real close to merging this, I think.

This is exciting.  Let’s synchronize with Marius once the branch has
stabilized to see if this can go in ‘core-updates’ this time.

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sat, 08 Feb 2020 17:34:02 GMT) Full text and rfc822 format available.

Message #84 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Timothy Sample <samplet <at> ngyro.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Sat, 08 Feb 2020 12:33:12 -0500
Hello,

Ludovic Courtès <ludo <at> gnu.org> writes:

> Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:
>
>> @Timothy: I haven't included your previous patches on `wip-bootstrap',
>> feel free to push them to wip-bootstrap.
>>
>> We are getting real close to merging this, I think.
>
> This is exciting.  Let’s synchronize with Marius once the branch has
> stabilized to see if this can go in ‘core-updates’ this time.

Indeed!

I just pushed five commits to “wip-bootstrap”.  They are a little
different from the patches I sent.

For one, I followed Ludo’s advice and added a “gnu-bootstrap” module for
the build code.  That means I got rid of “make-bootstrap-phases” and
adjusted the packages accordingly.  It’s a little janky, but it does
clear up “commencement.scm”.

Bootar is released and saw some cosmetic improvements.  Notably, it
disables “escape-newlines” and uses “pretty-print”, making the SES file
easy to read for humans.  The SES file is still hosted on my server, but
at a stable URL.  Is it worrisome that it’s on my server?  I put a
mirror on Gitlab <https://gitlab.com/samplet/bootar/-/tags/v1>, but the
URL to the actual file is kinda ugly.  Thoughts?

Gash-Utils is released!  The Git repo and tarball are on Savannah.  I
updated how the base package builds a little bit, and fiddled with the
home-page, synopsis, and description.  The bootstrap version was
installing a useless “template” binary, which I fixed.

I noticed a little issue with “%boot-mesboot1-inputs”, so I fixed it and
made sure that “bootar” does not get propagated past that point.

I have not tested the full bootstrap yet, but I did test “hello-mesboot”
on basically this same code, and it was fine.  Since almost nothing
substantial has been changed, it should be OK, but you never know until
you try!  I’ll build the full thing as fast as my little computer can.
:)


-- Tim




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Sat, 08 Feb 2020 22:34:02 GMT) Full text and rfc822 format available.

Message #87 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Sat, 08 Feb 2020 23:32:59 +0100
Timothy Sample writes:

Hello,

> Ludovic Courtès <ludo <at> gnu.org> writes:
>
>> Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:
>>
>>> @Timothy: I haven't included your previous patches on `wip-bootstrap',
>>> feel free to push them to wip-bootstrap.
>>>
>>> We are getting real close to merging this, I think.
>>
>> This is exciting.  Let’s synchronize with Marius once the branch has
>> stabilized to see if this can go in ‘core-updates’ this time.
>
> Indeed!
>
> I just pushed five commits to “wip-bootstrap”.  They are a little
> different from the patches I sent.

Very nice.

> For one, I followed Ludo’s advice and added a “gnu-bootstrap” module for
> the build code.  That means I got rid of “make-bootstrap-phases” and
> adjusted the packages accordingly.  It’s a little janky, but it does
> clear up “commencement.scm”.

I like it!

> Bootar is released and saw some cosmetic improvements.  Notably, it
> disables “escape-newlines” and uses “pretty-print”, making the SES file
> easy to read for humans.  The SES file is still hosted on my server, but
> at a stable URL.  Is it worrisome that it’s on my server?  I put a
> mirror on Gitlab <https://gitlab.com/samplet/bootar/-/tags/v1>, but the
> URL to the actual file is kinda ugly.  Thoughts?
>
> Gash-Utils is released!  The Git repo and tarball are on Savannah.  I
> updated how the base package builds a little bit, and fiddled with the
> home-page, synopsis, and description.  The bootstrap version was
> installing a useless “template” binary, which I fixed.

Oh, congrats!

> I noticed a little issue with “%boot-mesboot1-inputs”, so I fixed it and
> made sure that “bootar” does not get propagated past that point.
>
> I have not tested the full bootstrap yet, but I did test “hello-mesboot”
> on basically this same code, and it was fine.  Since almost nothing
> substantial has been changed, it should be OK, but you never know until
> you try!  I’ll build the full thing as fast as my little computer can.
> :)

I found that the new file-boot0 5.38 does not build with the new bzip
feature; I added a squash! commit to disable that.

janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Mon, 10 Feb 2020 02:24:02 GMT) Full text and rfc822 format available.

Message #90 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Timothy Sample <samplet <at> ngyro.com>
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: 38390 <at> debbugs.gnu.org
Subject: Re: [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Sun, 09 Feb 2020 21:23:21 -0500
Hi Jan,

Jan Nieuwenhuizen <janneke <at> gnu.org> writes:

> I found that the new file-boot0 5.38 does not build with the new bzip
> feature; I added a squash! commit to disable that.

I managed to build GNU Hello, but I had to disable “bzlib” for the
“file” package in “%final-inputs” as well.  I assume that’s a problem.

You may have already noticed, but I thought I would mention it just in
case.


-- Tim




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Tue, 11 Feb 2020 13:57:02 GMT) Full text and rfc822 format available.

Message #93 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Timothy Sample <samplet <at> ngyro.com>
Cc: 38390 <at> debbugs.gnu.org, Jan Nieuwenhuizen <janneke <at> gnu.org>
Subject: Re: [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils
Date: Tue, 11 Feb 2020 14:56:17 +0100
Hi Timothy,

Timothy Sample <samplet <at> ngyro.com> skribis:

> Ludovic Courtès <ludo <at> gnu.org> writes:
>
>> Jan Nieuwenhuizen <janneke <at> gnu.org> skribis:
>>
>>> @Timothy: I haven't included your previous patches on `wip-bootstrap',
>>> feel free to push them to wip-bootstrap.
>>>
>>> We are getting real close to merging this, I think.
>>
>> This is exciting.  Let’s synchronize with Marius once the branch has
>> stabilized to see if this can go in ‘core-updates’ this time.
>
> Indeed!
>
> I just pushed five commits to “wip-bootstrap”.  They are a little
> different from the patches I sent.

Awesome, thank you!

> For one, I followed Ludo’s advice and added a “gnu-bootstrap” module for
> the build code.  That means I got rid of “make-bootstrap-phases” and
> adjusted the packages accordingly.  It’s a little janky, but it does
> clear up “commencement.scm”.
>
> Bootar is released and saw some cosmetic improvements.  Notably, it
> disables “escape-newlines” and uses “pretty-print”, making the SES file
> easy to read for humans.  The SES file is still hosted on my server, but
> at a stable URL.  Is it worrisome that it’s on my server?  I put a
> mirror on Gitlab <https://gitlab.com/samplet/bootar/-/tags/v1>, but the
> URL to the actual file is kinda ugly.  Thoughts?

We can host a copy at <https://ftp.gnu.org/gnu/guix/mirror>, which will
be picked up by Software Heritage and archived for eternity.  :-)
Let’s do that when we merge the branch.

> Gash-Utils is released!  The Git repo and tarball are on Savannah.  I
> updated how the base package builds a little bit, and fiddled with the
> home-page, synopsis, and description.  The bootstrap version was
> installing a useless “template” binary, which I fixed.
>
> I noticed a little issue with “%boot-mesboot1-inputs”, so I fixed it and
> made sure that “bootar” does not get propagated past that point.
>
> I have not tested the full bootstrap yet, but I did test “hello-mesboot”
> on basically this same code, and it was fine.  Since almost nothing
> substantial has been changed, it should be OK, but you never know until
> you try!  I’ll build the full thing as fast as my little computer can.
> :)

Thank you for all the great work!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Thu, 13 Feb 2020 15:19:02 GMT) Full text and rfc822 format available.

Message #96 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: guix-devel <at> gnu.org, 38390 <at> debbugs.gnu.org
Subject: Re: Starting 'core-updates'?
Date: Thu, 13 Feb 2020 16:18:35 +0100
Marius Bakke writes:

Hello Marius,

> The 'core-updates' branch is starting to look pretty good, and I am
> happy to report that it "works for me".  :-)
>
> Some of the big changes include:

> I suggest that we set a "freeze" date shortly after FOSDEM to start
> integrating it.  Are there other branches that should be included?

> Maybe wip-bootstrap

Definately maybe!  I think that Timothy, Ludo and I have finally done
what set out to do (see https://bugs.gnu.org/38390).

I have squashed the remaining squash-commits and freshly rebased
`wip-bootstrap' on core-updates, so I think that from our point of view
we are ready for merge.  WYDT?

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




Information forwarded to guix-patches <at> gnu.org:
bug#38390; Package guix-patches. (Fri, 14 Feb 2020 15:19:02 GMT) Full text and rfc822 format available.

Message #99 received at 38390 <at> debbugs.gnu.org (full text, mbox):

From: Marius Bakke <mbakke <at> fastmail.com>
To: Jan Nieuwenhuizen <janneke <at> gnu.org>
Cc: guix-devel <at> gnu.org, 38390 <at> debbugs.gnu.org
Subject: Re: Starting 'core-updates'?
Date: Fri, 14 Feb 2020 16:18:50 +0100
[Message part 1 (text/plain, inline)]
Jan Nieuwenhuizen <janneke <at> gnu.org> writes:

> Marius Bakke writes:
>
> Hello Marius,
>
>> The 'core-updates' branch is starting to look pretty good, and I am
>> happy to report that it "works for me".  :-)
>>
>> Some of the big changes include:
>
>> I suggest that we set a "freeze" date shortly after FOSDEM to start
>> integrating it.  Are there other branches that should be included?
>
>> Maybe wip-bootstrap
>
> Definately maybe!  I think that Timothy, Ludo and I have finally done
> what set out to do (see https://bugs.gnu.org/38390).
>
> I have squashed the remaining squash-commits and freshly rebased
> `wip-bootstrap' on core-updates, so I think that from our point of view
> we are ready for merge.  WYDT?

Excellent, really looking forward to seeing this merged!  Cutting the
bootstrap seed down to ~60 MiB is nothing short of amazing.

I think that with this branch merged as well as the glibc&binutils
update from <https://issues.guix.gnu.org/issue/39456> we are ready to
start the 'core-updates' branch.  \o/

We still need to change the default Guile to 3.0.  Any takers?  :-)
[signature.asc (application/pgp-signature, inline)]

Reply sent to Jan Nieuwenhuizen <janneke <at> gnu.org>:
You have taken responsibility. (Tue, 18 Feb 2020 06:26:01 GMT) Full text and rfc822 format available.

Notification sent to Jan Nieuwenhuizen <janneke <at> gnu.org>:
bug acknowledged by developer. (Tue, 18 Feb 2020 06:26:02 GMT) Full text and rfc822 format available.

Message #104 received at 38390-done <at> debbugs.gnu.org (full text, mbox):

From: Jan Nieuwenhuizen <janneke <at> gnu.org>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: guix-devel <at> gnu.org, 38390-done <at> debbugs.gnu.org
Subject: Re: [bug#38390] [core-updates] Scheme-only bootstrap: merge
 wip-bootstrap / Starting `core-updates' 
Date: Tue, 18 Feb 2020 07:25:03 +0100
Marius Bakke writes:

> Jan Nieuwenhuizen <janneke <at> gnu.org> writes:
>
>> Marius Bakke writes:
>>
>> Hello Marius,
>>
>>> The 'core-updates' branch is starting to look pretty good, and I am
>>> happy to report that it "works for me".  :-)
>>>
>>> Some of the big changes include:
>>
>>> I suggest that we set a "freeze" date shortly after FOSDEM to start
>>> integrating it.  Are there other branches that should be included?
>>
>>> Maybe wip-bootstrap
>>
>> Definately maybe!  I think that Timothy, Ludo and I have finally done
>> what set out to do (see https://bugs.gnu.org/38390).
>>
>> I have squashed the remaining squash-commits and freshly rebased
>> `wip-bootstrap' on core-updates, so I think that from our point of view
>> we are ready for merge.  WYDT?
>
> Excellent, really looking forward to seeing this merged!  Cutting the
> bootstrap seed down to ~60 MiB is nothing short of amazing.

Thank you!!  Pushed as e157ed72ec7b673b4204c84a7bf74f13afb44dc7
to core-updates.

And a very big thank you to Ludo' and Timothy: let's keep pushing this
bootstrapping thing forward!

> I think that with this branch merged as well as the glibc&binutils
> update from <https://issues.guix.gnu.org/issue/39456> we are ready to
> start the 'core-updates' branch.  \o/

\o/

Greetings,
janneke

-- 
Jan Nieuwenhuizen <janneke <at> gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 17 Mar 2020 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 40 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.