unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: 32632@debbugs.gnu.org
Subject: [bug#32632] [PATCH 0/3] 'guix describe' and improved provenance tracking
Date: Tue,  4 Sep 2018 14:09:25 +0200	[thread overview]
Message-ID: <20180904120925.23653-1-ludo@gnu.org> (raw)

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	other threads:[~2018-09-04 12:10 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-04 12:09 Ludovic Courtès [this message]
2018-09-04 12:23 ` [bug#32632] [PATCH 1/3] pull: Add '--profile' Ludovic Courtès
2018-09-04 12:23   ` [bug#32632] [PATCH 2/3] Add 'guix describe' Ludovic Courtès
2018-09-04 12:23   ` [bug#32632] [PATCH 3/3] guix package: Record package provenance in manifest entries Ludovic Courtès
2018-09-07  9:45 ` bug#32632: [PATCH 0/3] 'guix describe' and improved provenance tracking Ludovic Courtès

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=20180904120925.23653-1-ludo@gnu.org \
    --to=ludo@gnu.org \
    --cc=32632@debbugs.gnu.org \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

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