guix-devel
[Top][All Lists]
Advanced

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

Re: Reproducible environments


From: Pjotr Prins
Subject: Re: Reproducible environments
Date: Tue, 6 Oct 2015 14:00:43 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Hi Konrad,

On Tue, Oct 06, 2015 at 12:50:52PM +0200, Konrad Hinsen wrote:
> Hi everyone,
> 
> I am exploring the use of Guix for reproducible environments in scientific 
> computing. My goals are very similar to those described in the paper 
> "Reproducible and User-Controlled Software Environments in HPC with Guix".
> 
> Section 4.1 of that paper says that a given environment, defined by a Guix 
> profile, can be reproduced given (1) a manifest and (2) the Guix commit 
> defining all the packages.
> 
> Problem #1: After reading the manual twice, I still don't see how I can tell 
> "guix package" to use a given Guix commit.

At this point (correct me if I am wrong), the route to take is to
checkout a commit of the Guix source tree (with packages). The SHA
value is captured on Hydra in the build itself. That is the only way
to fully reproduce GUIX as a point in time. And use guix package using
that tree.

See the revision of this package: 
http://hydra.gnu.org/build/694326#tabs-buildinputs

There is a similar discussion on the NIX mailing list about this right
now.

> Problem #2: What if my profile contains packages from several Guix commits 
> (typically for getting specific older versions)? Or if it contains packages 
> defined outside of the Guix distribution, in Guile modules on 
> GUIX_PACKAGE_PATH?

You'd have to create a new profile that is tied to above build to be
fully reprocible. Managing multiple profiles is pretty
straightforward (using the -p switch). I use a compile profile for
guix, for example, containing gcc etc.

> If my understanding of Guix is correct, all the required information for 
> rebuilding everything identically is available at a lower level, in the 
> derivation files. Would it be feasible to collect all the derivation files 
> underlying a profile in a tar archive, and then have them rebuilt and added 
> to a fresh profile in an automatized way?

I don't think we need that functionality when you accept that a git
source tree of GUIX contains all the information you need. Maybe
others have ideas to make use a bit more convenient for end-users
without git - but the current setup works for me to recreate software
packages.

Note that you can also tar ball a binary package with all its
dependencies (using guix archive) and distribute that. That is 
reproducible at the binary level. That may be more useful for end-users.

Pj.
-- 



reply via email to

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