From e4c245f8a5f6b6485f980b9c4274909ee8ef567a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Sun, 1 Jul 2012 17:32:03 +0200
Subject: [PATCH] Add a `base32' macro, for convenience.

* guix/packages.scm (base32): New macro.

* distro/base.scm (libsigsegv, gawk, hello): Use it.
---
 distro/base.scm   |  9 +++------
 guix/packages.scm | 12 ++++++++++++
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/distro/base.scm b/distro/base.scm
index 9570b6d6846..ca98bf0d69c 100644
--- a/distro/base.scm
+++ b/distro/base.scm
@@ -36,8 +36,7 @@ (define-public libsigsegv
             (method http-fetch)
             (uri "http://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.10.tar.gz")
             (sha256
-             (nix-base32-string->bytevector  ; TODO: make conversion implicit
-              "16hrs8k3nmc7a8jam5j1fpspd6sdpkamskvsdpcw6m29vnis8q44"))))
+             (base32 "16hrs8k3nmc7a8jam5j1fpspd6sdpkamskvsdpcw6m29vnis8q44"))))
    (build-system gnu-build-system)
    (outputs '("out" "lib"))                   ; separate libdir from the rest
    (home-page "http://www.gnu.org/software/libsigsegv/")
@@ -59,8 +58,7 @@ (define-public gawk
             (method http-fetch)
             (uri "http://ftp.gnu.org/gnu/gawk/gawk-4.0.0.tar.bz2")
             (sha256
-             (nix-base32-string->bytevector
-              "0sss7rhpvizi2a88h6giv0i7w5h07s2fxkw3s6n1hqvcnhrfgbb0"))))
+             (base32 "0sss7rhpvizi2a88h6giv0i7w5h07s2fxkw3s6n1hqvcnhrfgbb0"))))
    (build-system gnu-build-system)
    (arguments (case-lambda
                 ((system)
@@ -94,8 +92,7 @@ (define-public hello
             (method http-fetch)
             (uri "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")
             (sha256
-             (nix-base32-string->bytevector  ; TODO: make conversion implicit
-              "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))))
+             (base32 "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))))
    (build-system gnu-build-system)
    (arguments '(#:configure-flags
                 `("--disable-dependency-tracking"
diff --git a/guix/packages.scm b/guix/packages.scm
index 0d5823ad5d6..1d0cf229b78 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -35,6 +35,7 @@ (define-module (guix packages)
             package-source-method
             package-source-sha256
             package-source-file-name
+            base32
 
             package
             package?
@@ -102,6 +103,17 @@ (define-record-type* <package-source>
   (file-name package-source-file-name                ; optional file name
              (default #f)))
 
+(define-syntax base32
+  (lambda (s)
+    "Return the bytevector corresponding to the given Nix-base32
+representation."
+    (syntax-case s ()
+      ((_ str)
+       (string? (syntax->datum #'str))
+       (with-syntax ((bv (nix-base32-string->bytevector
+                          (syntax->datum #'str))))
+         #''bv)))))
+
 ;; A package.
 (define-record-type* <package>
   package make-package
-- 
GitLab