guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] import: pypi: Detect inputs.


From: Ludovic Courtès
Subject: Re: [PATCH] import: pypi: Detect inputs.
Date: Sun, 07 Jun 2015 22:03:34 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Cyril Roelandt <address@hidden> skribis:

> * guix/import/pypi.scm (compute-inputs, guess-requirements): New procedures.

Nice!

Please mention the ‘guix-hash-url’, ‘make-pypi-sexp’,
‘python->package-name’, etc. changes and the tests.

> +(define (maybe-inputs python->package-name inputs)
> +  (match inputs
> +    (()
> +     '())
> +    ((inputs ...)
> +     `((,python->package-name (,'quasiquote ,inputs))))))

Please add a docstring.  The first argument is misnamed: There’s only on
call site and its value is 'inputs, so I think you should remove this
argument.

> +(define (guess-requirements source-url tarball)
> +  "Given SOURCE-URL and a TARBALL of the package, return a list of the 
> required
> +packages specified in the requirements.txt file."

Perhaps this should mention that TARBALL is extracted in the current
directory.

> +  (define (tarball-directory url)
> +    "Given the URL of the package's tarball, return the name of the directory
> +that will be created upon decompressing it."

Use comments instead of docstrings for internal procedures.  Also
mention the #f return value.

> +    (let ((basename (substring url (+ 1 (string-rindex url #\/)))))
> +    (cond

The opening paren should be under the ‘e’ of ‘let’.

> +     ((string-suffix? ".tar.gz" basename)
> +      (string-drop-right basename 7))
> +     ((string-suffix? ".tar.bz2" basename)
> +      (string-drop-right basename 8))
> +     (else #f))))

Would be nice to emit a warning like “unsupported archive format; cannot
determine package dependencies” in the #f case.

> +          (if (zero? (system* "tar" "xf" tarball req-file))
> +              (dynamic-wind
> +                (const #t)
> +                (lambda ()
> +                  (read-requirements req-file))
> +                (lambda ()
> +                  (delete-file req-file)
> +                  (rmdir dirname)))
> +              '()))

When ‘tar’ exits with non-zero, it would be nice to report the failure
and exit value using ‘warning’ from (guix ui).

> +             ,@(maybe-inputs 'inputs
> +                (compute-inputs source-url temp))

Second line should be aligned with 'inputs.

> +           (match url
> +             ("https://pypi.python.org/pypi/foo/json";
> +              (with-output-to-file file-name
> +                (lambda ()
> +                  (display test-json))))
> +             ("https://example.com/foo-1.0.0.tar.gz";
> +               (begin
> +                 (mkdir "foo-1.0.0")
> +                 (with-output-to-file "foo-1.0.0/requirements.txt"
> +                   (lambda ()
> +                     (display test-requirements)))
> +                 (system* "tar" "czvf" file-name "foo-1.0.0/")
> +                 (system* "rm" "-rf" "foo-1.0.0")

Use ‘delete-file-recursively’ here.

Could you send an updated patch?

Thank you!

Ludo’.



reply via email to

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