unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Bootstrap binaries
@ 2024-12-21 22:11 Stefan
  0 siblings, 0 replies; 9+ messages in thread
From: Stefan @ 2024-12-21 22:11 UTC (permalink / raw)
  To: guix-devel, janneke, Ekaitz Zarraga, Efraim Flashner

Hi!

I'm playing around with the bootstrapping of Guix.  I figured out that at the very beginning executables for bash, mkdir, xz, tar, get downloaded into the store, which is done by some Guile, I think it is (default-guile).  Then a guile-*.tar.xz file is downloaded and extracted into the store by a crafted shell script using the former bash as shebang and the other executables for creation of the directory in the store and extraction.  This way we get the %bootstrap-guile and this is all in (gnu packages bootstrap).

Then the story continues in (gnu packages commencement), which uses %bootstrap-guile to build bootar, gash-boot, gash-utils-boot and stage0-posix.  The surprising part is that stage0-posix contains a kaem-optional-seed per architecture, which is a minimal shell implementation as another binary executable!

So up to this point these seven binary blobs are needed: (default-guile), bash, mkdir, xz, tar, %bootstrap-guile, kaem-optional-seed.

And up to this point three shell implementations are in use: bash, gash, kaem-optional-seed.

While playing around with all this I found a possibility to avoid five of these binary blobs, but it comes at the cost of using (default-guile) twice on the build-side.

• Build bootar-dirty with (default-guile), make use of #:allowed-references (list (default-guile) "out").
• Build %bootstrap-guile with (default-guile) and bootar-dirty, make use of #:allowed-references '().
• Build another bootar with %bootstrap-guile, make use of #:allowed-references (list %bootstrap-guile "out").

 From here on only %bootstrap-guile and bootar will be used.

• Build gash-boot.
• Build gash-utils-boot.
• Build STAGE0-POSIX-bootstrap, but deleting kaem-optional-seed and using gash-boot instead.

So at the cost of using (default-guile) twice on the build-side, the only remaining binary blobs are (default-guile) and guile-*.tar.xz.  The only shell implementation in use is gash.

Is this a possible and welcome alternative?

What are the implications of using (default-guile) on the build side?  Is this a bad idea?  Won't it (or some other Guile) be used anyway in future, if the guix-daemon is rewritten in Guile?

Is there a better Guile than (default-guile) to use?  Which is the Guile used by Guix itself?

Finally, I'm not clear about the advantage of trusting %bootstrap-guile alongside (default-guile).  Why should it be better to trust both than only one of them?  Well, the hash of %bootstrap-guile is checked.  But it is checked by (default-guile).


Bye

Stefan














^ permalink raw reply	[flat|nested] 9+ messages in thread
* Re: GSoC ideas
@ 2016-02-08 10:45 Tomáš Čech
  2016-02-08 17:24 ` Christopher Allan Webber
  0 siblings, 1 reply; 9+ messages in thread
From: Tomáš Čech @ 2016-02-08 10:45 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 865 bytes --]

On Sat, Feb 06, 2016 at 10:54:34AM -0800, Christopher Allan Webber wrote:
>Maybe we should have a place to collect ideas?
>
>Anyway, here would be my top items for GSoC:
>
> - An installer wizard (written in Guile of course!)
> - g-expressions which generate packages of the Guix package manager for
>   .deb and .rpm based distros, and work to get those upstream in Debian
>   and Fedora

What would be purpose of that? Do you plan to use some other store path so it
won't collide with Guix maintained installation on the same machine?

OTOH it may be interesting to generate only (in my case) RPM metadata
so native system's package manager can track Guix generated files and
use pre/post install scripts for interactions with Guix (to
install/remove/protect them). That would glue Guix to system even
better. Just wild idea when thinking about your idea...

S_W

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

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

end of thread, other threads:[~2024-12-21 22:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-21 22:11 Bootstrap binaries Stefan
  -- strict thread matches above, loose matches on Subject: below --
2016-02-08 10:45 GSoC ideas Tomáš Čech
2016-02-08 17:24 ` Christopher Allan Webber
2016-02-08 18:45   ` Thompson, David
2016-02-08 19:47     ` Christopher Allan Webber
2016-02-08 20:43       ` Pjotr Prins
2016-02-23 23:00         ` Diane Trout
2016-02-23 23:52           ` Guix on Debian (was: GSoC ideas) Christopher Allan Webber
2016-02-24  0:02             ` Leo Famulari
2016-02-24  9:03               ` Ricardo Wurmus
2016-02-24  9:16                 ` Efraim Flashner
2016-02-24  9:36                   ` Jookia
2016-02-25 18:15                     ` Bootstrap binaries Ludovic Courtès
2016-02-25 20:26                       ` Christopher Allan Webber
2016-02-26 23:19                         ` Ludovic Courtès
2016-02-28 10:51                           ` Jookia
2016-02-28 15:08                             ` Ludovic Courtès
2016-02-28 15:10                               ` Jookia
2016-02-29  5:22                                 ` Christopher Allan Webber
2016-02-29 10:01                                 ` Ludovic Courtès

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

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

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