[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.
--