packages: Fix 'base32' used before definition warning.

Before this change, compiling the module would emit the following message:
"guix/packages.scm:213:25: warning: macro `base32' used before definition".

* guix/packages.scm (define-compile-time-decoder)
(base32, base64): Move definitions to the top of the module.
This commit is contained in:
Maxim Cournoyer 2021-01-10 08:42:42 -05:00
parent 58780f844b
commit 8152fd1af5
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -167,6 +167,25 @@ (define-module (guix packages)
;;; ;;;
;;; Code: ;;; Code:
(define-syntax-rule (define-compile-time-decoder name string->bytevector)
"Define NAME as a macro that runs STRING->BYTEVECTOR at macro expansion time
if possible."
(define-syntax name
(lambda (s)
"Return the bytevector corresponding to the given textual
representation."
(syntax-case s ()
((_ str)
(string? (syntax->datum #'str))
;; A literal string: do the conversion at expansion time.
(with-syntax ((bv (string->bytevector (syntax->datum #'str))))
#''bv))
((_ str)
#'(string->bytevector str))))))
(define-compile-time-decoder base32 nix-base32-string->bytevector)
(define-compile-time-decoder base64 base64-decode)
;; Crytographic content hash. ;; Crytographic content hash.
(define-immutable-record-type <content-hash> (define-immutable-record-type <content-hash>
(%content-hash algorithm value) (%content-hash algorithm value)
@ -302,25 +321,6 @@ (define (print-origin origin port)
(set-record-type-printer! <origin> print-origin) (set-record-type-printer! <origin> print-origin)
(define-syntax-rule (define-compile-time-decoder name string->bytevector)
"Define NAME as a macro that runs STRING->BYTEVECTOR at macro expansion time
if possible."
(define-syntax name
(lambda (s)
"Return the bytevector corresponding to the given textual
representation."
(syntax-case s ()
((_ str)
(string? (syntax->datum #'str))
;; A literal string: do the conversion at expansion time.
(with-syntax ((bv (string->bytevector (syntax->datum #'str))))
#''bv))
((_ str)
#'(string->bytevector str))))))
(define-compile-time-decoder base32 nix-base32-string->bytevector)
(define-compile-time-decoder base64 base64-decode)
(define (origin-actual-file-name origin) (define (origin-actual-file-name origin)
"Return the file name of ORIGIN, either its 'file-name' field or the file "Return the file name of ORIGIN, either its 'file-name' field or the file
name of its URI." name of its URI."