From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37623) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fxA9n-0007IF-0T for guix-patches@gnu.org; Tue, 04 Sep 2018 08:10:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fxA9i-0008Ss-NJ for guix-patches@gnu.org; Tue, 04 Sep 2018 08:10:06 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:40082) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fxA9i-0008So-JS for guix-patches@gnu.org; Tue, 04 Sep 2018 08:10:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fxA9i-0002sN-CB for guix-patches@gnu.org; Tue, 04 Sep 2018 08:10:02 -0400 Subject: [bug#32632] [PATCH 0/3] 'guix describe' and improved provenance tracking Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37504) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fxA9M-0007Fg-Hx for guix-patches@gnu.org; Tue, 04 Sep 2018 08:09:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fxA9L-0008F7-Hi for guix-patches@gnu.org; Tue, 04 Sep 2018 08:09:40 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Tue, 4 Sep 2018 14:09:25 +0200 Message-Id: <20180904120925.23653-1-ludo@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 32632@debbugs.gnu.org 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