GNU bug report logs -
#51307
[PATCH 0/2] guix hash: eases conversion
Previous Next
Reported by: zimoun <zimon.toutoune <at> gmail.com>
Date: Wed, 20 Oct 2021 16:51:01 UTC
Severity: normal
Tags: patch
Done: zimoun <zimon.toutoune <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 51307 <at> debbugs.gnu.org (full text, mbox):
* guix/scripts/hash.scm (guix-hash)[package?]: New procedure.
[hash-to-display]: Use it.
* tests/guix-hash.scm: New test.
---
guix/scripts/hash.scm | 19 +++++++++++++++++--
tests/guix-hash.sh | 10 ++++++++++
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/guix/scripts/hash.scm b/guix/scripts/hash.scm
index f3363549d3..4f0d41629f 100644
--- a/guix/scripts/hash.scm
+++ b/guix/scripts/hash.scm
@@ -22,6 +22,9 @@
(define-module (guix scripts hash)
#:use-module (gcrypt hash)
+ #:use-module ((gnu packages) #:select (find-best-packages-by-name))
+ #:use-module (guix packages)
+ #:use-module ((guix utils) #:select (package-name->name+version))
#:use-module (guix serialization)
#:use-module (guix ui)
#:use-module (guix scripts)
@@ -48,8 +51,8 @@ (define %default-options
(hash-algorithm . ,(hash-algorithm sha256))))
(define (show-help)
- (display (G_ "Usage: guix hash [OPTION] FILE
-Return the cryptographic hash of FILE.\n"))
+ (display (G_ "Usage: guix hash [OPTION] FILE-OR-PACKAGE
+Return the cryptographic hash of FILE-OR-PACKAGE.\n"))
(newline)
(display (G_ "\
Supported formats: 'base64', 'nix-base32' (default), 'base32',
@@ -141,6 +144,12 @@ (define (directory? file)
((directory) #t)
(else #f)))
+ (define (package? spec)
+ (let-values (((name version) (package-name->name+version spec)))
+ (match (find-best-packages-by-name name version)
+ ((package) package)
+ (_ #f))))
+
(let* ((opts (parse-options))
(args (filter-map (match-lambda
(('argument . value)
@@ -182,6 +191,12 @@ (define (hash-to-display thing)
("-" (with-error-handling
(fmt (port-hash (assoc-ref opts 'hash-algorithm)
(current-input-port)))))
+ ((? package? spec)
+ (let* ((package (package? spec))
+ (origin (package-source package))
+ (content-hash (origin-hash origin))
+ (hash (content-hash-value content-hash)))
+ (fmt hash)))
(x
(leave (G_ "wrong argument~%")))))
diff --git a/tests/guix-hash.sh b/tests/guix-hash.sh
index c4461fa955..41bd2b1588 100644
--- a/tests/guix-hash.sh
+++ b/tests/guix-hash.sh
@@ -1,6 +1,7 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2013, 2014, 2016, 2020, 2021 Ludovic Courtès <ludo <at> gnu.org>
# Copyright © 2016 Jan Nieuwenhuizen <janneke <at> gnu.org>
+# Copyright © 2021 Simon Tournier <zimon.toutoune <at> gmail.com>
#
# This file is part of GNU Guix.
#
@@ -65,3 +66,12 @@ test `guix hash -r $tmpdir -x` = 10k1lw41wyrjf9mxydi0is5nkpynlsvgslinics4ppir13g
# Without '-r', this should fail.
! guix hash "$tmpdir"
+cat > "$tmpdir/foo.scm"<<EOF
+(use-modules (guix packages)
+ (gnu packages base)
+ (guix base16))
+(format #t "~a~%"
+ (bytevector->base16-string
+ (content-hash-value (origin-hash (package-source hello)))))
+EOF
+test `guix hash hello -f base16` = `guix repl -- $tmpdir/foo.scm`
--
2.32.0
This bug report was last modified 3 years and 155 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.