unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#45288] [PATCH] import/cran: Add input style "specification".
@ 2020-12-17  9:42 Ricardo Wurmus
       [not found] ` <handler.45288.B.160819819425599.ack@debbugs.gnu.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Ricardo Wurmus @ 2020-12-17  9:42 UTC (permalink / raw)
  To: 45288

* guix/import/cran.scm (%input-style): New parameter.
(format-inputs): Use it.
* guix/scripts/import/cran.scm (guix-import-cran): Set the %input-style
parameter.
 (%options): Add "--style" option.
* doc/guix.texi (Invoking guix import): Document it.
---
 doc/guix.texi                |  7 ++++++
 guix/import/cran.scm         | 13 +++++++++--
 guix/scripts/import/cran.scm | 45 ++++++++++++++++++++----------------
 3 files changed, 43 insertions(+), 22 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 392baf5910..74cd86be37 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -11009,6 +11009,13 @@ When @option{--recursive} is added, the importer will traverse the
 dependency graph of the given upstream package recursively and generate
 package expressions for all those packages that are not yet in Guix.
 
+When @option{--style=specification} is added, the importer will generate
+package definitions whose inputs are package specifications instead of
+references to package variables.  This is useful when generated package
+definitions are to be appended to existing user modules, as the list of
+used package modules need not be changed.  The default is
+@option{--style=variable}.
+
 When @option{--archive=bioconductor} is added, metadata is imported from
 @uref{https://www.bioconductor.org/, Bioconductor}, a repository of R
 packages for the analysis and comprehension of high-throughput
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 9d38be7a1e..fd44d80915 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -51,7 +51,9 @@
   #:use-module (guix upstream)
   #:use-module (guix packages)
   #:use-module (gnu packages)
-  #:export (cran->guix-package
+  #:export (%input-style
+
+            cran->guix-package
             bioconductor->guix-package
             cran-recursive-import
             %cran-updater
@@ -74,6 +76,9 @@
 ;;;
 ;;; Code:
 
+(define %input-style
+  (make-parameter 'variable)) ; or 'specification
+
 (define string->license
   (match-lambda
    ("AGPL-3" 'agpl3+)
@@ -128,7 +133,11 @@
 (define (format-inputs names)
   "Generate a sorted list of package inputs from a list of package NAMES."
   (map (lambda (name)
-         (list name (list 'unquote (string->symbol name))))
+         (case (%input-style)
+           ((specification)
+            (list name (list 'unquote (list 'specification->package name))))
+           (else
+            (list name (list 'unquote (string->symbol name))))))
        (sort names string-ci<?)))
 
 (define* (maybe-inputs package-inputs #:optional (type 'inputs))
diff --git a/guix/scripts/import/cran.scm b/guix/scripts/import/cran.scm
index 20e82ae2ca..4767bc082d 100644
--- a/guix/scripts/import/cran.scm
+++ b/guix/scripts/import/cran.scm
@@ -67,6 +67,10 @@ Import and convert the CRAN package for PACKAGE-NAME.\n"))
                  (lambda (opt name arg result)
                    (alist-cons 'repo (string->symbol arg)
                                (alist-delete 'repo result))))
+         (option '(#\s "style") #t #f
+                 (lambda (opt name arg result)
+                   (alist-cons 'style (string->symbol arg)
+                               (alist-delete 'style result))))
          (option '(#\r "recursive") #f #f
                  (lambda (opt name arg result)
                    (alist-cons 'recursive #t result)))
@@ -93,23 +97,24 @@ Import and convert the CRAN package for PACKAGE-NAME.\n"))
                              value)
                             (_ #f))
                            (reverse opts))))
-    (match args
-      ((package-name)
-       (if (assoc-ref opts 'recursive)
-           ;; Recursive import
-           (with-error-handling
-             (map package->definition
-                  (filter identity
-                          (cran-recursive-import package-name
-                                                 #:repo (or (assoc-ref opts 'repo) 'cran)))))
-           ;; Single import
-           (let ((sexp (cran->guix-package package-name
-                                           #:repo (or (assoc-ref opts 'repo) 'cran))))
-             (unless sexp
-               (leave (G_ "failed to download description for package '~a'~%")
-                      package-name))
-             sexp)))
-      (()
-       (leave (G_ "too few arguments~%")))
-      ((many ...)
-       (leave (G_ "too many arguments~%"))))))
+    (parameterize ((%input-style (assoc-ref opts 'style)))
+      (match args
+        ((package-name)
+         (if (assoc-ref opts 'recursive)
+             ;; Recursive import
+             (with-error-handling
+               (map package->definition
+                    (filter identity
+                            (cran-recursive-import package-name
+                                                   #:repo (or (assoc-ref opts 'repo) 'cran)))))
+             ;; Single import
+             (let ((sexp (cran->guix-package package-name
+                                             #:repo (or (assoc-ref opts 'repo) 'cran))))
+               (unless sexp
+                 (leave (G_ "failed to download description for package '~a'~%")
+                        package-name))
+               sexp)))
+        (()
+         (leave (G_ "too few arguments~%")))
+        ((many ...)
+         (leave (G_ "too many arguments~%")))))))
-- 
2.29.2






^ permalink raw reply related	[flat|nested] 2+ messages in thread

* bug#45288: [PATCH] import/cran: Add input style "specification".
       [not found] ` <handler.45288.B.160819819425599.ack@debbugs.gnu.org>
@ 2020-12-22 15:19   ` Ricardo Wurmus
  0 siblings, 0 replies; 2+ messages in thread
From: Ricardo Wurmus @ 2020-12-22 15:19 UTC (permalink / raw)
  To: 45288-done

Pushed with commit 5f5e3873d735d13824c172d779e6095d6947f340.

-- 
Ricardo




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-12-22 15:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-17  9:42 [bug#45288] [PATCH] import/cran: Add input style "specification" Ricardo Wurmus
     [not found] ` <handler.45288.B.160819819425599.ack@debbugs.gnu.org>
2020-12-22 15:19   ` bug#45288: " Ricardo Wurmus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).