[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 6/7] import cran: Add "recursive" option.
From: |
Ricardo Wurmus |
Subject: |
Re: [PATCH 6/7] import cran: Add "recursive" option. |
Date: |
Tue, 14 Jun 2016 17:30:37 +0200 |
User-agent: |
mu4e 0.9.16; emacs 24.5.1 |
Ludovic Courtès <address@hidden> writes:
> Ricardo Wurmus <address@hidden> skribis:
>
>> * guix/scripts/import/cran.scm: (%options): Add "recursive" option.
>> (guix-import-cran): Handle "recursive" option.
>> ---
>> guix/scripts/import/cran.scm | 26 ++++++++++++++++++++------
>> 1 file changed, 20 insertions(+), 6 deletions(-)
>>
>> diff --git a/guix/scripts/import/cran.scm b/guix/scripts/import/cran.scm
>> index ace1123..4cae9da 100644
>> --- a/guix/scripts/import/cran.scm
>> +++ b/guix/scripts/import/cran.scm
>> @@ -63,6 +63,9 @@ 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 '(#\r "recursive") #f #f
>> + (lambda (opt name arg result)
>> + (alist-cons 'recursive #t result)))
>> %standard-import-options))
>>
>>
>> @@ -88,12 +91,23 @@ Import and convert the CRAN package for
>> PACKAGE-NAME.\n"))
>> (reverse opts))))
>> (match args
>> ((package-name)
>> - (let ((sexp (cran->guix-package package-name
>> - (or (assoc-ref opts 'repo) 'cran))))
>> - (unless sexp
>> - (leave (_ "failed to download description for package '~a'~%")
>> - package-name))
>> - sexp))
>> + (if (assoc-ref opts 'recursive)
>> + ;; Recursive import
>> + (map (match-lambda
>> + ((and (label . (('package ('name name) . rest)))
>> + (label . (pkg)))
>> + `(define-public ,(string->symbol name)
>> + ,pkg))
>
> Perhaps it could check with ‘find-packages-by-name’ whether NAME already
> exists?
The “recursive-import” method currently only does this for
dependencies. A check would involve generating “(guix-name
package-name)”, but “guix-name” is defined in “guix/import/cran.scm”.
Should this check happen in the “recursive-import” procedure instead?
>> + (_ #f))
>> + (recursive-import package-name
>> + (or (assoc-ref opts 'repo) 'cran)))
>> + ;; Single import
>> + (let ((sexp (cran->guix-package package-name
>> + (or (assoc-ref opts 'repo)
>> 'cran))))
>> + (unless sexp
>> + (leave (_ "failed to download description for package
>> '~a'~%")
>> + package-name))
>> + sexp)))
>
> Do you think this could be moved to (guix scripts import)? We would
> have to change other importers to return an empty list/stream of
> dependencies for now.
Yes, I’ll do that.
~~ Ricardo
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH 6/7] import cran: Add "recursive" option.,
Ricardo Wurmus <=