Subject: Re: bug#47786: Several build --keep-failed result in wrong env variables

From: Mark H Weaver <[email-masked]>
Date: Thu, 15 Apr 2021 16:24:34 -0400

tags 47786 + notabug
close 47786
thanks

Hi Dmitry,

Dmitry Matveyev <[email-masked]> writes:

> I use guix on Arch Linux, version
> 050be36cbf3a42199f64f2e44c59f1cb1b3afab5.
>
> Several invocations of guix build --keep-failed creates directories in
> /tmp like this one guix-build-hello-2.10.drv-0 for 1st build and then
> guix-build-hello-2.10.drv-1 for 2nd and so on (with last digit
> increasing). But environment variables for all of them are set to point
> to the very 1st directory.

This is the intended behavior, although I agree that it can be
surprising.

The environment variables refer to "/tmp/guix-build-….drv-0" because
within the build container, the directory is _always_ named
"/tmp/guix-build-….drv-0", regardless of what name was given to the
directory outside of the build container.

In general, where practical, we try to isolate the build container from
irrelevant details about the host system (such as the contents of /tmp),
because those details might leak into the build outputs, compromising
reproducibility.

For example, some packages retain the absolute file name of the build
directory, as an aid to developers when users report bugs.
Reproducibility of such package builds would be lost if the build
directory name varied depending on the contents on /tmp on the host
system.

Does that make sense?

Thanks for the report,

      Mark