guix-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]