summaryrefslogtreecommitdiff
path: root/guix/import
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2019-03-28 00:26:00 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2019-07-02 10:07:59 +0900
commit01589acc5e114e46e314777bc0d60ebfa620e4f8 (patch)
treed385c24ab2aa04c614543479104d77fc45d7dd07 /guix/import
parent0f0651295e742b399af4436f350662afb4a6f7af (diff)
downloadgnu-guix-01589acc5e114e46e314777bc0d60ebfa620e4f8.tar
gnu-guix-01589acc5e114e46e314777bc0d60ebfa620e4f8.tar.gz
import: pypi: Do not consider requirements.txt files.
PyPI packages are mandated to have a setup.py file, which contains a listing of the required dependencies. The setuptools/distutils machinery embed metadata in the archives they produce, which contains this information. There is no need nor gain to collect the requirements from a "requirements.txt" file, as it is not the true record of dependencies for PyPI packages and may contain extraneous requirements or not exist at all. * guix/import/pypi.scm (guess-requirements): Update comment. [guess-requirements-from-source]: Do not attempt to parse the file requirements.txt. Streamline logic. * tests/pypi.scm (test-requires.txt): Rename from test-requirements, to hint at the file being tested. ("pypi->guix-package"): Adapt so that the fake package contains a requires.txt file rather than a requirements.txt file. ("pypi->guix-package, wheels"): Likewise.
Diffstat (limited to 'guix/import')
-rw-r--r--guix/import/pypi.scm35
1 files changed, 13 insertions, 22 deletions
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index 3a20fc4b9b..8269aa61d7 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -206,35 +206,26 @@ cannot determine package dependencies"))
(call-with-temporary-directory
(lambda (dir)
(let* ((pypi-name (string-take dirname (string-rindex dirname #\-)))
- (req-files (list (string-append dirname "/requirements.txt")
- (string-append dirname "/" pypi-name ".egg-info"
- "/requires.txt")))
- (exit-codes (map (lambda (file-name)
- (parameterize ((current-error-port (%make-void-port "rw+"))
- (current-output-port (%make-void-port "rw+")))
- (system* "tar" "xf" tarball "-C" dir file-name)))
- req-files)))
- ;; Only one of these files needs to exist.
- (if (any zero? exit-codes)
- (match (find-files dir)
- ((file . _)
- (read-requirements file))
- (()
- (warning (G_ "No requirements file found.\n"))))
+ (requires.txt (string-append dirname "/" pypi-name
+ ".egg-info" "/requires.txt"))
+ (exit-code (parameterize ((current-error-port (%make-void-port "rw+"))
+ (current-output-port (%make-void-port "rw+")))
+ (system* "tar" "xf" tarball "-C" dir requires.txt))))
+ (if (zero? exit-code)
+ (read-requirements (string-append dir "/" requires.txt))
(begin
- (warning (G_ "Failed to extract requirements files\n"))
+ (warning
+ (G_ "Failed to extract file: ~a from source.~%")
+ requires.txt)
'())))))
'())))
- ;; First, try to compute the requirements using the wheel, since that is the
- ;; most reliable option. If a wheel is not provided for this package, try
- ;; getting them by reading either the "requirements.txt" file or the
- ;; "requires.txt" from the egg-info directory from the source tarball. Note
- ;; that "requirements.txt" is not mandatory, so this is likely to fail.
+ ;; First, try to compute the requirements using the wheel, else, fallback to
+ ;; reading the "requires.txt" from the egg-info directory from the source
+ ;; tarball.
(or (guess-requirements-from-wheel)
(guess-requirements-from-source)))
-
(define (compute-inputs source-url wheel-url tarball)
"Given the SOURCE-URL of an already downloaded TARBALL, return a list of
name/variable pairs describing the required inputs of this package. Also