guix-patches
[Top][All Lists]
Advanced

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

[bug#32632] [PATCH 0/3] 'guix describe' and improved provenance tracking


From: Ludovic Courtès
Subject: [bug#32632] [PATCH 0/3] 'guix describe' and improved provenance tracking
Date: Tue, 4 Sep 2018 14:09:25 +0200

Hello Guix!

This patch series aims to unleash the power of the (guix describe) and (guix
channels) modules and related things.  Highlights:

  1. Add -p to ‘guix pull’ so you can do things like:

       guix pull --branch=core-updates -p craziness
       ./craziness/bin/guix package -u

  2. Add ‘guix describe’, which produces something like this:

       Generation 7     Sep 04 2018 12:27:18    (current)
         guix c0cfc62
           repository URL: /home/ludo/src/guix
           branch: origin/wip-describe
           commit: c0cfc62f6e0a1c77e28dd7099f512ea2c6c01566
         guix-hpc 779f4df
           repository URL: https://gitlab.inria.fr/guix-hpc/guix-hpc.git
           branch: origin/master
           commit: 779f4df63892a95de6efba259abf82e64951d4be

     or like that:

       (list (channel
               (name 'guix)
               (url "/home/ludo/src/guix")
               (commit
                 "c0cfc62f6e0a1c77e28dd7099f512ea2c6c01566"))
             (channel
               (name 'guix-hpc)
               (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git";)
               (commit
                 "779f4df63892a95de6efba259abf82e64951d4be")))

  3. Record “provenance meta-data” in manifest entries produced by ‘guix
     package’.  With this change, the ‘manifest’ file of new profiles
     contains extra properties like this:

       (manifest
         (version 3)
         (packages
           (("guile"
             "2.2.4"
             "out"
             "/gnu/store/p9wm67w3rfw3hlb9iljgvsfn84mz4w9d-guile-2.2.4"
             (propagated-inputs …)
             (search-paths …)
             (properties
               (provenance
                 (repository
                   (version 0)
                   (url "/home/ludo/src/guix")
                   (branch "origin/wip-describe")
                   (commit
                     "c0cfc62f6e0a1c77e28dd7099f512ea2c6c01566")))))
            ("starpu"
             "1.2.5"
             "out"
             "/gnu/store/i1rpm373yvbdxliqpbnmv7k0942xlcf0-starpu-1.2.5"
             (propagated-inputs ())
             (search-paths ())
             (properties
               (provenance
                 (repository
                   (version 0)
                   (url "/home/ludo/src/guix")
                   (branch "origin/wip-describe")
                   (commit
                     "c0cfc62f6e0a1c77e28dd7099f512ea2c6c01566"))
                 (repository
                   (version 0)
                   (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git";)
                   (branch "origin/master")
                   (commit
                     "779f4df63892a95de6efba259abf82e64951d4be"))))))))

     Currently the UI doesn’t use it at all but it could in the future.

Future work: optionally record ‘provenance’ properties for whole systems.

Caveat: this information should be added only by end-user tools, and it
should be possible to disable it because it introduces silent differences
in build results that break bit-reproducibility, pretty much like timestamps.
For example, I wouldn’t ‘guix pack’ or ‘guix system vm{,-image}’ to record
it by default.  Conceptually, this meta-data is also a “back edge” in that
it goes from build results to source whereas the whole functional mechanism
creates edges from source to build results.

Feedback welcome!

Ludo’.

Ludovic Courtès (3):
  pull: Add '--profile'.
  Add 'guix describe'.
  guix package: Record package provenance in manifest entries.

 Makefile.am               |   2 +
 doc/guix.texi             |  98 ++++++++++++++++++++++-
 guix/describe.scm         |   4 +-
 guix/profiles.scm         |   6 +-
 guix/scripts/describe.scm | 160 ++++++++++++++++++++++++++++++++++++++
 guix/scripts/package.scm  |  57 ++++++++++++--
 guix/scripts/pull.scm     |  22 ++++--
 po/guix/POTFILES.in       |   1 +
 tests/guix-describe.sh    |  47 +++++++++++
 9 files changed, 380 insertions(+), 17 deletions(-)
 create mode 100644 guix/scripts/describe.scm
 create mode 100644 tests/guix-describe.sh

-- 
2.18.0






reply via email to

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