unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Tobias Geerinckx-Rice <me@tobias.gr>
To: "Wiktor Żelazny" <wz@freeshell.de>
Cc: help-guix@gnu.org
Subject: Re: "libc.so.6: version `GLIBC_2.33' not found" with guix time-machine --channels
Date: Sun, 09 Jan 2022 19:09:21 +0100	[thread overview]
Message-ID: <874k6cspts.fsf@nckx> (raw)
In-Reply-To: <20220109175706.e75fbkahrnzajacv@wzguix>

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

Hi Wiktor,

Regarding only

> in an attempt to force removal of old store items in hope that 
> they
> would be rebuilt and relinked to the new glibc. Unfortunately, 
> the
> problem persists.

which reveals a fundamental misunderstanding about Guix that could 
prevent you from grokking & fully enjoying it, which is why it's 
so important to correct.

I can't improve on Leo's excellent answer, but I can certainly 
repeat it, poorly, using different words!

Wiktor Żelazny 写道:
> Thank you for your prompt reply. What about a situation where 
> glibc is
> not an explicit package input? I suspect it is determined by the 
> build
> system definition in such a (common) scenario. I further assume 
> that
> when one runs
>
>    guix time-machine --commit=xxx -- environment pkg
>
> the pkg definition corresponding to the Guix version xxx is 
> used, but a
> *current* Guix binary is used to execute the environment.

What you describe sounds less like Guix, than how the average 
source-based package manager works today: using whatever random 
components and GCC version it happens to find lying around on the 
host system at build time.

Guix package builds are completely self-contained, and specify 
their complete build environment (like a closure).  This 
environment is in effect frozen in time and will never change.

‘guix time machine --commit=COMMIT -- COMMAND’ builds guix@COMMIT, 
and then everything to the right of the ‘--’ happens inside 
guix@COMMIT, i.e., ‘the past’.  There is no link to the present.

There is no way for an old package built with time-machine to link 
to the new glibc because the new glibc didn't *exist* in ‘the 
past’, which is all the build ‘sees’.  Assuming package P is 
bit-reproducible today, building it with guix time-machine in 25 
years will produce a binarily-exact copy.

> I’ve got this intuition that the current binary may assume the 
> build
> system involving a new glibc, whereas the cached xxx version of 
> pkg
> can be from the time when Guix defined a build system as using 
> an old
> glibc.

Understandable intuition coming from other systems, but not valid 
for Guix.

Your kernel analogy is more accurate: somehow, once released from 
its functionally pure build environment, package P is being fed a 
glibc it was never compiled against.

There are many ways this could happen and there's (obviously) a 
bug here, which can be fixed, but rebuilding old packages in the 
hopes to change them is a complete waste of time.

Kind regards,

T G-R

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 247 bytes --]

  parent reply	other threads:[~2022-01-09 18:54 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-08 15:11 "libc.so.6: version `GLIBC_2.33' not found" with guix time-machine --channels Wiktor Żelazny
2022-01-08 18:50 ` Leo Famulari
2022-01-09 17:57   ` Wiktor Żelazny
2022-01-09 18:03     ` Ricardo Wurmus
2022-01-09 18:49       ` Wiktor Żelazny
2022-02-03 14:18         ` Wiktor Żelazny
2022-01-09 19:37       ` André A. Gomes
2022-01-09 20:51         ` Ricardo Wurmus
2022-01-09 18:09     ` Tobias Geerinckx-Rice [this message]
2022-01-10 19:04       ` Wiktor Żelazny

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

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

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

  git send-email \
    --in-reply-to=874k6cspts.fsf@nckx \
    --to=me@tobias.gr \
    --cc=help-guix@gnu.org \
    --cc=wz@freeshell.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).