guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Installing Guix on foreign distros


From: Ricardo Wurmus
Subject: Re: Installing Guix on foreign distros
Date: Thu, 11 Feb 2016 06:44:38 +0100
User-agent: mu4e 0.9.13; emacs 24.5.1

Jookia <address@hidden> writes:

> On Wed, Feb 10, 2016 at 09:53:01AM +0100, Tomáš Čech wrote:
>> I'm trying to push that to the main distribution but for that the
>> package may need some more work because I need to get rid of foreign
>> binaries (the ones in
>> $PREFIX/share/guile/site/2.0/gnu/packages/bootstrap/). So `zypper in
>> guix' for all openSUSE users is still my goal.
>> 
>> Any help on that from Guix side would be appreciated.
>> 
>> Besides this, thanks to our the OBS I should be able to setup build
>> for other RPM distributions (Fedora, CentOS) but it wasn't my focus
>> now.
>> 
>> Best regards,
>> 
>> Tomas
>
> I brought this up a bit earlier in IRC but you could rebuild the bootstrap
> binaries- but then they'd just be identical to the ones shipped. So are they
> really foreign then?

I wonder: can you *really* rebuild them?  Would that not require
reproducible builds, something that we try to achieve with Guix?  These
tarballs come from their upstream release servers, if I’m not mistaken.

Since the bootstrapping step starts with statically linked binaries of
tar (and some other tools) and the tarballs that are then unpacked with
that binary of tar, I don’t see how these binaries could possibly
be reproduced *exactly* on a foreign distro and seamlessly replace the
bundled binaries.

It would be amazing and quite a surprise if you *were* able to rebuild
them and thus reproduce them bit for bit.

~~

I wished we could reduce the number of bootstrap binaries down to little
more than just Guile and an old C compiler, i.e. implement a subset of
tar in Guile and use that to unpack the tarballs, then use the simple C
compiler to compile an old version of GCC (without C++), then use that
version of GCC to compile a GCC capable of building C++, then use that
GCC to build a modern GCC...

Since Guile is mostly written in Guile (and it is probably somewhat
easier to come to a point to trust it) there may be value in trying to
bootstrap from even less.

~~

Practically speaking, though, you probably cannot get around the
bootstrap binaries — not unless there was a way to arbitrarily
manipulate hashes or sneakily “seed” hashes at a certain level into the
graph (e.g. tell Guix that the binaries of GCC that are in the system
always have a particular hash even if they do not).

I don’t think a system like this would be desirable in general as it
undermines reproducibility and trust.  (I do see that something like
this might be useful for a shoddy port to MacOS, but ... ugh!  What’s
the point in that!)

~~ Rambling Ricardo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]