summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-01-17 13:48:23 +0100
committerLudovic Courtès <ludo@gnu.org>2020-01-17 14:22:07 +0100
commit282f91790a5bbd0d9b3223c4bfd45b66e418c200 (patch)
treebe85d26a537a459d3cb4339f53f6c7c69087ed00 /guix
parent0688ca7471b8c82f802db7ddaed8695f59c751ff (diff)
downloadpatches-282f91790a5bbd0d9b3223c4bfd45b66e418c200.tar
patches-282f91790a5bbd0d9b3223c4bfd45b66e418c200.tar.gz
import: opam: Avoid uses of '@@' in tests.
* guix/import/opam.scm (string-pat, multiline-string, list-pat) (dict, condition): Export. (opam-fetch): Add optional 'repository' parameter. (opam->guix-package): Add #:repository parameter and pass it to 'opam-fetch'. * tests/opam.scm ("opam->guix-package"): Remove use of 'mock' and pass TEST-REPO to 'opam->guix-package' instead. ("parse-strings", "parse-multiline-strings") ("parse-lists", "parse-dicts", "parse-conditions"): Remove uses of '@@', which are no longer needed.
Diffstat (limited to 'guix')
-rw-r--r--guix/import/opam.scm21
1 files changed, 16 insertions, 5 deletions
diff --git a/guix/import/opam.scm b/guix/import/opam.scm
index e258c4197f..394415fdd4 100644
--- a/guix/import/opam.scm
+++ b/guix/import/opam.scm
@@ -1,3 +1,4 @@
+;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
@@ -38,7 +39,14 @@
#:use-module ((guix licenses) #:prefix license:)
#:export (opam->guix-package
opam-recursive-import
- %opam-updater))
+ %opam-updater
+
+ ;; The following patterns are exported for testing purposes.
+ string-pat
+ multiline-string
+ list-pat
+ dict
+ condition))
;; Define a PEG parser for the opam format
(define-peg-pattern comment none (and "#" (* STRCHR) "\n"))
@@ -233,8 +241,8 @@ path to the repository."
(list dependency (list 'unquote (string->symbol dependency))))
(ocaml-names->guix-names lst)))
-(define (opam-fetch name)
- (and-let* ((repository (get-opam-repository))
+(define* (opam-fetch name #:optional (repository (get-opam-repository)))
+ (and-let* ((repository repository)
(version (find-latest-version name repository))
(file (string-append repository "/packages/" name "/" name "." version "/opam")))
`(("metadata" ,@(get-metadata file))
@@ -242,8 +250,11 @@ path to the repository."
(substring version 1)
version)))))
-(define (opam->guix-package name)
- (and-let* ((opam-file (opam-fetch name))
+(define* (opam->guix-package name #:key repository)
+ "Import OPAM package NAME from REPOSITORY (a directory name) or, if
+REPOSITORY is #f, from the official OPAM repository. Return a 'package' sexp
+or #f on failure."
+ (and-let* ((opam-file (opam-fetch name repository))
(version (assoc-ref opam-file "version"))
(opam-content (assoc-ref opam-file "metadata"))
(url-dict (metadata-ref opam-content "url"))