* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap @ 2019-11-26 16:38 Jan Nieuwenhuizen 2019-12-01 14:01 ` Ludovic Courtès 2020-02-03 17:37 ` [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils Timothy Sample 0 siblings, 2 replies; 26+ messages in thread From: Jan Nieuwenhuizen @ 2019-11-26 16:38 UTC (permalink / raw) To: 38390; +Cc: Timothy Sample 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@dundal:~/tmp [env] $ cd guix-sob/ 10:40:04 janneke@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@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@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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-11-26 16:38 [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap Jan Nieuwenhuizen @ 2019-12-01 14:01 ` Ludovic Courtès 2019-12-01 16:25 ` Timothy Sample 2019-12-01 17:21 ` Jan Nieuwenhuizen 2020-02-03 17:37 ` [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils Timothy Sample 1 sibling, 2 replies; 26+ messages in thread From: Ludovic Courtès @ 2019-12-01 14:01 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: Timothy Sample, 38390 Hello Janneke & Timothy! Jan Nieuwenhuizen <janneke@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’. ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-01 14:01 ` Ludovic Courtès @ 2019-12-01 16:25 ` Timothy Sample 2019-12-01 16:55 ` Jan Nieuwenhuizen 2019-12-01 17:14 ` Ludovic Courtès 2019-12-01 17:21 ` Jan Nieuwenhuizen 1 sibling, 2 replies; 26+ messages in thread From: Timothy Sample @ 2019-12-01 16:25 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 38390, Jan Nieuwenhuizen Hi Ludovic, Ludovic Courtès <ludo@gnu.org> writes: > Hello Janneke & Timothy! > > Jan Nieuwenhuizen <janneke@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 ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-01 16:25 ` Timothy Sample @ 2019-12-01 16:55 ` Jan Nieuwenhuizen 2019-12-01 17:14 ` Ludovic Courtès 1 sibling, 0 replies; 26+ messages in thread From: Jan Nieuwenhuizen @ 2019-12-01 16:55 UTC (permalink / raw) To: Timothy Sample; +Cc: Ludovic Courtès, 38390 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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-01 16:25 ` Timothy Sample 2019-12-01 16:55 ` Jan Nieuwenhuizen @ 2019-12-01 17:14 ` Ludovic Courtès 1 sibling, 0 replies; 26+ messages in thread From: Ludovic Courtès @ 2019-12-01 17:14 UTC (permalink / raw) To: Timothy Sample; +Cc: 38390, Jan Nieuwenhuizen Hi, Timothy! Timothy Sample <samplet@ngyro.com> skribis: > Ludovic Courtès <ludo@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’. ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-01 14:01 ` Ludovic Courtès 2019-12-01 16:25 ` Timothy Sample @ 2019-12-01 17:21 ` Jan Nieuwenhuizen 2019-12-06 6:53 ` Jan Nieuwenhuizen 1 sibling, 1 reply; 26+ messages in thread From: Jan Nieuwenhuizen @ 2019-12-01 17:21 UTC (permalink / raw) To: Ludovic Courtès; +Cc: Timothy Sample, 38390 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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-01 17:21 ` Jan Nieuwenhuizen @ 2019-12-06 6:53 ` Jan Nieuwenhuizen 2019-12-07 22:31 ` Ludovic Courtès 2019-12-11 18:25 ` Jan Nieuwenhuizen 0 siblings, 2 replies; 26+ messages in thread From: Jan Nieuwenhuizen @ 2019-12-06 6:53 UTC (permalink / raw) To: Ludovic Courtès; +Cc: Timothy Sample, 38390 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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-06 6:53 ` Jan Nieuwenhuizen @ 2019-12-07 22:31 ` Ludovic Courtès 2019-12-11 18:25 ` Jan Nieuwenhuizen 1 sibling, 0 replies; 26+ messages in thread From: Ludovic Courtès @ 2019-12-07 22:31 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: Timothy Sample, 38390 Hello! Jan Nieuwenhuizen <janneke@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’. ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-06 6:53 ` Jan Nieuwenhuizen 2019-12-07 22:31 ` Ludovic Courtès @ 2019-12-11 18:25 ` Jan Nieuwenhuizen 2019-12-15 21:33 ` Ludovic Courtès 1 sibling, 1 reply; 26+ messages in thread From: Jan Nieuwenhuizen @ 2019-12-11 18:25 UTC (permalink / raw) To: Ludovic Courtès; +Cc: Timothy Sample, 38390 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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-11 18:25 ` Jan Nieuwenhuizen @ 2019-12-15 21:33 ` Ludovic Courtès 2019-12-15 22:39 ` Timothy Sample 2019-12-16 19:28 ` Jan Nieuwenhuizen 0 siblings, 2 replies; 26+ messages in thread From: Ludovic Courtès @ 2019-12-15 21:33 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: Timothy Sample, 38390 [-- Attachment #1: Type: text/plain, Size: 993 bytes --] Howdy! Jan Nieuwenhuizen <janneke@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: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 641 bytes --] 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")))))) [-- Attachment #3: Type: text/plain, Size: 4820 bytes --] >> * 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’. ^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-15 21:33 ` Ludovic Courtès @ 2019-12-15 22:39 ` Timothy Sample 2019-12-15 22:45 ` Brett Gilio 2019-12-16 6:34 ` Jan Nieuwenhuizen 2019-12-16 19:28 ` Jan Nieuwenhuizen 1 sibling, 2 replies; 26+ messages in thread From: Timothy Sample @ 2019-12-15 22:39 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 38390, Jan Nieuwenhuizen Hi Ludo, Ludovic Courtès <ludo@gnu.org> writes: > Jan Nieuwenhuizen <janneke@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 ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-15 22:39 ` Timothy Sample @ 2019-12-15 22:45 ` Brett Gilio 2019-12-16 6:34 ` Jan Nieuwenhuizen 1 sibling, 0 replies; 26+ messages in thread From: Brett Gilio @ 2019-12-15 22:45 UTC (permalink / raw) To: Timothy Sample; +Cc: Ludovic Courtès, 38390, Jan Nieuwenhuizen Timothy Sample <samplet@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/ ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-15 22:39 ` Timothy Sample 2019-12-15 22:45 ` Brett Gilio @ 2019-12-16 6:34 ` Jan Nieuwenhuizen 1 sibling, 0 replies; 26+ messages in thread From: Jan Nieuwenhuizen @ 2019-12-16 6:34 UTC (permalink / raw) To: Timothy Sample; +Cc: Ludovic Courtès, 38390 Timothy Sample writes: Hi All, >> Jan Nieuwenhuizen <janneke@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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-15 21:33 ` Ludovic Courtès 2019-12-15 22:39 ` Timothy Sample @ 2019-12-16 19:28 ` Jan Nieuwenhuizen 2019-12-18 22:55 ` Jan Nieuwenhuizen 1 sibling, 1 reply; 26+ messages in thread From: Jan Nieuwenhuizen @ 2019-12-16 19:28 UTC (permalink / raw) To: Ludovic Courtès; +Cc: Timothy Sample, 38390 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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-16 19:28 ` Jan Nieuwenhuizen @ 2019-12-18 22:55 ` Jan Nieuwenhuizen 2019-12-19 11:08 ` Ludovic Courtès 0 siblings, 1 reply; 26+ messages in thread From: Jan Nieuwenhuizen @ 2019-12-18 22:55 UTC (permalink / raw) To: Ludovic Courtès; +Cc: Timothy Sample, 38390 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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap 2019-12-18 22:55 ` Jan Nieuwenhuizen @ 2019-12-19 11:08 ` Ludovic Courtès 0 siblings, 0 replies; 26+ messages in thread From: Ludovic Courtès @ 2019-12-19 11:08 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: Timothy Sample, 38390 Hi! Jan Nieuwenhuizen <janneke@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’. ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2019-11-26 16:38 [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap Jan Nieuwenhuizen 2019-12-01 14:01 ` Ludovic Courtès @ 2020-02-03 17:37 ` Timothy Sample 2020-02-05 8:58 ` Ludovic Courtès 1 sibling, 1 reply; 26+ messages in thread From: Timothy Sample @ 2020-02-03 17:37 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 38390, Jan Nieuwenhuizen [-- Attachment #1: Type: text/plain, Size: 1656 bytes --] 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 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-Rename-gash-core-utils-to-gash-utils.patch --] [-- Type: text/x-patch, Size: 2413 bytes --] From 33614593c2a212ac99cc126755efebcb0574909c Mon Sep 17 00:00:00 2001 From: Timothy Sample <samplet@ngyro.com> Date: Mon, 3 Feb 2020 11:26:35 -0500 Subject: [PATCH 1/3] Rename 'gash-core-utils' to 'gash-utils'. * gnu/packages/shells.scm (gash-core-utils): Rename this... (gash-utils): ...to this. * gnu/packages/commencement.scm (gash-core-utils): Rename this... (gash-utils): ...to this and update the parent package reference. (%boot-gash-inputs): Update reference. --- gnu/packages/commencement.scm | 10 +++++----- gnu/packages/shells.scm | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 1c62fcfae7..43533b4525 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -89,7 +89,7 @@ (define %bootstrap-guile+guild ;; This package combines %bootstrap-guile with guild, which is not included ;; in %bootstrap-guile. Guild is needed to build gash-boot and - ;; gash-core-utils-boot because it is dependency of the Guile build system. + ;; gash-utils-boot because it is dependency of the Guile build system. (package (name "guile-bootstrap+guild") (version "2.0") @@ -225,10 +225,10 @@ (install-file "scripts/bash" bin) #t)))))))) -(define gash-core-utils-boot +(define gash-utils-boot (package - (inherit gash-core-utils) - (name "gash-core-utils-boot") + (inherit gash-utils) + (name "gash-utils-boot") (version "0.0.214-fc1b") (source (bootstrap-origin (origin @@ -387,7 +387,7 @@ (define (%boot-gash-inputs) `(("bash" , gash-boot) ; gnu-build-system wants "bash" - ("coreutils" , gash-core-utils-boot) + ("coreutils" , gash-utils-boot) ("guile" ,%bootstrap-guile) ("guile+guild" ,%bootstrap-guile+guild))) diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 3d2975fe14..ea61e7b2f8 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -827,9 +827,9 @@ library for parsing shell scripts. Gash is designed to bootstrap Bash as part of the Guix bootstrap process.") (license gpl3+))) -(define-public gash-core-utils +(define-public gash-utils (package - (name "gash-core-utils") + (name "gash-utils") (version "0.0.211-789c3") (source (origin (method url-fetch) -- 2.24.1 [-- Attachment #3: 0002-Simplify-bootstrap-Gash-and-Gash-Utils.patch --] [-- Type: text/x-patch, Size: 26252 bytes --] From 2cec50928a4ff67df363322d2adfb6aaa5aedc83 Mon Sep 17 00:00:00 2001 From: Timothy Sample <samplet@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. These three changes need to happen in concert to avoid breaking the bootstrap process. * gnu/packages/shells.scm (gash-utils): Update to 0.1.0-preview. * gnu/packages/commencement.scm (make-bootstrap-phases): New procedure. (bootar): New variable. (gash-boot): Replace 'tar', and 'xz' with 'bootar'; remove 'bash' and 'guile-source'; do not use 'guile-build-system' but rather 'gnu-build-system' with its phases processed by 'make-bootstrap-phases'; disable tests. (gash-utils-boot): Likewise. (%boot-gash-inputs): Add 'bootar'; replace '%bootstrap-guile+guild' with '%bootstrap-guile'. (mes-boot): In the configure phase, do not reference 'GUILE_LOAD_PATH' as it is no longer set. --- gnu/packages/commencement.scm | 431 ++++++++++++++++------------------ gnu/packages/shells.scm | 8 +- 2 files changed, 206 insertions(+), 233 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 43533b4525..914b3f2a8d 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -53,7 +54,6 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (guix build-system guile) #:use-module (guix build-system trivial) #:use-module (guix memoization) #:use-module (guix utils) @@ -144,252 +144,226 @@ (variable "GUILE_LOAD_COMPILED_PATH") (files '("lib/guile/2.0/site-ccache"))))))) +(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 + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (guile-dir (assoc-ref inputs "guile")) + (guile (string-append guile-dir "/bin/guile")) + (moddir (string-append out "/share/guile/site/" + (effective-version))) + (godir (string-append out "/lib/guile/" + (effective-version) + "/site-ccache"))) + (for-each (lambda (template) + (format #t "Configuring ~a~%" template) + (let ((target (string-drop-right template 3))) + (copy-file template target) + (substitute* target + (("@VERSION@") ,version)))) + (find-files ,modules + (lambda (fn st) + (string-suffix? ".in" fn)))) + (for-each (lambda (template) + (format #t "Configuring ~a~%" template) + (let ((target (string-drop-right template 3))) + (copy-file template target) + (substitute* target + (("@GUILE@") guile) + (("@MODDIR@") moddir) + (("@GODIR@") godir)) + (chmod target #o755))) + (find-files ,scripts + (lambda (fn st) + (string-suffix? ".in" fn)))) + #t))) + (replace 'build + (lambda _ + (add-to-load-path (getcwd)) + (for-each (lambda (scm) + (let* ((base (string-drop-right scm 4)) + (go (string-append base ".go")) + (dir (dirname scm))) + (format #t "Compiling ~a~%" scm) + (compile-file scm #:output-file go))) + (find-files ,modules "\\.scm$")) + #t)) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (guile-dir (assoc-ref inputs "guile")) + (guile (string-append guile-dir "/bin/guile")) + (moddir (string-append out "/share/guile/site/" + (effective-version))) + (godir (string-append out "/lib/guile/" + (effective-version) + "/site-ccache"))) + (for-each (lambda (scm) + (let* ((base (string-drop-right scm 4)) + (go (string-append base ".go")) + (dir (dirname scm))) + (format #t "Installing ~a~%" scm) + (install-file scm (string-append moddir "/" dir)) + (format #t "Installing ~a~%" go) + (install-file go (string-append godir "/" dir)))) + (find-files ,modules "\\.scm$")) + (for-each (lambda (script) + (format #t "Installing ~a~%" script) + (install-file script (string-append out "/bin"))) + (find-files ,scripts + (lambda (fn st) + (executable-file? fn)))) + #t))))) + +(define bootar + (package + (name "bootar") + (version "1") + (source (origin + (method url-fetch) + (uri "https://files.ngyro.com/tmp/bootar-1.ses") + (sha256 + (base32 + "0f37f1lav7y9nf2c6s783z7w4jfrpqrgcksqb028al82f0dn1glv")))) + (build-system gnu-build-system) + (arguments + `(#:implicit-inputs? #f + #:tests? #f + #:guile ,%bootstrap-guile + #:phases + (modify-phases ,(make-bootstrap-phases version "scripts" ".") + (replace 'unpack + (lambda* (#:key inputs #:allow-other-keys) + (let* ((source (assoc-ref inputs "source")) + (guile-dir (assoc-ref inputs "guile")) + (guile (string-append guile-dir "/bin/guile"))) + (invoke guile "--no-auto-compile" source) + (chdir "bootar") + #t)))))) + (inputs `(("guile" ,%bootstrap-guile))) + (home-page "https://git.ngyro.com/bootar") + (synopsis "Tar decompression and extraction in Guile Scheme") + (description "Bootar is a simple Tar extractor written in Guile +Scheme. It supports running 'tar xvf' on uncompressed tarballs or +tarballs that are compressed with BZip2, GZip, or XZ. It also provides +standalone scripts for 'bzip2', 'gzip', and 'xz' that each support +decompression to standard output. + +What makes this special is that Bootar is distributed as a +self-extracting Scheme (SES) program. That is, a little script that +outputs the source code of Bootar. This makes it possible to go from +pure Scheme to Tar and decompression in one easy step.") + (license gpl3+))) + (define gash-boot (package (inherit gash) (name "gash-boot") - (version "0.2.0") - (source (bootstrap-origin - (origin (inherit (package-source gash)) - (modules '((guix build utils) - (srfi srfi-26))) - (snippet - '(begin - ;; Remove Guix'y files that we cannot compile. - (delete-file "guix.scm") - (delete-file-recursively "tests") - #t))))) - (build-system guile-build-system) - (native-inputs `(("bash" ,(bootstrap-executable "bash" (%current-system))) - ("tar" ,(bootstrap-executable "tar" (%current-system))) - ("xz" ,(bootstrap-executable "xz" (%current-system))) - ("guile-source" ,(bootstrap-origin - (package-source guile-2.0))))) - (inputs `(("guile" ,%bootstrap-guile+guild))) + (source (origin + (inherit (package-source gash)) + (modules '()))) (arguments `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile+guild + #:tests? #f + #:guile ,%bootstrap-guile #:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-guile-source - (lambda _ - (let ((guile-source (assoc-ref %build-inputs "guile-source")) - (bin (string-append (getcwd) "/zee-bin"))) - (mkdir-p bin) - (with-directory-excursion bin - (invoke "tar" "--strip-components=2" - - "-xvf" guile-source - (string-append "guile-" - ,(package-version guile-2.0) - "/meta/guild.in")) - (copy-file "guild.in" "guild") - (chmod "guild" #o555)) - #t))) - (add-before 'unpack 'set-path - (lambda _ - (let ((bash (assoc-ref %build-inputs "bash")) - (tar (assoc-ref %build-inputs "tar")) - (xz (assoc-ref %build-inputs "xz")) - (bin (string-append (getcwd) "/zee-bin"))) - (mkdir-p bin) - (setenv "PATH" (string-append bin ":" (getenv "PATH"))) - (copy-file bash (string-append bin "/bash")) - (copy-file bash (string-append bin "/sh")) - (copy-file tar (string-append bin "/tar")) - (copy-file xz (string-append bin "/xz")) - #t))) - (add-after 'build 'build-scripts - (lambda _ - (let* ((guile (assoc-ref %build-inputs "guile")) - (guile (string-append guile "/bin/guile")) - (out (assoc-ref %outputs "out")) - (effective "2.0") - (moddir (string-append out "/share/guile/site/" effective "/")) - (godir (string-append out "/lib/guile/" effective "/site-ccache/"))) - (copy-file "scripts/gash.in" "scripts/gash") - (chmod "scripts/gash" #o555) - (substitute* "scripts/gash" - (("@GUILE@") guile) - (("@MODDIR@") moddir) - (("@GODIR") godir)) - #t))) - (add-after 'install 'install-scripts - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (install-file "scripts/gash" bin) - (copy-file "scripts/gash" "scripts/sh") - (install-file "scripts/sh" bin) - (copy-file "scripts/gash" "scripts/bash") - (install-file "scripts/bash" bin) - #t)))))))) + (modify-phases ,(make-bootstrap-phases (version) "scripts" "gash") + (add-after 'install 'install-symlinks + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (symlink (string-append out "/bin/gash") + (string-append out "/bin/sh")) + (symlink (string-append out "/bin/gash") + (string-append out "/bin/bash")) + #t)))))) + (inputs `(("guile" ,%bootstrap-guile))) + (native-inputs `(("bootar" ,bootar))))) (define gash-utils-boot (package (inherit gash-utils) (name "gash-utils-boot") - (version "0.0.214-fc1b") - (source (bootstrap-origin - (origin - (method url-fetch) - (uri (string-append "http://lilypond.org/janneke/" - "/gash-core-utils-" version ".tar.gz")) - (modules '((guix build utils))) - (snippet - '(begin - ;; The Guile build system compiles *.scm; avoid - ;; compiling included lalr. - (delete-file "guix.scm") - (delete-file-recursively "tests") - (substitute* "system/base/lalr.scm" - (("system/base/lalr.upstream.scm") "lalr.upstream.scm")) - #t)) - (sha256 - (base32 - "090d8m0b165jf9381nhqpljc5zk22jd6bw03xnyf0na5snk9xp6v"))))) - (build-system guile-build-system) - (native-inputs `(("bash" ,(bootstrap-executable "bash" (%current-system))) - ("tar" ,(bootstrap-executable "tar" (%current-system))) - ("xz" ,(bootstrap-executable "xz" (%current-system))) - ("guile-source" ,(bootstrap-origin - (package-source guile-2.0))) - ;; We need the 2.0.9 lalr for %bootstrap-guile - ("lalr.upstream" - ,(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")))))) - (inputs `(("guile" ,%bootstrap-guile+guild) - ("gash" ,gash-boot))) (arguments `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile+guild - #:not-compiled-file-regexp "upstream\\.scm$" + #:tests? #f + #:guile ,%bootstrap-guile #:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-guile-source - (lambda _ - (let ((guile-source (assoc-ref %build-inputs "guile-source")) - (bin (string-append (getcwd) "/zee-bin"))) - (mkdir-p bin) - (with-directory-excursion bin - (invoke "tar" "--strip-components=2" - - "-xvf" guile-source - (string-append "guile-" - ,(package-version guile-2.0) - "/meta/guild.in")) - (copy-file "guild.in" "guild") - (chmod "guild" #o555)) - #t))) - (add-before 'unpack 'set-path - (lambda _ - (let ((bash (assoc-ref %build-inputs "bash")) - (tar (assoc-ref %build-inputs "tar")) - (xz (assoc-ref %build-inputs "xz")) - (bin (string-append (getcwd) "/zee-bin"))) - (mkdir-p bin) - (setenv "PATH" (string-append bin ":" (getenv "PATH"))) - (copy-file bash (string-append bin "/bash")) - (copy-file bash (string-append bin "/sh")) - (copy-file tar (string-append bin "/tar")) - (copy-file xz (string-append bin "/xz")) - #t))) - (add-before 'build 'set-env - (lambda _ - (let ((gash (assoc-ref %build-inputs "gash"))) - (setenv "LANG" "C") - (setenv "LC_ALL" "C") - (setenv "GUILE_LOAD_PATH" - (string-append (getcwd) - ":" (getcwd) "/system/base" - ":" gash "/share/guile/2.0")) - (setenv "GUILE_LOAD_COMPILED_PATH" - (string-append ".:" gash "/lib/guile/2.0/site-ccache/")) - (format (current-error-port) - "GUILE_LOAD_PATH=~s\n" (getenv "GUILE_LOAD_PATH")) - #t))) - (add-before 'build 'replace-lalr.upstream - (lambda _ - (let ((lalr.upstream (assoc-ref %build-inputs "lalr.upstream"))) - (copy-file lalr.upstream "system/base/lalr.upstream.scm") - #t))) - (add-after 'build 'build-scripts + (modify-phases ,(make-bootstrap-phases (version) "scripts" "gash") + (add-after 'unpack 'set-load-path + (lambda* (#:key inputs #:allow-other-keys) + (let ((gash (assoc-ref inputs "gash"))) + (add-to-load-path (string-append gash "/share/guile/site/" + (effective-version)))) + #t)) + (add-before 'configure 'pre-configure (lambda _ - (let* ((guile (assoc-ref %build-inputs "guile")) - (guile (string-append guile "/bin/guile")) - (gash (string-append guile "gash")) - (out (assoc-ref %outputs "out")) - (effective "2.0") - (guilemoduledir (string-append gash "/share/guile/site/" effective "/")) - (guileobjectdir (string-append gash "/lib/guile/" effective "/site-ccache/")) - (gashmoduledir (string-append out "/share/guile/site/" effective "/")) - (gashobjectdir (string-append out "/lib/guile/" effective "/site-ccache/")) - (bin (string-append out "/bin"))) - (define (wrap name) - (copy-file "command.in" name) - (chmod name #o555) - (substitute* name - (("@GUILE@") guile) - (("@guilemoduledir@") guilemoduledir) - (("@guileobjectdir") guileobjectdir) - (("@gashmoduledir@") gashmoduledir) - (("@gashobjectdir") gashobjectdir) - (("@command@") name)) - (install-file name bin)) - (mkdir-p bin) - (with-directory-excursion "bin" - (for-each wrap '("awk" - "basename" - "cat" - "chmod" - "cmp" - "compress" - "cp" - "cut" - "diff" - "dirname" - "expr" - "false" - "find" - "grep" - "gzip" - "head" - "ln" - "ls" - "mkdir" - "mv" - "pwd" - "reboot" - "rm" - "rmdir" - "sed" - "sleep" - "sort" - "tar" - "test" - "touch" - "tr" - "true" - "uname" - "uniq" - "wc" - "which"))) - (with-directory-excursion bin - (copy-file "grep" "fgrep") - (copy-file "grep" "egrep") - (copy-file "test" "[")) - #t)))))))) + (format #t "Creating gash/commands/testb.scm~%") + (copy-file "gash/commands/test.scm" + "gash/commands/testb.scm") + (substitute* "gash/commands/testb.scm" + (("gash commands test") "gash commands testb") + (("apply test [(]cdr") "apply test/bracket (cdr")) + (for-each (lambda (script) + (let ((target (string-append "scripts/" + script ".in"))) + (format #t "Creating scripts/~a~%" target) + (copy-file "scripts/template.in" target) + (substitute* target + (("@UTILITY@") script)))) + '("awk" "basename" "cat" "chmod" "cmp" "command" + "compress" "cp" "cut" "diff" "dirname" "expr" + "false" "find" "grep" "head" "ln" "ls" "mkdir" + "mv" "printf" "pwd" "reboot" "rm" "rmdir" + "sed" "sleep" "sort" "tar" "test" "touch" "tr" + "true" "uname" "uniq" "wc" "which")) + (format #t "Creating scripts/[.in~%") + (copy-file "scripts/template.in" "scripts/[.in") + (substitute* "scripts/[.in" + (("@UTILITY@") "testb")) + #t)) + ;; XXX: The scripts should add Gash to their load paths and + ;; this phase should not exist. Although ultimately, Gash + ;; should depend on Gash-Utils, so that it can treat its + ;; commands as built-ins. + (add-after 'install 'copy-gash + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (moddir (string-append out "/share/guile/site/" + (effective-version))) + (godir (string-append out "/lib/guile/" + (effective-version) + "/site-ccache")) + (gash (assoc-ref inputs "gash")) + (gash-moddir (string-append gash "/share/guile/site/" + (effective-version))) + (gash-godir (string-append gash "/lib/guile/" + (effective-version) + "/site-ccache"))) + (copy-file (string-append gash-moddir "/gash/compat.scm") + (string-append moddir "/gash/compat.scm")) + (copy-recursively (string-append gash-moddir "/gash/compat") + (string-append moddir "/gash/compat")) + (copy-file (string-append gash-godir "/gash/compat.go") + (string-append godir "/gash/compat.go")) + (copy-recursively (string-append gash-godir "/gash/compat") + (string-append godir "/gash/compat")) + #t)))))) + (inputs `(("gash" ,gash-boot) + ("guile" ,%bootstrap-guile))) + (native-inputs `(("bootar" ,bootar))))) (define (%boot-gash-inputs) `(("bash" , gash-boot) ; gnu-build-system wants "bash" ("coreutils" , gash-utils-boot) - ("guile" ,%bootstrap-guile) - ("guile+guild" ,%bootstrap-guile+guild))) + ("bootar" ,bootar) + ("guile" ,%bootstrap-guile))) (define %bootstrap-mes-rewired (package @@ -542,8 +516,7 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" (setenv "GUILE_LOAD_PATH" (string-append mes "/share/mes/module" - ":" dir "/nyacc-0.99.0/module" - ":" (getenv "GUILE_LOAD_PATH"))) + ":" dir "/nyacc-0.99.0/module")) (invoke "gash" "configure.sh" (string-append "--prefix=" out) (string-append "--host=i686-linux-gnu"))))) diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index ea61e7b2f8..718908e5ce 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -830,14 +830,14 @@ as part of the Guix bootstrap process.") (define-public gash-utils (package (name "gash-utils") - (version "0.0.211-789c3") + (version "0.1.0-preview") (source (origin (method url-fetch) - (uri (string-append "http://lilypond.org/janneke/guix/20191123/" - "/gash-core-utils-" version ".tar.gz")) + (uri (string-append "https://files.ngyro.com/tmp/gash-utils-" + version ".tar.gz")) (sha256 (base32 - "1ycf0ivyn9q3lc9hwq8vxg6wkwpsykvh48a5lrzsmganh0ma8wrr")))) + "1d6rmhhsgqbwjbi0fp383ac6gnxqd8yaq43mbc63xalni13g3mbc")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) -- 2.24.1 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #4: 0003-Remove-bootstrap-guile-guild.patch --] [-- Type: text/x-patch, Size: 3809 bytes --] From b363e2c3dfcf2906b181c0120e35f6b701455122 Mon Sep 17 00:00:00 2001 From: Timothy Sample <samplet@ngyro.com> Date: Mon, 3 Feb 2020 11:46:25 -0500 Subject: [PATCH 3/3] Remove %bootstrap-guile+guild. * gnu/packages/commencement.scm (%bootstrap-guile+guild): Remove variable. --- gnu/packages/commencement.scm | 58 ----------------------------------- 1 file changed, 58 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 914b3f2a8d..b797af1585 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -86,64 +86,6 @@ ;;; ;;; Code: -(define %bootstrap-guile+guild - ;; This package combines %bootstrap-guile with guild, which is not included - ;; in %bootstrap-guile. Guild is needed to build gash-boot and - ;; gash-utils-boot because it is dependency of the Guile build system. - (package - (name "guile-bootstrap+guild") - (version "2.0") - (source (bootstrap-origin (package-source guile-2.0))) - (native-inputs `(("bash" ,(bootstrap-executable "bash" (%current-system))) - ("tar" ,(bootstrap-executable "tar" (%current-system))) - ("xz" ,(bootstrap-executable "xz" (%current-system))) - ("guile" ,%bootstrap-guile))) - (build-system trivial-build-system) - (arguments - `(#:guile ,%bootstrap-guile - #:modules ((guix build utils)) - #:builder (begin - (use-modules (guix build utils)) - (let ((guile-source (assoc-ref %build-inputs "source")) - (bin (string-append (getcwd) "/bin")) - (tar (assoc-ref %build-inputs "tar")) - (xz (assoc-ref %build-inputs "xz"))) - (mkdir-p bin) - (setenv "PATH" bin) - (with-directory-excursion bin - (copy-file tar "tar") - (copy-file xz "xz") - (setenv "PATH" bin)) - (let* ((out (assoc-ref %outputs "out")) - (out-bin (string-append out "/bin")) - (guile (assoc-ref %build-inputs "guile")) - (bash (assoc-ref %build-inputs "bash"))) - (mkdir-p out-bin) - (with-directory-excursion out-bin - (symlink (string-append guile "/bin/guile") - "guile") - (invoke "tar" "--strip-components=2" - "-xvf" guile-source - (string-append "guile-" - ,(package-version guile-2.0) - "/meta/guild.in")) - (copy-file "guild.in" "guild") - (substitute* "guild" - (("#!/bin/sh") (string-append "#! " bash)) - (("@installed_guile@") (string-append out-bin "/guile"))) - (chmod "guild" #o555))))))) - (synopsis "Bootstrap Guile plus Guild") - (description "Bootstrap Guile with added Guild") - (home-page #f) - (license (package-license guile-2.0)) - (native-search-paths - (list (search-path-specification - (variable "GUILE_LOAD_PATH") - (files '("share/guile/site/2.0"))) - (search-path-specification - (variable "GUILE_LOAD_COMPILED_PATH") - (files '("lib/guile/2.0/site-ccache"))))))) - (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 -- 2.24.1 ^ permalink raw reply related [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-03 17:37 ` [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils Timothy Sample @ 2020-02-05 8:58 ` Ludovic Courtès 2020-02-05 14:32 ` Timothy Sample 0 siblings, 1 reply; 26+ messages in thread From: Ludovic Courtès @ 2020-02-05 8:58 UTC (permalink / raw) To: Timothy Sample; +Cc: 38390, Jan Nieuwenhuizen Hello Timothy! Timothy Sample <samplet@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@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’. ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-05 8:58 ` Ludovic Courtès @ 2020-02-05 14:32 ` Timothy Sample 2020-02-05 21:33 ` Ludovic Courtès 0 siblings, 1 reply; 26+ messages in thread From: Timothy Sample @ 2020-02-05 14:32 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 38390, Jan Nieuwenhuizen Hello, Ludovic Courtès <ludo@gnu.org> writes: > Timothy Sample <samplet@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@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 ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-05 14:32 ` Timothy Sample @ 2020-02-05 21:33 ` Ludovic Courtès 2020-02-06 22:58 ` Jan Nieuwenhuizen 0 siblings, 1 reply; 26+ messages in thread From: Ludovic Courtès @ 2020-02-05 21:33 UTC (permalink / raw) To: Timothy Sample; +Cc: 38390, Jan Nieuwenhuizen Hello! Timothy Sample <samplet@ngyro.com> skribis: > Ludovic Courtès <ludo@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’. ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-05 21:33 ` Ludovic Courtès @ 2020-02-06 22:58 ` Jan Nieuwenhuizen 2020-02-07 11:00 ` Ludovic Courtès 0 siblings, 1 reply; 26+ messages in thread From: Jan Nieuwenhuizen @ 2020-02-06 22:58 UTC (permalink / raw) To: Ludovic Courtès; +Cc: Timothy Sample, 38390 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@ngyro.com> skribis: > >> Ludovic Courtès <ludo@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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-06 22:58 ` Jan Nieuwenhuizen @ 2020-02-07 11:00 ` Ludovic Courtès 2020-02-08 17:33 ` Timothy Sample 0 siblings, 1 reply; 26+ messages in thread From: Ludovic Courtès @ 2020-02-07 11:00 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: Timothy Sample, 38390 Hi, Jan Nieuwenhuizen <janneke@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’. ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-07 11:00 ` Ludovic Courtès @ 2020-02-08 17:33 ` Timothy Sample 2020-02-08 22:32 ` Jan Nieuwenhuizen 2020-02-11 13:56 ` Ludovic Courtès 0 siblings, 2 replies; 26+ messages in thread From: Timothy Sample @ 2020-02-08 17:33 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 38390, Jan Nieuwenhuizen Hello, Ludovic Courtès <ludo@gnu.org> writes: > Jan Nieuwenhuizen <janneke@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 ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-08 17:33 ` Timothy Sample @ 2020-02-08 22:32 ` Jan Nieuwenhuizen 2020-02-10 2:23 ` Timothy Sample 2020-02-11 13:56 ` Ludovic Courtès 1 sibling, 1 reply; 26+ messages in thread From: Jan Nieuwenhuizen @ 2020-02-08 22:32 UTC (permalink / raw) To: Timothy Sample; +Cc: Ludovic Courtès, 38390 Timothy Sample writes: Hello, > Ludovic Courtès <ludo@gnu.org> writes: > >> Jan Nieuwenhuizen <janneke@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@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-08 22:32 ` Jan Nieuwenhuizen @ 2020-02-10 2:23 ` Timothy Sample 0 siblings, 0 replies; 26+ messages in thread From: Timothy Sample @ 2020-02-10 2:23 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: 38390 Hi Jan, Jan Nieuwenhuizen <janneke@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 ^ permalink raw reply [flat|nested] 26+ messages in thread
* [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils 2020-02-08 17:33 ` Timothy Sample 2020-02-08 22:32 ` Jan Nieuwenhuizen @ 2020-02-11 13:56 ` Ludovic Courtès 1 sibling, 0 replies; 26+ messages in thread From: Ludovic Courtès @ 2020-02-11 13:56 UTC (permalink / raw) To: Timothy Sample; +Cc: 38390, Jan Nieuwenhuizen Hi Timothy, Timothy Sample <samplet@ngyro.com> skribis: > Ludovic Courtès <ludo@gnu.org> writes: > >> Jan Nieuwenhuizen <janneke@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’. ^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2020-02-11 13:57 UTC | newest] Thread overview: 26+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-11-26 16:38 [bug#38390] [core-updates] Scheme-only bootstrap: merge wip-bootstrap Jan Nieuwenhuizen 2019-12-01 14:01 ` Ludovic Courtès 2019-12-01 16:25 ` Timothy Sample 2019-12-01 16:55 ` Jan Nieuwenhuizen 2019-12-01 17:14 ` Ludovic Courtès 2019-12-01 17:21 ` Jan Nieuwenhuizen 2019-12-06 6:53 ` Jan Nieuwenhuizen 2019-12-07 22:31 ` Ludovic Courtès 2019-12-11 18:25 ` Jan Nieuwenhuizen 2019-12-15 21:33 ` Ludovic Courtès 2019-12-15 22:39 ` Timothy Sample 2019-12-15 22:45 ` Brett Gilio 2019-12-16 6:34 ` Jan Nieuwenhuizen 2019-12-16 19:28 ` Jan Nieuwenhuizen 2019-12-18 22:55 ` Jan Nieuwenhuizen 2019-12-19 11:08 ` Ludovic Courtès 2020-02-03 17:37 ` [bug#38390] [bug #38390] Building bootstrap Gash and Gash-Utils Timothy Sample 2020-02-05 8:58 ` Ludovic Courtès 2020-02-05 14:32 ` Timothy Sample 2020-02-05 21:33 ` Ludovic Courtès 2020-02-06 22:58 ` Jan Nieuwenhuizen 2020-02-07 11:00 ` Ludovic Courtès 2020-02-08 17:33 ` Timothy Sample 2020-02-08 22:32 ` Jan Nieuwenhuizen 2020-02-10 2:23 ` Timothy Sample 2020-02-11 13:56 ` Ludovic Courtès
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.