mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 23:46:13 -05:00
Merge branch 'python-build-system'.
This commit is contained in:
commit
03e856ddf5
42 changed files with 1044 additions and 1692 deletions
|
@ -3220,6 +3220,11 @@ the @code{#:python} parameter. This is a useful way to force a package
|
|||
to be built for a specific version of the Python interpreter, which
|
||||
might be necessary if the package is only compatible with a single
|
||||
interpreter version.
|
||||
|
||||
By default guix calls @code{setup.py} under control of
|
||||
@code{setuptools}, much like @command{pip} does. Some packages are not
|
||||
compatible with setuptools (and pip), thus you can disable this by
|
||||
setting the @code{#:use-setuptools} parameter to @code{#f}.
|
||||
@end defvr
|
||||
|
||||
@defvr {Scheme Variable} perl-build-system
|
||||
|
@ -13806,7 +13811,6 @@ for instance, the module python-dateutil is packaged under the names
|
|||
starts with @code{py} (e.g. @code{pytz}), we keep it and prefix it as
|
||||
described above.
|
||||
|
||||
|
||||
@subsubsection Specifying Dependencies
|
||||
@cindex inputs, for Python packages
|
||||
|
||||
|
@ -13822,6 +13826,12 @@ following check list to determine which dependency goes where.
|
|||
|
||||
@itemize
|
||||
|
||||
@item
|
||||
We currently package Python 2 with @code{setuptools} and @code{pip}
|
||||
installed like Python 3.4 has per default. Thus you don't need to
|
||||
specify either of these as an input. @command{guix lint} will warn you
|
||||
if you do.
|
||||
|
||||
@item
|
||||
Python dependencies required at run time go into
|
||||
@code{propagated-inputs}. They are typically defined with the
|
||||
|
@ -13836,8 +13846,7 @@ testing---e.g., those in @code{tests_require}---go into
|
|||
propagated because they are not needed at run time, and (2) in a
|
||||
cross-compilation context, it's the ``native'' input that we'd want.
|
||||
|
||||
Examples are @code{setuptools}, which is usually needed only at build
|
||||
time, or the @code{pytest}, @code{mock}, and @code{nose} test
|
||||
Examples are the @code{pytest}, @code{mock}, and @code{nose} test
|
||||
frameworks. Of course if any of these packages is also required at
|
||||
run-time, it needs to go to @code{propagated-inputs}.
|
||||
|
||||
|
|
|
@ -820,6 +820,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/pyqt-configure.patch \
|
||||
%D%/packages/patches/python-2-deterministic-build-info.patch \
|
||||
%D%/packages/patches/python-2.7-search-paths.patch \
|
||||
%D%/packages/patches/python-2.7-site-prefixes.patch \
|
||||
%D%/packages/patches/python-2.7-source-date-epoch.patch \
|
||||
%D%/packages/patches/python-3-deterministic-build-info.patch \
|
||||
%D%/packages/patches/python-3-search-paths.patch \
|
||||
|
|
|
@ -1332,8 +1332,6 @@ (define-public graphios
|
|||
(("/usr") out)
|
||||
(("distro_ver = .*") "distro_ver = ''"))
|
||||
#t))))))
|
||||
(inputs
|
||||
`(("python-setuptools" ,python2-setuptools)))
|
||||
(home-page "https://github.com/shawn-sterling/graphios")
|
||||
(synopsis "Emit Nagios metrics to Graphite, Statsd, and Librato")
|
||||
(description
|
||||
|
@ -1356,8 +1354,7 @@ (define-public ansible
|
|||
"1bfc2xiplpad6f2nwi48y0kps7xqnsll85dlz63cy8k5bysl6d20"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
("python2-pycrypto" ,python2-pycrypto)
|
||||
`(("python2-pycrypto" ,python2-pycrypto)
|
||||
("python2-httplib2" ,python2-httplib2)
|
||||
("python2-passlib" ,python2-passlib)
|
||||
("python2-nose" ,python2-nose)
|
||||
|
@ -1699,13 +1696,15 @@ (define-public thefuck
|
|||
(base32
|
||||
"04q2cn8c83f6z6wn1scla1ilrpi5ssjc64987hvmwfvwvb82bvkp"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python-setuptools)))
|
||||
(inputs
|
||||
`(("python-colorama" ,python-colorama)
|
||||
("python-decorator" ,python-decorator)
|
||||
("python-psutil" ,python-psutil)
|
||||
("python-six" ,python-six)))
|
||||
(inputs
|
||||
;; Requires setuptools >= 17.1 due to some features used, while our
|
||||
;; python currently only includes 12.0. TODO: Remove this input.
|
||||
`(("python-setuptools" ,python-setuptools)))
|
||||
(home-page "https://github.com/nvbn/thefuck")
|
||||
(synopsis "Correct mistyped console command")
|
||||
(description
|
||||
|
|
|
@ -1493,9 +1493,10 @@ (define-public python-pyliblo
|
|||
"13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
|
||||
(build-system python-build-system)
|
||||
(arguments `(#:tests? #f)) ;no tests
|
||||
(native-inputs
|
||||
`(("python-cython" ,python-cython)))
|
||||
(inputs
|
||||
`(("python-cython" ,python-cython)
|
||||
("liblo" ,liblo)))
|
||||
`(("liblo" ,liblo)))
|
||||
(home-page "http://das.nasophon.de/pyliblo/")
|
||||
(synopsis "Python bindings for liblo")
|
||||
(description
|
||||
|
|
|
@ -66,8 +66,7 @@ (define-public duplicity
|
|||
"duplicity-test_selection-tmp.patch"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
("util-linux" ,util-linux))) ;setsid command, for the tests
|
||||
`(("util-linux" ,util-linux))) ;setsid command, for the tests
|
||||
(inputs
|
||||
`(("python" ,python-2)
|
||||
("librsync" ,librsync)
|
||||
|
@ -339,8 +338,6 @@ (define-public rdiff-backup
|
|||
(base32
|
||||
"1nwmmh816f96h0ff1jxk95ad38ilbhbdl5dgibx1d4cl81dsi48d"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)))
|
||||
(inputs
|
||||
`(("python" ,python-2)
|
||||
("librsync" ,librsync)))
|
||||
|
|
|
@ -216,8 +216,7 @@ (define-public bamm
|
|||
("libtool" ,libtool)
|
||||
("zlib" ,zlib)
|
||||
("python-nose" ,python2-nose)
|
||||
("python-pysam" ,python2-pysam)
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
("python-pysam" ,python2-pysam)))
|
||||
(inputs
|
||||
`(("htslib" ,htslib)
|
||||
("samtools" ,samtools)
|
||||
|
@ -524,15 +523,14 @@ (define-public python2-pybedtools
|
|||
(build-system python-build-system)
|
||||
(arguments `(#:python ,python-2)) ; no Python 3 support
|
||||
(inputs
|
||||
`(("python-cython" ,python2-cython)
|
||||
("python-matplotlib" ,python2-matplotlib)))
|
||||
`(("python-matplotlib" ,python2-matplotlib)))
|
||||
(propagated-inputs
|
||||
`(("bedtools" ,bedtools)
|
||||
("samtools" ,samtools)))
|
||||
(native-inputs
|
||||
`(("python-pyyaml" ,python2-pyyaml)
|
||||
("python-nose" ,python2-nose)
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
`(("python-cython" ,python2-cython)
|
||||
("python-pyyaml" ,python2-pyyaml)
|
||||
("python-nose" ,python2-nose)))
|
||||
(home-page "https://pythonhosted.org/pybedtools/")
|
||||
(synopsis "Python wrapper for BEDtools programs")
|
||||
(description
|
||||
|
@ -587,9 +585,7 @@ (define-public python2-biom-format
|
|||
(substitute* "setup.py"
|
||||
(("install_requires.append\\(\"pyqi\"\\)") "pass"))
|
||||
#t)))
|
||||
,@(package-arguments base)))
|
||||
(native-inputs `(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
,@(package-arguments base))))))
|
||||
|
||||
(define-public bioperl-minimal
|
||||
(let* ((inputs `(("perl-module-build" ,perl-module-build)
|
||||
|
@ -674,7 +670,7 @@ (define-public python-biopython
|
|||
(add-before 'check 'set-home
|
||||
;; Some tests require a home directory to be set.
|
||||
(lambda _ (setenv "HOME" "/tmp") #t)))))
|
||||
(inputs
|
||||
(propagated-inputs
|
||||
`(("python-numpy" ,python-numpy)))
|
||||
(home-page "http://biopython.org/")
|
||||
(synopsis "Tools for biological computation in Python")
|
||||
|
@ -685,15 +681,10 @@ (define-public python-biopython
|
|||
common operations on them; code to perform data classification; code for
|
||||
dealing with alignments; code making it easy to split up parallelizable tasks
|
||||
into separate processes; and more.")
|
||||
(license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE"))
|
||||
(properties `((python2-variant . ,(delay python2-biopython))))))
|
||||
(license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE"))))
|
||||
|
||||
(define-public python2-biopython
|
||||
(let ((base (package-with-python2 (strip-python2-variant python-biopython))))
|
||||
(package
|
||||
(inherit base)
|
||||
(native-inputs `(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-biopython))
|
||||
|
||||
;; An outdated version of biopython is required for seqmagick, see
|
||||
;; https://github.com/fhcrc/seqmagick/issues/59
|
||||
|
@ -1340,8 +1331,7 @@ (define-public python2-bx-python
|
|||
`(("python-numpy" ,python2-numpy)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("python-nose" ,python2-nose)
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
`(("python-nose" ,python2-nose)))
|
||||
(home-page "http://bitbucket.org/james_taylor/bx-python/")
|
||||
(synopsis "Tools for manipulating biological data")
|
||||
(description
|
||||
|
@ -1405,7 +1395,6 @@ (define-public python-pysam
|
|||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("python-cython" ,python-cython)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
;; Dependencies below are are for tests only.
|
||||
("samtools" ,samtools)
|
||||
("bcftools" ,bcftools)
|
||||
|
@ -1431,7 +1420,6 @@ (define-public python-twobitreader
|
|||
(sha256
|
||||
(base32
|
||||
"1q8wnj2kga9nz1lwc4w7qv52smfm536hp6mc8w6s53lhyj0mpi22"))))
|
||||
(properties `((python2-variant . ,(delay python2-twobitreader))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
'(;; Tests are not distributed in the PyPi release.
|
||||
|
@ -1448,11 +1436,7 @@ (define-public python-twobitreader
|
|||
(license license:artistic2.0)))
|
||||
|
||||
(define-public python2-twobitreader
|
||||
(let ((base (package-with-python2 (strip-python2-variant python-twobitreader))))
|
||||
(package
|
||||
(inherit base)
|
||||
(native-inputs `(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-twobitreader))
|
||||
|
||||
(define-public python-plastid
|
||||
(package
|
||||
|
@ -1464,7 +1448,6 @@ (define-public python-plastid
|
|||
(sha256
|
||||
(base32
|
||||
"1sqkz5d3b9kf688mp7k771c87ins42j7j0whmkb49cb3fsg8s8lj"))))
|
||||
(properties `((python2-variant . ,(delay python2-plastid))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
;; Some test files are not included.
|
||||
|
@ -1489,12 +1472,7 @@ (define-public python-plastid
|
|||
(license license:bsd-3)))
|
||||
|
||||
(define-public python2-plastid
|
||||
(let ((base (package-with-python2 (strip-python2-variant python-plastid))))
|
||||
(package
|
||||
(inherit base)
|
||||
;; setuptools is required at runtime
|
||||
(propagated-inputs `(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-propagated-inputs base))))))
|
||||
(package-with-python2 python-plastid))
|
||||
|
||||
(define-public cd-hit
|
||||
(package
|
||||
|
@ -1581,9 +1559,8 @@ (define-public clipper
|
|||
("python-numpy" ,python2-numpy)
|
||||
("python-scipy" ,python2-scipy)))
|
||||
(native-inputs
|
||||
`(("python-mock" ,python2-mock) ; for tests
|
||||
("python-pytz" ,python2-pytz) ; for tests
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
`(("python-mock" ,python2-mock) ; for tests
|
||||
("python-pytz" ,python2-pytz))) ; for tests
|
||||
(home-page "https://github.com/YeoLab/clipper")
|
||||
(synopsis "CLIP peak enrichment recognition")
|
||||
(description
|
||||
|
@ -1756,8 +1733,7 @@ (define-public crossmap
|
|||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("python-cython" ,python2-cython)
|
||||
("python-nose" ,python2-nose)
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
("python-nose" ,python2-nose)))
|
||||
(home-page "http://crossmap.sourceforge.net/")
|
||||
(synopsis "Convert genome coordinates between assemblies")
|
||||
(description
|
||||
|
@ -1855,8 +1831,7 @@ (define-public cutadapt
|
|||
(alist-delete 'check %standard-phases))))
|
||||
(native-inputs
|
||||
`(("python-cython" ,python-cython)
|
||||
("python-nose" ,python-nose)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
("python-nose" ,python-nose)))
|
||||
(home-page "https://code.google.com/p/cutadapt/")
|
||||
(synopsis "Remove adapter sequences from nucleotide sequencing reads")
|
||||
(description
|
||||
|
@ -1946,10 +1921,7 @@ (define-public python-pybigwig
|
|||
(license license:expat)))
|
||||
|
||||
(define-public python2-pybigwig
|
||||
(let ((pybigwig (package-with-python2 python-pybigwig)))
|
||||
(package (inherit pybigwig)
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python2-setuptools))))))
|
||||
(package-with-python2 python-pybigwig))
|
||||
|
||||
(define-public python-dendropy
|
||||
(package
|
||||
|
@ -1998,8 +1970,7 @@ (define-public python2-dendropy
|
|||
;; There is currently a test failure that only happens on some
|
||||
;; systems, and only using "setup.py test"
|
||||
(lambda _ (zero? (system* "nosetests")))))))
|
||||
(native-inputs `(("python2-setuptools" ,python2-setuptools)
|
||||
("python2-nose" ,python2-nose)
|
||||
(native-inputs `(("python2-nose" ,python2-nose)
|
||||
,@(package-native-inputs base))))))
|
||||
|
||||
|
||||
|
@ -2027,9 +1998,8 @@ (define-public deeptools
|
|||
("python-pysam" ,python2-pysam)
|
||||
("python-pybigwig" ,python2-pybigwig)))
|
||||
(native-inputs
|
||||
`(("python-mock" ,python2-mock) ;for tests
|
||||
("python-pytz" ,python2-pytz) ;for tests
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
`(("python-mock" ,python2-mock) ;for tests
|
||||
("python-pytz" ,python2-pytz))) ;for tests
|
||||
(home-page "https://github.com/fidelram/deepTools")
|
||||
(synopsis "Tools for normalizing and visualizing deep-sequencing data")
|
||||
(description
|
||||
|
@ -2684,8 +2654,7 @@ (define-public grit
|
|||
("python-pysam" ,python2-pysam)
|
||||
("python-networkx" ,python2-networkx)))
|
||||
(native-inputs
|
||||
`(("python-cython" ,python2-cython)
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
`(("python-cython" ,python2-cython)))
|
||||
(home-page "http://grit-bio.org")
|
||||
(synopsis "Tool for integrative analysis of RNA-seq type assays")
|
||||
(description
|
||||
|
@ -2811,8 +2780,6 @@ (define-public htseq
|
|||
`(("python-numpy" ,python2-numpy)))
|
||||
(inputs
|
||||
`(("python-pysam" ,python2-pysam)))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python2-setuptools)))
|
||||
(home-page "http://www-huber.embl.de/users/anders/HTSeq/")
|
||||
(synopsis "Analysing high-throughput sequencing data with Python")
|
||||
(description
|
||||
|
@ -2933,8 +2900,7 @@ (define-public idr
|
|||
("python-numpy" ,python-numpy)
|
||||
("python-matplotlib" ,python-matplotlib)))
|
||||
(native-inputs
|
||||
`(("python-cython" ,python-cython)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
`(("python-cython" ,python-cython)))
|
||||
(home-page "https://github.com/nboley/idr")
|
||||
(synopsis "Tool to measure the irreproducible discovery rate (IDR)")
|
||||
(description
|
||||
|
@ -3091,8 +3057,6 @@ (define-public macs
|
|||
#:tests? #f)) ; no test target
|
||||
(inputs
|
||||
`(("python-numpy" ,python2-numpy)))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python2-setuptools)))
|
||||
(home-page "http://github.com/taoliu/MACS/")
|
||||
(synopsis "Model based analysis for ChIP-Seq data")
|
||||
(description
|
||||
|
@ -3424,9 +3388,8 @@ (define-public miso
|
|||
("python-scipy" ,python2-scipy)
|
||||
("python-matplotlib" ,python2-matplotlib)))
|
||||
(native-inputs
|
||||
`(("python-mock" ,python2-mock) ;for tests
|
||||
("python-pytz" ,python2-pytz) ;for tests
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
`(("python-mock" ,python2-mock) ;for tests
|
||||
("python-pytz" ,python2-pytz))) ;for tests
|
||||
(home-page "http://genes.mit.edu/burgelab/miso/index.html")
|
||||
(synopsis "Mixture of Isoforms model for RNA-Seq isoform quantitation")
|
||||
(description
|
||||
|
@ -3549,18 +3512,15 @@ (define-public python2-pbcore
|
|||
"1kjmv891d6qbpp4shhhvkl02ff4q5xlpnls2513sm2cjcrs52f1i"))))
|
||||
(build-system python-build-system)
|
||||
(arguments `(#:python ,python-2)) ; pbcore requires Python 2.7
|
||||
(inputs
|
||||
(propagated-inputs
|
||||
`(("python-cython" ,python2-cython)
|
||||
("python-numpy" ,python2-numpy)
|
||||
("python-pysam" ,python2-pysam)
|
||||
("python-h5py" ,python2-h5py)))
|
||||
(native-inputs
|
||||
`(("python-docutils" ,python2-docutils)
|
||||
("python-nose" ,python2-nose)
|
||||
("python-setuptools" ,python2-setuptools)
|
||||
("python-sphinx" ,python2-sphinx)))
|
||||
(propagated-inputs
|
||||
`(("python-pyxb" ,python2-pyxb)))
|
||||
`(("python-nose" ,python2-nose)
|
||||
("python-sphinx" ,python2-sphinx)
|
||||
("python-pyxb" ,python2-pyxb)))
|
||||
(home-page "http://pacificbiosciences.github.io/pbcore/")
|
||||
(synopsis "Library for reading and writing PacBio data files")
|
||||
(description
|
||||
|
@ -3583,18 +3543,7 @@ (define-public python2-warpedlmm
|
|||
"1agfz6zqa8nc6cw47yh0s3y14gkpa9wqazwcj7mwwj3ffnw39p3j"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:python ,python-2 ; requires Python 2.7
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after
|
||||
'install 'remove-bin-directory
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; The "bin" directory only contains wrappers for running
|
||||
;; the module tests. They are not needed after the
|
||||
;; "check" phase.
|
||||
(delete-file-recursively
|
||||
(string-append (assoc-ref outputs "out") "/bin"))
|
||||
#t)))))
|
||||
`(#:python ,python-2)) ; requires Python 2.7
|
||||
(propagated-inputs
|
||||
`(("python-scipy" ,python2-scipy)
|
||||
("python-numpy" ,python2-numpy)
|
||||
|
@ -3603,8 +3552,7 @@ (define-public python2-warpedlmm
|
|||
("python-pandas" ,python2-pandas)
|
||||
("python-pysnptools" ,python2-pysnptools)))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python2-setuptools)
|
||||
("python-mock" ,python2-mock)
|
||||
`(("python-mock" ,python2-mock)
|
||||
("python-nose" ,python2-nose)
|
||||
("unzip" ,unzip)))
|
||||
(home-page "https://github.com/PMBio/warpedLMM")
|
||||
|
@ -3638,11 +3586,6 @@ (define-public pbtranscript-tofu
|
|||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:python ,python-2
|
||||
;; With standard flags, the install phase attempts to create a zip'd
|
||||
;; egg file, and fails with an error: 'ZIP does not support timestamps
|
||||
;; before 1980'
|
||||
#:configure-flags '("--single-version-externally-managed"
|
||||
"--record=pbtranscript-tofu.txt")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'enter-directory
|
||||
|
@ -3666,8 +3609,7 @@ (define-public pbtranscript-tofu
|
|||
("python-h5py" ,python2-h5py)))
|
||||
(native-inputs
|
||||
`(("python-cython" ,python2-cython)
|
||||
("python-nose" ,python2-nose)
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
("python-nose" ,python2-nose)))
|
||||
(home-page "https://github.com/PacificBiosciences/cDNA_primer")
|
||||
(synopsis "Analyze transcriptome data generated with the Iso-Seq protocol")
|
||||
(description
|
||||
|
@ -4116,7 +4058,6 @@ (define-public rseqc
|
|||
`(("python-cython" ,python2-cython)
|
||||
("python-pysam" ,python2-pysam)
|
||||
("python-numpy" ,python2-numpy)
|
||||
("python-setuptools" ,python2-setuptools)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("python-nose" ,python2-nose)))
|
||||
|
@ -4678,11 +4619,7 @@ (define-public python-screed
|
|||
(license license:bsd-3)))
|
||||
|
||||
(define-public python2-screed
|
||||
(let ((base (package-with-python2 (strip-python2-variant python-screed))))
|
||||
(package
|
||||
(inherit base)
|
||||
(native-inputs `(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-screed))
|
||||
|
||||
(define-public sra-tools
|
||||
(package
|
||||
|
@ -4844,8 +4781,7 @@ (define-public seqmagick
|
|||
;; should be removed.
|
||||
`(("python-biopython" ,python2-biopython-1.66)))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python2-setuptools)
|
||||
("python-nose" ,python2-nose)))
|
||||
`(("python-nose" ,python2-nose)))
|
||||
(home-page "http://github.com/fhcrc/seqmagick")
|
||||
(synopsis "Tools for converting and modifying sequence files")
|
||||
(description
|
||||
|
@ -7865,19 +7801,7 @@ (define-public pepr
|
|||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:python ,python-2 ; python2 only
|
||||
#:tests? #f ; no tests included
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; When setuptools is used a ".egg" archive is generated and
|
||||
;; installed. This makes it hard to actually run PePr. This issue
|
||||
;; has been reported upstream:
|
||||
;; https://github.com/shawnzhangyx/PePr/issues/9
|
||||
(add-after 'unpack 'disable-egg-generation
|
||||
(lambda _
|
||||
(substitute* "setup.py"
|
||||
(("from setuptools import setup")
|
||||
"from distutils.core import setup"))
|
||||
#t)))))
|
||||
#:tests? #f)) ; no tests included
|
||||
(propagated-inputs
|
||||
`(("python2-numpy" ,python2-numpy)
|
||||
("python2-scipy" ,python2-scipy)
|
||||
|
@ -7939,8 +7863,6 @@ (define-public multiqc
|
|||
("python-click" ,python-click)
|
||||
("python-matplotlib" ,python-matplotlib)
|
||||
("python-numpy" ,python-numpy)))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python-setuptools)))
|
||||
(home-page "http://multiqc.info")
|
||||
(synopsis "Aggregate bioinformatics analysis reports")
|
||||
(description
|
||||
|
|
|
@ -96,10 +96,9 @@ (define-public khal
|
|||
`(#:phases (modify-phases %standard-phases
|
||||
;; Building the manpage requires khal to be installed.
|
||||
(add-after 'install 'manpage
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(setenv "PYTHONPATH"
|
||||
(string-append
|
||||
(getenv "PYTHONPATH") ":" (assoc-ref outputs "out")))
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
;; Make installed package available for running the tests
|
||||
(add-installed-pythonpath inputs outputs)
|
||||
(zero? (system* "make" "--directory=doc/" "man"))
|
||||
(install-file
|
||||
"doc/build/man/khal.1"
|
||||
|
|
|
@ -73,11 +73,8 @@ (define-public vdirsyncer
|
|||
;; vdirsyncer requires itself to be installed in order to build
|
||||
;; the manpage.
|
||||
(add-after 'install 'manpage
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(setenv "PYTHONPATH"
|
||||
(string-append
|
||||
(getenv "PYTHONPATH")
|
||||
":" (assoc-ref outputs "out")))
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(add-installed-pythonpath inputs outputs)
|
||||
(zero? (system* "make" "--directory=docs/" "man"))
|
||||
(install-file
|
||||
"docs/_build/man/vdirsyncer.1"
|
||||
|
|
|
@ -54,10 +54,6 @@ (define-public python-django
|
|||
(string-append ".:" (getenv "PYTHONPATH")))
|
||||
(zero? (system* "python" "tests/runtests.py")))))))
|
||||
;; TODO: Install extras/django_bash_completion.
|
||||
(propagated-inputs
|
||||
;; Django uses 'pkg_resources' (part of setuptools) to locate templates
|
||||
;; at run-time.
|
||||
`(("python-setuptools" ,python-setuptools)))
|
||||
(native-inputs
|
||||
`(("tzdata", tzdata)
|
||||
;; bcrypt and argon2-cffi are extra requirements not yet in guix
|
||||
|
@ -112,8 +108,6 @@ (define-public python-django-simple-math-captcha
|
|||
(build-system python-build-system)
|
||||
(propagated-inputs
|
||||
`(("python-django" ,python-django)))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python-setuptools)))
|
||||
(home-page "https://github.com/alsoicode/django-simple-math-captcha")
|
||||
(synopsis "Easy-to-use math field/widget captcha for Django forms")
|
||||
(description
|
||||
|
@ -147,23 +141,16 @@ (define-public python-pytest-django
|
|||
(native-inputs
|
||||
`(("python-django" ,python-django)
|
||||
("python-setuptools-scm" ,python-setuptools-scm)))
|
||||
(inputs
|
||||
`(("python-py" ,python-py)
|
||||
("python-pytest" ,python-pytest)))
|
||||
(propagated-inputs
|
||||
`(("python-pytest" ,python-pytest)))
|
||||
(home-page "http://pytest-django.readthedocs.org/")
|
||||
(synopsis "Django plugin for py.test")
|
||||
(description "Pytest-django is a plugin for py.test that provides a set of
|
||||
useful tools for testing Django applications and projects.")
|
||||
(properties `((python2-variant . ,(delay python2-pytest-django))))
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python2-pytest-django
|
||||
(let ((base (package-with-python2
|
||||
(strip-python2-variant python-pytest-django))))
|
||||
(package (inherit base)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-pytest-django))
|
||||
|
||||
(define-public python-django-filter
|
||||
(package
|
||||
|
@ -186,13 +173,7 @@ (define-public python-django-filter
|
|||
some of the more mundane bits of view code. Specifically, it allows users to
|
||||
filter down a queryset based on a model’s fields, displaying the form to let
|
||||
them do this.")
|
||||
(properties `((python2-variant . ,(delay python2-django-filter))))
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python2-django-filter
|
||||
(let ((base (package-with-python2
|
||||
(strip-python2-variant python-django-filter))))
|
||||
(package (inherit base)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-django-filter))
|
||||
|
|
|
@ -185,8 +185,7 @@ (define-public dblatex
|
|||
(build-system python-build-system)
|
||||
;; TODO: Add xfig/transfig for fig2dev utility
|
||||
(inputs
|
||||
`(("python-setuptools" ,python-setuptools)
|
||||
("texlive" ,texlive)
|
||||
`(("texlive" ,texlive)
|
||||
("imagemagick" ,imagemagick) ;for convert
|
||||
("inkscape" ,inkscape) ;for svg conversion
|
||||
("docbook" ,docbook-xml)
|
||||
|
|
|
@ -42,7 +42,6 @@ (define-public python-docker-py
|
|||
(arguments '(#:tests? #f))
|
||||
(inputs
|
||||
`(("python-requests" ,python-requests)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
("python-six" ,python-six)
|
||||
("python-websocket-client" ,python-websocket-client)))
|
||||
(home-page "https://github.com/docker/docker-py/")
|
||||
|
@ -93,7 +92,6 @@ (define-public docker-compose
|
|||
("python-jsonschema" ,python-jsonschema)
|
||||
("python-pyyaml" ,python-pyyaml)
|
||||
("python-requests" ,python-requests-2.7)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
("python-six" ,python-six)
|
||||
("python-texttable" ,python-texttable)
|
||||
("python-websocket-client" ,python-websocket-client)))
|
||||
|
|
|
@ -256,8 +256,7 @@ (define-public python-pyxdg
|
|||
(native-inputs
|
||||
`(("shared-mime-info" ,shared-mime-info) ;for tests
|
||||
("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests
|
||||
("python-nose" ,python-nose)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
("python-nose" ,python-nose)))
|
||||
(home-page "http://freedesktop.org/wiki/Software/pyxdg")
|
||||
(synopsis "Implementations of freedesktop.org standards in Python")
|
||||
(description
|
||||
|
|
|
@ -591,8 +591,6 @@ (define-public python-pygame
|
|||
(string-append v4l-ref "/include/libv4l1-videodev.h")
|
||||
"linux/videodev.h")
|
||||
(system* "ln" "--symbolic" "Setup.in" "Setup")))))))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python-setuptools)))
|
||||
(inputs
|
||||
`(("sdl" ,sdl)
|
||||
("sdl-image" ,sdl-image)
|
||||
|
|
|
@ -414,12 +414,7 @@ (define-public python-pygpgme
|
|||
(license license:lgpl2.1+)))
|
||||
|
||||
(define-public python2-pygpgme
|
||||
(let ((base (package-with-python2 python-pygpgme)))
|
||||
(package
|
||||
(inherit base)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-pygpgme))
|
||||
|
||||
(define-public python-gnupg
|
||||
(package
|
||||
|
|
|
@ -42,8 +42,6 @@ (define-public key-mon
|
|||
(arguments
|
||||
`(#:python ,python-2 ;uses the Python 2 'print' syntax
|
||||
#:tests? #f)) ;no tests
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)))
|
||||
(inputs
|
||||
`(("python2-xlib" ,python2-xlib)
|
||||
("python2-pygtk" ,python2-pygtk)
|
||||
|
|
|
@ -134,5 +134,4 @@ (define-public python2-lirc
|
|||
(lambda _
|
||||
(zero? (system* "make" "py2")))))))
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
("python2-cython" ,python2-cython))))))
|
||||
`(("python2-cython" ,python2-cython))))))
|
||||
|
|
|
@ -1376,8 +1376,6 @@ (define-public khard
|
|||
(let* ((out (assoc-ref outputs "out"))
|
||||
(doc (string-append out "/share/doc/khard")))
|
||||
(copy-recursively "misc/khard" doc)))))))
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)))
|
||||
(propagated-inputs
|
||||
`(("python2-vobject" ,python2-vobject)
|
||||
("python2-pyyaml" ,python2-pyyaml)
|
||||
|
@ -1748,7 +1746,7 @@ (define-public python-mailmanclient
|
|||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ; Requires mailman running
|
||||
(inputs
|
||||
(propagated-inputs
|
||||
`(("python-six" ,python-six)
|
||||
("python-httplib2" ,python-httplib2)))
|
||||
(home-page "https://launchpad.net/mailman.client")
|
||||
|
@ -1756,12 +1754,7 @@ (define-public python-mailmanclient
|
|||
(description
|
||||
"The mailmanclient library provides official Python bindings for
|
||||
the GNU Mailman 3 REST API.")
|
||||
(properties `((python2-variant . ,(delay python2-mailmanclient))))
|
||||
(license lgpl3+)))
|
||||
|
||||
(define-public python2-mailmanclient
|
||||
(let ((base (package-with-python2
|
||||
(strip-python2-variant python-mailmanclient))))
|
||||
(package (inherit base)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools))))))
|
||||
(package-with-python2 python-mailmanclient))
|
||||
|
|
|
@ -471,8 +471,7 @@ (define-public eyed3
|
|||
(arguments
|
||||
`(#:python ,python-2))
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
("python2-nose" ,python2-nose)
|
||||
`(("python2-nose" ,python2-nose)
|
||||
("python2-sphinx" ,python2-sphinx)
|
||||
("python2-coverage" ,python2-coverage)))
|
||||
(synopsis "MP3 tag ID3 metadata editor")
|
||||
|
|
|
@ -257,15 +257,10 @@ (define-public python-mpd2
|
|||
(synopsis "Python MPD client library")
|
||||
(description "Python-mpd2 is a Python library which provides a client
|
||||
interface for the Music Player Daemon.")
|
||||
(license license:lgpl3+)
|
||||
(properties `((python2-variant . ,(delay python2-mpd2))))))
|
||||
(license license:lgpl3+)))
|
||||
|
||||
(define-public python2-mpd2
|
||||
(let ((mpd2 (package-with-python2
|
||||
(strip-python2-variant python-mpd2))))
|
||||
(package (inherit mpd2)
|
||||
(native-inputs `(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs mpd2))))))
|
||||
(package-with-python2 python-mpd2))
|
||||
|
||||
(define-public sonata
|
||||
(package
|
||||
|
|
|
@ -1113,7 +1113,6 @@ (define-public beast
|
|||
`(("rapicorn" ,rapicorn)
|
||||
("guile" ,guile-1.8)
|
||||
("python" ,python-2)
|
||||
("cython" ,python2-cython)
|
||||
("libgnomecanvas" ,libgnomecanvas)
|
||||
("libogg" ,libogg)
|
||||
("libmad" ,libmad)
|
||||
|
@ -1124,6 +1123,7 @@ (define-public beast
|
|||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("glib:bin" ,glib "bin")
|
||||
("cython" ,python2-cython)
|
||||
("perl" ,perl)
|
||||
("perl-xml-parser" ,perl-xml-parser)))
|
||||
(home-page "https://testbit.eu/wiki/Beast_Home")
|
||||
|
@ -1405,10 +1405,10 @@ (define-public python-pyportmidi
|
|||
#t)))))
|
||||
(inputs
|
||||
`(("portmidi" ,portmidi)
|
||||
("alsa-lib" ,alsa-lib)
|
||||
("python-cython" ,python-cython)))
|
||||
("alsa-lib" ,alsa-lib)))
|
||||
(native-inputs
|
||||
`(("unzip" ,unzip)))
|
||||
`(("python-cython" ,python-cython)
|
||||
("unzip" ,unzip)))
|
||||
(home-page "http://portmedia.sourceforge.net/portmidi/")
|
||||
(synopsis "Python bindings to PortMidi")
|
||||
(description
|
||||
|
@ -1884,7 +1884,6 @@ (define-public python2-pyechonest
|
|||
`(;; Python 3 is not supported:
|
||||
;; https://github.com/echonest/pyechonest/issues/42
|
||||
#:python ,python-2))
|
||||
(native-inputs `(("python2-setuptools" ,python2-setuptools)))
|
||||
(home-page "https://github.com/echonest/pyechonest")
|
||||
(synopsis "Python interface to The Echo Nest APIs")
|
||||
(description "Pyechonest is a Python library for the Echo Nest API. With
|
||||
|
@ -1927,16 +1926,10 @@ (define-public python-pylast
|
|||
(synopsis "Python interface to Last.fm and Libre.fm")
|
||||
(description "A Python interface to Last.fm and other API-compatible
|
||||
websites such as Libre.fm.")
|
||||
(license license:asl2.0)
|
||||
(properties `((python2-variant . ,(delay python2-pylast))))))
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public python2-pylast
|
||||
(let ((pylast (package-with-python2
|
||||
(strip-python2-variant python-pylast))))
|
||||
(package (inherit pylast)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs pylast))))))
|
||||
(package-with-python2 python-pylast))
|
||||
|
||||
(define-public beets
|
||||
(package
|
||||
|
@ -1964,7 +1957,6 @@ (define-public beets
|
|||
(native-inputs
|
||||
`(("python2-beautifulsoup4" ,python2-beautifulsoup4)
|
||||
("python2-flask" ,python2-flask)
|
||||
("python2-setuptools" ,python2-setuptools)
|
||||
("python2-mock" ,python2-mock)
|
||||
("python2-mpd2" ,python2-mpd2)
|
||||
("python2-nose" ,python2-nose)
|
||||
|
@ -2479,13 +2471,7 @@ (define-public python-discogs-client
|
|||
users, Marketplace listings, and more. It also supports OAuth 1.0a
|
||||
authorization, which allows you to change user data such as profile information,
|
||||
collections and wantlists, inventory, and orders.")
|
||||
(license license:bsd-2)
|
||||
(properties `((python2-variant . ,(delay python2-discogs-client))))))
|
||||
(license license:bsd-2)))
|
||||
|
||||
(define-public python2-discogs-client
|
||||
(let ((base (package-with-python2
|
||||
(strip-python2-variant python-discogs-client))))
|
||||
(package (inherit base)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-discogs-client))
|
||||
|
|
|
@ -52,11 +52,7 @@ (define-public gourmet
|
|||
`(("pygtk" ,python2-pygtk)
|
||||
("sqlalchemy" ,python2-sqlalchemy)
|
||||
("python-pillow" ,python2-pillow)
|
||||
("elib.intl" ,python2-elib.intl)
|
||||
;; XXX: This really isn't an input for gourmet but of pillow. Making
|
||||
;; it a propagated input in pillow doesn't seem to get its site path
|
||||
;; into gourmet's wrapper's PYTHONPATH however...
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
("elib.intl" ,python2-elib.intl)))
|
||||
(arguments
|
||||
`(#:python ,python-2 ;exception and print syntax
|
||||
#:tests? #f)) ;tests look bitrotted
|
||||
|
|
|
@ -49,9 +49,8 @@ (define-public python-bandit
|
|||
("python-pyyaml" ,python-pyyaml)
|
||||
("python-six" ,python-six)
|
||||
("python-stevedore" ,python-stevedore)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
;; Tests
|
||||
("python-fixtures" ,python-fixtures)
|
||||
("python-mock" ,python-mock)
|
||||
|
@ -85,10 +84,9 @@ (define-public python-debtcollector
|
|||
(propagated-inputs
|
||||
`(("python-six" ,python-six)
|
||||
("python-wrapt" ,python-wrapt)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-babel" ,python-babel)
|
||||
("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
;; Tests.
|
||||
("python-oslotest" ,python-oslotest)))
|
||||
(home-page "http://www.openstack.org/")
|
||||
|
@ -122,9 +120,8 @@ (define-public python-hacking
|
|||
("python-pep8-1.5.7" ,python-pep8-1.5.7)
|
||||
("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1)
|
||||
("python-six" ,python-six)))
|
||||
(inputs
|
||||
`(("python-setuptools" ,python-setuptools)
|
||||
;; Tests
|
||||
(native-inputs
|
||||
`(;; Tests
|
||||
("python-testscenarios" ,python-testscenarios)))
|
||||
(home-page "http://github.com/openstack-dev/hacking")
|
||||
(synopsis "OpenStack hacking guideline enforcement")
|
||||
|
@ -152,8 +149,6 @@ (define-public python-mox3
|
|||
(native-inputs
|
||||
`(("python-fixtures" ,python-fixtures)
|
||||
("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
("python-six" ,python-six)
|
||||
("python-testtools" ,python-testtools)))
|
||||
(home-page "http://www.openstack.org/")
|
||||
(synopsis "Mock object framework for Python")
|
||||
|
@ -181,14 +176,14 @@ (define-public python-os-client-config
|
|||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ;; Circular dependency with python-oslotest
|
||||
(inputs
|
||||
(propagated-inputs
|
||||
`(("python-appdirs" ,python-appdirs)
|
||||
("python-pyyaml" ,python-pyyaml)))
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-fixtures" ,python-fixtures)
|
||||
("python-mimeparse" ,python-mimeparse)
|
||||
("python-pbr" ,python-pbr)
|
||||
("python-pyyaml" ,python-pyyaml)
|
||||
("python-testrepository" ,python-testrepository)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
("python-testscenarios" ,python-testscenarios)
|
||||
("python-testtools" ,python-testtools)))
|
||||
(home-page "http://www.openstack.org/")
|
||||
|
@ -221,12 +216,11 @@ (define-public python-os-testr
|
|||
;; when building the package. Skip the tests for now.
|
||||
`(#:tests? #f))
|
||||
(propagated-inputs
|
||||
`(("python-subunit" ,python-subunit)))
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-subunit" ,python-subunit)
|
||||
("python-testtools" ,python-testtools)))
|
||||
(inputs
|
||||
`(("python-babel" ,python-babel)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
("python-testtools" ,python-testtools)
|
||||
("python-babel" ,python-babel)))
|
||||
(home-page "https://www.openstack.org/")
|
||||
(synopsis "Testr wrapper to provide functionality for OpenStack projects")
|
||||
(description
|
||||
|
@ -252,10 +246,9 @@ (define-public python-requests-mock
|
|||
(propagated-inputs
|
||||
`(("python-requests" ,python-requests)
|
||||
("python-six" ,python-six)))
|
||||
(inputs
|
||||
`(("python-pbr" ,python-pbr)))
|
||||
(native-inputs
|
||||
`(("python-discover" ,python-discover)
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-discover" ,python-discover)
|
||||
("python-docutils" ,python-docutils)
|
||||
("python-fixtures" ,python-fixtures)
|
||||
("python-mock" ,python-mock)
|
||||
|
@ -267,16 +260,10 @@ (define-public python-requests-mock
|
|||
(description
|
||||
"This module provides a building block to stub out the HTTP requests
|
||||
portions of your testing code.")
|
||||
(license asl2.0)
|
||||
(properties `((python2-variant . ,(delay python2-requests-mock))))))
|
||||
(license asl2.0)))
|
||||
|
||||
(define-public python2-requests-mock
|
||||
(let ((base (package-with-python2
|
||||
(strip-python2-variant python-requests-mock))))
|
||||
(package (inherit base)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-requests-mock))
|
||||
|
||||
(define-public python-stevedore
|
||||
(package
|
||||
|
@ -292,10 +279,8 @@ (define-public python-stevedore
|
|||
(build-system python-build-system)
|
||||
(propagated-inputs
|
||||
`(("python-six" ,python-six)))
|
||||
(inputs
|
||||
`(("python-pbr" ,python-pbr)))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python-setuptools)
|
||||
`(("python-pbr" ,python-pbr)
|
||||
;; Tests
|
||||
("python-docutils" ,python-docutils)
|
||||
("python-mock" ,python-mock)
|
||||
|
@ -346,12 +331,11 @@ (define-public python-tempest-lib
|
|||
("python-paramiko" ,python-paramiko)
|
||||
("python-pbr" ,python-pbr)
|
||||
("python-six" ,python-six)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-babel" ,python-babel)
|
||||
("python-mock" ,python-mock)
|
||||
("python-os-testr" ,python-os-testr)
|
||||
("python-oslotest" ,python-oslotest)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
("python-oslotest" ,python-oslotest)))
|
||||
(home-page "https://www.openstack.org/")
|
||||
(synopsis "OpenStack functional testing library")
|
||||
(description
|
||||
|
@ -382,9 +366,8 @@ (define-public python-oslo.config
|
|||
`(("python-netaddr" ,python-netaddr)
|
||||
("python-six" ,python-six)
|
||||
("python-stevedore" ,python-stevedore)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
;; Tests
|
||||
("python-oslo.i18n" ,python-oslo.i18n)
|
||||
("python-mock" ,python-mock)
|
||||
|
@ -412,10 +395,9 @@ (define-public python-oslo.context
|
|||
(base32
|
||||
"0kvha0rs9295njyl2z6n6zm5dapi5mrl5zwjm0m6ldqrvccyf8c3"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-babel" ,python-babel)
|
||||
("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
;; Tests.
|
||||
("python-oslotest" ,python-oslotest)))
|
||||
(home-page "http://launchpad.net/oslo")
|
||||
|
@ -444,9 +426,8 @@ (define-public python-oslo.i18n
|
|||
(propagated-inputs
|
||||
`(("python-babel" ,python-babel)
|
||||
("python-six" ,python-six)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
;; Tests
|
||||
("python-mock" ,python-mock)
|
||||
("python-mox3" ,python-mox3)
|
||||
|
@ -486,13 +467,12 @@ (define-public python-oslo.log
|
|||
("python-oslo.utils" ,python-oslo.utils)
|
||||
("python-oslo.serialization" ,python-oslo.serialization)
|
||||
("python-six" ,python-six)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-babel" ,python-babel)
|
||||
("python-iso8601" ,python-iso8601)
|
||||
("python-mock" ,python-mock)
|
||||
("python-oslotest" ,python-oslotest)
|
||||
("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
("python-pbr" ,python-pbr)))
|
||||
(home-page "http://launchpad.net/oslo")
|
||||
(synopsis "Python logging library of the Oslo project")
|
||||
(description
|
||||
|
@ -523,10 +503,9 @@ (define-public python-oslo.serialization
|
|||
("python-simplejson" ,python-simplejson)
|
||||
("python-six" ,python-six)
|
||||
("python-pytz" ,python-pytz)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-babel" ,python-babel)
|
||||
("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
;; Tests.
|
||||
("python-mock" ,python-mock)
|
||||
("python-oslo.i18n" ,python-oslo.i18n)
|
||||
|
@ -555,11 +534,10 @@ (define-public python-oslosphinx
|
|||
(build-system python-build-system)
|
||||
(propagated-inputs
|
||||
`(("python-requests" ,python-requests)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-docutils" ,python-docutils)
|
||||
("python-hacking" ,python-hacking)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
("python-sphinx" ,python-sphinx)))
|
||||
(home-page "http://www.openstack.org/")
|
||||
(synopsis "OpenStack sphinx extensions and theme")
|
||||
|
@ -591,10 +569,9 @@ (define-public python-oslotest
|
|||
("python-mock" ,python-mock)
|
||||
("python-mox3" ,python-mox3)
|
||||
("python-six" ,python-six)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-os-client-config" ,python-os-client-config)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
("python-subunit" ,python-subunit)
|
||||
("python-testrepository" ,python-testrepository)
|
||||
("python-testscenarios" ,python-testscenarios)
|
||||
|
@ -635,10 +612,9 @@ (define-public python-oslo.utils
|
|||
("python-netifaces" ,python-netifaces)
|
||||
("python-pytz" ,python-pytz)
|
||||
("python-six" ,python-six)))
|
||||
(inputs
|
||||
(native-inputs
|
||||
`(("python-babel" ,python-babel)
|
||||
("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
;; Tests.
|
||||
("python-oslotest" ,python-oslotest)
|
||||
("python-mock" ,python-mock)
|
||||
|
@ -668,8 +644,7 @@ (define-public python-keystoneclient
|
|||
"1w4csvkah67rfpxylxnvs2s3594i0f9isy8pf4gnsqs5zirvjaa4"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python-setuptools)
|
||||
("python-sphinx" ,python-sphinx)
|
||||
`(("python-sphinx" ,python-sphinx)
|
||||
;; and some packages for the tests
|
||||
("openssl" ,openssl)
|
||||
("python-coverage" ,python-coverage)
|
||||
|
@ -744,7 +719,6 @@ (define-public python-swiftclient
|
|||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
("python-sphinx" ,python-sphinx)
|
||||
;; The folloing packages are needed for the tests.
|
||||
("python-coverage" ,python-coverage)
|
||||
|
@ -814,9 +788,10 @@ (define-public python-git-review
|
|||
(list git openssh))))))))))
|
||||
(native-inputs
|
||||
`(("python-pbr" ,python-pbr)))
|
||||
(propagated-inputs
|
||||
`(("python-requests" ,python-requests)))
|
||||
(inputs
|
||||
`(("python-requests" ,python-requests)
|
||||
("git" ,git)
|
||||
`(("git" ,git)
|
||||
("openssh" ,openssh)))
|
||||
(home-page "http://docs.openstack.org/infra/git-review/")
|
||||
(synopsis "Command-line tool for Gerrit")
|
||||
|
@ -826,8 +801,4 @@ (define-public python-git-review
|
|||
(license asl2.0)))
|
||||
|
||||
(define-public python2-git-review
|
||||
(let ((base (package-with-python2 (strip-python2-variant python-git-review))))
|
||||
(package (inherit base)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs base))))))
|
||||
(package-with-python2 python-git-review))
|
||||
|
|
|
@ -250,8 +250,7 @@ (define-public assword
|
|||
(native-inputs
|
||||
`(("help2man" ,help2man)))
|
||||
(inputs
|
||||
`(("python-setuptools" ,python2-setuptools)
|
||||
("python2-xdo" ,python2-xdo)
|
||||
`(("python2-xdo" ,python2-xdo)
|
||||
("python2-pygpgme" ,python2-pygpgme)
|
||||
("python2-pygtk" ,python2-pygtk)))
|
||||
(propagated-inputs
|
||||
|
@ -362,7 +361,7 @@ (define-public python-bcrypt
|
|||
(native-inputs
|
||||
`(("python-pycparser" ,python-pycparser)
|
||||
("python-pytest" ,python-pytest)))
|
||||
(inputs
|
||||
(propagated-inputs
|
||||
`(("python-cffi" ,python-cffi)
|
||||
("python-six" ,python-six)))
|
||||
(home-page "https://github.com/pyca/bcrypt/")
|
||||
|
@ -376,8 +375,4 @@ (define-public python-bcrypt
|
|||
(license license:asl2.0)))
|
||||
|
||||
(define-public python2-bcrypt
|
||||
(let ((bcrypt (package-with-python2 python-bcrypt)))
|
||||
(package (inherit bcrypt)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs bcrypt))))))
|
||||
(package-with-python2 python-bcrypt))
|
||||
|
|
26
gnu/packages/patches/python-2.7-site-prefixes.patch
Normal file
26
gnu/packages/patches/python-2.7-site-prefixes.patch
Normal file
|
@ -0,0 +1,26 @@
|
|||
Add all /gnu/store/ prefixes found in PYTHONPATH to the prefixes where
|
||||
site-packages (and .pth files) are searched.
|
||||
|
||||
*** Python-2.7.11/Lib/site.py.orig 2016-10-17 23:27:23.746149690 +0200
|
||||
--- Python-2.7.11/Lib/site.py 2016-10-17 23:44:51.930871644 +0200
|
||||
***************
|
||||
*** 65,70 ****
|
||||
--- 65,82 ----
|
||||
|
||||
# Prefixes for site-packages; add additional prefixes like /usr/local here
|
||||
PREFIXES = [sys.prefix, sys.exec_prefix]
|
||||
+ # Guix: Add all /gnu/store-paths in PYTHONPATH--these are all
|
||||
+ # "prefixes". This is required to search .pth files in all python
|
||||
+ # packages contained in /gnu/store which is required to make
|
||||
+ # .pth-defined namespace packages work.
|
||||
+ # This is necessary if the packages are not merged into a single
|
||||
+ # `site-packages` directory (like when using `guix environment`) but
|
||||
+ # listed in PYTHONPATH (like when running `guix build`).
|
||||
+ for p in sys.path:
|
||||
+ if p.startswith('/gnu/store/'):
|
||||
+ PREFIXES.append(p[:p.find('/', 44)]) # find first pathsep after hash
|
||||
+ del p
|
||||
+
|
||||
# Enable per user site-packages directory
|
||||
# set it to False to disable the feature or True to force the feature
|
||||
ENABLE_USER_SITE = None
|
|
@ -649,11 +649,6 @@ (define-public python-reportlab
|
|||
(base32
|
||||
"0rz2pg04wnzjjm2f5a8ik9v8s54mv4xrjhv5liqjijqv6awh12gl"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
;; Prevent creation of the egg. Without this flag, various artifacts
|
||||
;; from the build inputs end up in the final python3 output. It also
|
||||
;; works around https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
|
||||
`(#:configure-flags '("--single-version-externally-managed" "--root=/")))
|
||||
(propagated-inputs
|
||||
`(("python-pillow" ,python-pillow)))
|
||||
(home-page "http://www.reportlab.com")
|
||||
|
@ -661,14 +656,10 @@ (define-public python-reportlab
|
|||
(description "This is the ReportLab PDF Toolkit. It allows rapid creation
|
||||
of rich PDF documents, and also creation of charts in a variety of bitmap and
|
||||
vector formats.")
|
||||
(license license:bsd-3)
|
||||
(properties `((python2-variant . ,(delay python2-reportlab))))))
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python2-reportlab
|
||||
(package
|
||||
(inherit (package-with-python2
|
||||
(strip-python2-variant python-reportlab)))
|
||||
(native-inputs `(("python2-pip" ,python2-pip)))))
|
||||
(package-with-python2 python-reportlab))
|
||||
|
||||
(define-public impressive
|
||||
(package
|
||||
|
@ -884,8 +875,6 @@ (define-public pdfposter
|
|||
(inputs
|
||||
;; pdfposter 0.6.0 still uses the old pyPdf
|
||||
`(("python2-pypdf" ,python2-pypdf)))
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)))
|
||||
(home-page "https://pythonhosted.org/pdftools.pdfposter/")
|
||||
(synopsis "Scale and tile PDF images/pages to print on multiple pages")
|
||||
(description "@command{pdfposter} can be used to create a large poster by
|
||||
|
|
|
@ -63,17 +63,14 @@ (define-public python-protobuf
|
|||
(base32
|
||||
"1xbgbfg4g43bihkyw1a2giqa2gxmqc5wkh0fzqcb90qi1z1hpi7c"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
(propagated-inputs
|
||||
`(("python-six" ,python-six)))
|
||||
(home-page "https://github.com/google/protobuf")
|
||||
(synopsis "Protocol buffers is a data interchange format")
|
||||
(description
|
||||
"Protocol buffers are a language-neutral, platform-neutral extensible
|
||||
mechanism for serializing structured data.")
|
||||
(license bsd-3)
|
||||
(properties `((python2-variant . ,(delay python2-protobuf))))))
|
||||
(license bsd-3)))
|
||||
|
||||
(define-public python2-protobuf
|
||||
(package (inherit (package-with-python2
|
||||
(strip-python2-variant python-protobuf)))
|
||||
(native-inputs `(("python2-setuptools" ,python2-setuptools)))))
|
||||
(package-with-python2 python-protobuf))
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -394,8 +394,9 @@ (define-public python-libvirt
|
|||
(which "nosetests") "\"")))
|
||||
#t)))))
|
||||
(inputs
|
||||
`(("libvirt" ,libvirt)
|
||||
("python-lxml" ,python-lxml)))
|
||||
`(("libvirt" ,libvirt)))
|
||||
(propagated-inputs
|
||||
`(("python-lxml" ,python-lxml)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("python-nose" ,python-nose)))
|
||||
|
|
|
@ -315,11 +315,10 @@ (define-public python-rdflib
|
|||
(base32
|
||||
"0kvaf332cqbi47rqzlpdx4mbkvw12mkrzkj8n9l19wk713d4py9w"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
(propagated-inputs
|
||||
`(("python-html5lib" ,python-html5lib)
|
||||
("python-isodate" ,python-isodate)
|
||||
("python-pyparsing" ,python-pyparsing)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
("python-pyparsing" ,python-pyparsing)))
|
||||
(home-page "https://github.com/RDFLib/rdflib")
|
||||
(synopsis
|
||||
"Python RDF library")
|
||||
|
|
|
@ -1394,13 +1394,7 @@ (define-public python-patsy
|
|||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check (lambda _ (zero? (system* "nosetests" "-v"))))
|
||||
(add-after 'unpack 'prevent-generation-of-egg-archive
|
||||
(lambda _
|
||||
(substitute* "setup.py"
|
||||
(("from setuptools import setup")
|
||||
"from distutils.core import setup"))
|
||||
#t)))))
|
||||
(replace 'check (lambda _ (zero? (system* "nosetests" "-v")))))))
|
||||
(propagated-inputs
|
||||
`(("python-numpy" ,python-numpy)
|
||||
("python-scipy" ,python-scipy)
|
||||
|
@ -1416,15 +1410,10 @@ (define-public python-patsy
|
|||
;; The majority of the code is distributed under BSD-2. The module
|
||||
;; patsy.compat contains code derived from the Python standard library,
|
||||
;; and is covered by the PSFL.
|
||||
(license (list license:bsd-2 license:psfl))
|
||||
(properties `((python2-variant . ,(delay python2-patsy))))))
|
||||
(license (list license:bsd-2 license:psfl))))
|
||||
|
||||
(define-public python2-patsy
|
||||
(let ((patsy (package-with-python2 (strip-python2-variant python-patsy))))
|
||||
(package (inherit patsy)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs patsy))))))
|
||||
(package-with-python2 python-patsy))
|
||||
|
||||
(define-public python-statsmodels
|
||||
(package
|
||||
|
@ -1455,11 +1444,13 @@ (define-public python-statsmodels
|
|||
line)))
|
||||
#t))
|
||||
(add-after 'install 'check
|
||||
(lambda _
|
||||
(with-directory-excursion "/tmp"
|
||||
(zero? (system* "nosetests"
|
||||
"--stop"
|
||||
"-v" "statsmodels"))))))))
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
;; Make installed package available for running the tests
|
||||
(add-installed-pythonpath inputs outputs)
|
||||
(with-directory-excursion "/tmp"
|
||||
(zero? (system* "nosetests"
|
||||
"--stop"
|
||||
"-v" "statsmodels"))))))))
|
||||
(propagated-inputs
|
||||
`(("python-numpy" ,python-numpy)
|
||||
("python-scipy" ,python-scipy)
|
||||
|
@ -1487,10 +1478,7 @@ (define-public python2-statsmodels
|
|||
("python2-scipy" ,python2-scipy)
|
||||
("python2-pandas" ,python2-pandas)
|
||||
("python2-patsy" ,python2-patsy)
|
||||
("python2-matplotlib" ,python2-matplotlib)))
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
,@(package-native-inputs stats))))))
|
||||
("python2-matplotlib" ,python2-matplotlib))))))
|
||||
|
||||
(define-public r-coda
|
||||
(package
|
||||
|
|
|
@ -161,8 +161,7 @@ (define-public asciinema
|
|||
(("'tput'")
|
||||
(string-append "'" ncurses "/bin/tput'"))))
|
||||
#t)))))
|
||||
(inputs `(("ncurses" ,ncurses)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
(inputs `(("ncurses" ,ncurses)))
|
||||
(home-page "https://asciinema.org")
|
||||
(synopsis "Terminal session recorder")
|
||||
(description
|
||||
|
|
|
@ -437,15 +437,6 @@ (define-public python-acme
|
|||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'install 'disable-egg-compression
|
||||
(lambda _
|
||||
;; Do not compress the egg.
|
||||
;; See <http://bugs.gnu.org/20765>.
|
||||
(let ((port (open-file "setup.cfg" "a")))
|
||||
(display "\n[easy_install]\nzip_ok = 0\n"
|
||||
port)
|
||||
(close-port port)
|
||||
#t)))
|
||||
(add-after 'install 'docs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
|
@ -462,7 +453,6 @@ (define-public python-acme
|
|||
("python-sphinx" ,python-sphinx)
|
||||
("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput)
|
||||
("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
|
||||
("python-setuptools" ,python-setuptools)
|
||||
("texinfo" ,texinfo)))
|
||||
(propagated-inputs
|
||||
`(("python-ndg-httpsclient" ,python-ndg-httpsclient)
|
||||
|
|
|
@ -208,11 +208,7 @@ (define-public onionshare
|
|||
;; After all the patching we run the tests after installing.
|
||||
;; This is also a known issue:
|
||||
;; https://github.com/micahflee/onionshare/issues/284
|
||||
(lambda _ (zero? (system* "nosetests" "test")))))
|
||||
;; can't compress the egg because it expects to find all the resources
|
||||
;; inside the egg as though it were a folder.
|
||||
#:configure-flags '("--single-version-externally-managed" "--root=/")
|
||||
))
|
||||
(lambda _ (zero? (system* "nosetests" "test")))))))
|
||||
(native-inputs
|
||||
`(("python-nose" ,python-nose)))
|
||||
(inputs
|
||||
|
|
|
@ -1156,8 +1156,7 @@ (define-public git-annex-remote-hubic
|
|||
(build-system python-build-system)
|
||||
(arguments `(#:python ,python-2))
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
;; for the tests
|
||||
`(;; for the tests
|
||||
("python2-six" ,python2-six)))
|
||||
(propagated-inputs
|
||||
`(("python2-dateutil" ,python2-dateutil-2)
|
||||
|
|
|
@ -3172,11 +3172,7 @@ (define-public python-feedparser
|
|||
l:freebsd-doc)))) ; documentation
|
||||
|
||||
(define-public python2-feedparser
|
||||
(let ((base (package-with-python2
|
||||
(strip-python2-variant python-feedparser))))
|
||||
(package (inherit base)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools))))))
|
||||
(package-with-python2 python-feedparser))
|
||||
|
||||
(define-public r-httpuv
|
||||
(package
|
||||
|
|
|
@ -67,6 +67,9 @@ (define-public wicd
|
|||
(arguments
|
||||
`(#:python ,python-2
|
||||
#:tests? #f ; test suite requires networking
|
||||
;; wicd directly extends distutils command classes,
|
||||
;; we can't easily make setup.py use setuptools.
|
||||
#:use-setuptools? #f
|
||||
#:phases
|
||||
(alist-cons-before
|
||||
'build 'configure
|
||||
|
|
|
@ -149,6 +149,9 @@ (define-public python2-wxpython
|
|||
(arguments
|
||||
`(#:python ,python-2
|
||||
#:tests? #f ; tests fail
|
||||
;; wxPython directly extends distutils command classes,
|
||||
;; we can't easily make setup.py use setuptools.
|
||||
#:use-setuptools? #f
|
||||
#:configure-flags (list "WXPORT=gtk2"
|
||||
"UNICODE=1")
|
||||
#:phases
|
||||
|
@ -181,8 +184,7 @@ (define-public python2-wxpython
|
|||
#t)))))
|
||||
(native-inputs
|
||||
`(("mesa" ,mesa) ; for glcanvas
|
||||
("pkg-config" ,pkg-config)
|
||||
("python2-setuptools" ,python2-setuptools)))
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("gtk+" ,gtk+-2) ; for wxPython/src/helpers.cpp
|
||||
("wxwidgets" ,wxwidgets-gtk2)))
|
||||
|
|
|
@ -92,8 +92,7 @@ (define-public arandr
|
|||
(inputs `(("pygtk" ,python2-pygtk)
|
||||
("xrandr" ,xrandr)))
|
||||
(native-inputs `(("gettext" ,gettext-minimal)
|
||||
("python-docutils" ,python2-docutils)
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
("python-docutils" ,python2-docutils)))
|
||||
(home-page "https://christian.amsuess.com/tools/arandr/")
|
||||
(synopsis "Another RandR graphical user interface")
|
||||
;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
|
||||
|
|
|
@ -177,6 +177,7 @@ (define* (python-build store name inputs
|
|||
#:key
|
||||
(tests? #t)
|
||||
(test-target "test")
|
||||
(use-setuptools? #t)
|
||||
(configure-flags ''())
|
||||
(phases '(@ (guix build python-build-system)
|
||||
%standard-phases))
|
||||
|
@ -204,6 +205,7 @@ (define builder
|
|||
#:system ,system
|
||||
#:test-target ,test-target
|
||||
#:tests? ,tests?
|
||||
#:use-setuptools? ,use-setuptools?
|
||||
#:phases ,phases
|
||||
#:outputs %outputs
|
||||
#:search-paths ',(map search-path-specification->sexp
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -27,31 +28,119 @@ (define-module (guix build python-build-system)
|
|||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (%standard-phases
|
||||
add-installed-pythonpath
|
||||
site-packages
|
||||
python-build))
|
||||
|
||||
;; Commentary:
|
||||
;;
|
||||
;; Builder-side code of the standard Python package build procedure.
|
||||
;;
|
||||
;; Code:
|
||||
;;
|
||||
;; Backgound about the Python installation methods
|
||||
;;
|
||||
;; In Python there are different ways to install packages: distutils,
|
||||
;; setuptools, easy_install and pip. All of these are sharing the file
|
||||
;; setup.py, introduced with distutils in Python 2.0. The setup.py file can be
|
||||
;; considered as a kind of Makefile accepting targets (or commands) like
|
||||
;; "build" and "install". As of autumn 2016 the recommended way to install
|
||||
;; Python packages is using pip.
|
||||
;;
|
||||
;; For both distutils and setuptools, running "python setup.py install" is the
|
||||
;; way to install Python packages. With distutils the "install" command
|
||||
;; basically copies all packages into <prefix>/lib/pythonX.Y/site-packages.
|
||||
;;
|
||||
;; Some time later "setuptools" was established to enhance distutils. To use
|
||||
;; setuptools, the developer imports setuptools in setup.py. When importing
|
||||
;; setuptools, the original "install" command gets overwritten by setuptools'
|
||||
;; "install" command.
|
||||
;;
|
||||
;; The command-line tools easy_install and pip are both capable of finding and
|
||||
;; downloading the package source from PyPI (the Python Package Index). Both
|
||||
;; of them import setuptools and execute the "setup.py" file under their
|
||||
;; control. Thus the "setup.py" behaves as if the developer had imported
|
||||
;; setuptools within setup.py - even is still using only distutils.
|
||||
;;
|
||||
;; Setuptools' "install" command (to be more precise: the "easy_install"
|
||||
;; command which is called by "install") will put the path of the currently
|
||||
;; installed version of each package and it's dependencies (as declared in
|
||||
;; setup.py) into an "easy-install.pth" file. In Guix each packages gets its
|
||||
;; own "site-packages" directory and thus an "easy-install.pth" of its own.
|
||||
;; To avoid conflicts, the python build system renames the file to
|
||||
;; <packagename>.pth in the phase rename-pth-file. To ensure that Python will
|
||||
;; process the .pth file, easy_install also creates a basic "site.py" in each
|
||||
;; "site-packages" directory. The file is the same for all packages, thus
|
||||
;; there is no need to rename it. For more information about .pth files and
|
||||
;; the site module, please refere to
|
||||
;; https://docs.python.org/3/library/site.html.
|
||||
;;
|
||||
;; The .pth files contain the file-system paths (pointing to the store) of all
|
||||
;; dependencies. So the dependency is hidden in the .pth file but is not
|
||||
;; visible in the file-system. Now if packages A and B both required packages
|
||||
;; P, but in different versions, Guix will not detect this when installing
|
||||
;; both A and B to a profile. (For details and example see
|
||||
;; https://lists.gnu.org/archive/html/guix-devel/2016-10/msg01233.html.)
|
||||
;;
|
||||
;; Pip behaves a bit different then easy_install: it always executes
|
||||
;; "setup.py" with the option "--single-version-externally-managed" set. This
|
||||
;; makes setuptools' "install" command run the original "install" command
|
||||
;; instead of the "easy_install" command, so no .pth file (and no site.py)
|
||||
;; will be created. The "site-packages" directory only contains the package
|
||||
;; and the related .egg-info directory.
|
||||
;;
|
||||
;; This is exactly what we need for Guix and this is what we mimic in the
|
||||
;; install phase below.
|
||||
;;
|
||||
;; As a draw back, the magic of the .pth file of linking to the other required
|
||||
;; packages is gone and these packages have now to be declared as
|
||||
;; "propagated-inputs".
|
||||
;;
|
||||
;; Note: Importing setuptools also adds two sub-commands: "install_egg_info"
|
||||
;; and "install_scripts". These sub-commands are executed even if
|
||||
;; "--single-version-externally-managed" is set, thus the .egg-info directory
|
||||
;; and the scripts defined in entry-points will always be created.
|
||||
|
||||
|
||||
(define (call-setuppy command params)
|
||||
(define setuptools-shim
|
||||
;; Run setup.py with "setuptools" being imported, which will patch
|
||||
;; "distutils". This is needed for packages using "distutils" instead of
|
||||
;; "setuptools" since the former does not understand the
|
||||
;; "--single-version-externally-managed" flag.
|
||||
;; Python code taken from pip 9.0.1 pip/utils/setuptools_build.py
|
||||
(string-append
|
||||
"import setuptools, tokenize;__file__='setup.py';"
|
||||
"f=getattr(tokenize, 'open', open)(__file__);"
|
||||
"code=f.read().replace('\\r\\n', '\\n');"
|
||||
"f.close();"
|
||||
"exec(compile(code, __file__, 'exec'))"))
|
||||
|
||||
(define (call-setuppy command params use-setuptools?)
|
||||
(if (file-exists? "setup.py")
|
||||
(begin
|
||||
(format #t "running \"python setup.py\" with command ~s and parameters ~s~%"
|
||||
command params)
|
||||
(zero? (apply system* "python" "setup.py" command params)))
|
||||
(if use-setuptools?
|
||||
(zero? (apply system* "python" "-c" setuptools-shim
|
||||
command params))
|
||||
(zero? (apply system* "python" "./setup.py" command params))))
|
||||
(error "no setup.py found")))
|
||||
|
||||
(define* (build #:rest empty)
|
||||
(define* (build #:key use-setuptools? #:allow-other-keys)
|
||||
"Build a given Python package."
|
||||
(call-setuppy "build" '()))
|
||||
(call-setuppy "build" '() use-setuptools?))
|
||||
|
||||
(define* (check #:key tests? test-target #:allow-other-keys)
|
||||
(define* (check #:key tests? test-target use-setuptools? #:allow-other-keys)
|
||||
"Run the test suite of a given Python package."
|
||||
(if tests?
|
||||
(call-setuppy test-target '())
|
||||
;; Running `setup.py test` creates an additional .egg-info directory in
|
||||
;; build/lib in some cases, e.g. if the source is in a sub-directory
|
||||
;; (given with `package_dir`). This will by copied to the output, too,
|
||||
;; so we need to remove.
|
||||
(let ((before (find-files "build" "\\.egg-info$" #:directories? #t)))
|
||||
(call-setuppy test-target '() use-setuptools?)
|
||||
(let* ((after (find-files "build" "\\.egg-info$" #:directories? #t))
|
||||
(inter (lset-difference eqv? after before)))
|
||||
(for-each delete-file-recursively inter)))
|
||||
#t))
|
||||
|
||||
(define (get-python-version python)
|
||||
|
@ -60,25 +149,36 @@ (define (get-python-version python)
|
|||
(major+minor (take components 2)))
|
||||
(string-join major+minor ".")))
|
||||
|
||||
(define* (install #:key outputs inputs (configure-flags '())
|
||||
(define (site-packages inputs outputs)
|
||||
"Return the path of the current output's Python site-package."
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(python (assoc-ref inputs "python")))
|
||||
(string-append out "/lib/python"
|
||||
(get-python-version python)
|
||||
"/site-packages/")))
|
||||
|
||||
(define (add-installed-pythonpath inputs outputs)
|
||||
"Prepend the Python site-package of OUTPUT to PYTHONPATH. This is useful
|
||||
when running checks after installing the package."
|
||||
(let ((old-path (getenv "PYTHONPATH"))
|
||||
(add-path (site-packages inputs outputs)))
|
||||
(setenv "PYTHONPATH"
|
||||
(string-append add-path
|
||||
(if old-path (string-append ":" old-path) "")))
|
||||
#t))
|
||||
|
||||
(define* (install #:key outputs (configure-flags '()) use-setuptools?
|
||||
#:allow-other-keys)
|
||||
"Install a given Python package."
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(params (append (list (string-append "--prefix=" out))
|
||||
configure-flags))
|
||||
(python-version (get-python-version (assoc-ref inputs "python")))
|
||||
(old-path (getenv "PYTHONPATH"))
|
||||
(add-path (string-append out "/lib/python" python-version
|
||||
"/site-packages/")))
|
||||
;; create the module installation directory and add it to PYTHONPATH
|
||||
;; to make setuptools happy
|
||||
(mkdir-p add-path)
|
||||
(setenv "PYTHONPATH"
|
||||
(string-append (if old-path
|
||||
(string-append old-path ":")
|
||||
"")
|
||||
add-path))
|
||||
(call-setuppy "install" params)))
|
||||
(if use-setuptools?
|
||||
;; distutils does not accept these flags
|
||||
(list "--single-version-externally-managed"
|
||||
"--root=/")
|
||||
'())
|
||||
configure-flags)))
|
||||
(call-setuppy "install" params use-setuptools?)))
|
||||
|
||||
(define* (wrap #:key inputs outputs #:allow-other-keys)
|
||||
(define (list-of-files dir)
|
||||
|
@ -112,6 +212,9 @@ (define bindirs
|
|||
(define* (rename-pth-file #:key name inputs outputs #:allow-other-keys)
|
||||
"Rename easy-install.pth to NAME.pth to avoid conflicts between packages
|
||||
installed with setuptools."
|
||||
;; Even if the "easy-install.pth" is not longer created, we kept this phase.
|
||||
;; There still may be packages creating an "easy-install.pth" manually for
|
||||
;; some good reason.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(python (assoc-ref inputs "python"))
|
||||
(site-packages (string-append out "/lib/python"
|
||||
|
@ -137,8 +240,7 @@ (define* (ensure-no-mtimes-pre-1980 #:rest _)
|
|||
#t))
|
||||
|
||||
(define %standard-phases
|
||||
;; 'configure' and 'build' phases are not needed. Everything is done during
|
||||
;; 'install'.
|
||||
;; 'configure' phase is not needed.
|
||||
(modify-phases gnu:%standard-phases
|
||||
(add-after 'unpack 'ensure-no-mtimes-pre-1980 ensure-no-mtimes-pre-1980)
|
||||
(delete 'configure)
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
|
||||
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -59,6 +60,7 @@ (define-module (guix scripts lint)
|
|||
#:export (guix-lint
|
||||
check-description-style
|
||||
check-inputs-should-be-native
|
||||
check-inputs-should-not-be-an-input-at-all
|
||||
check-patch-file-names
|
||||
check-synopsis-style
|
||||
check-derivation
|
||||
|
@ -229,34 +231,65 @@ (define (check-end-of-sentence-space description)
|
|||
(format #f (_ "invalid description: ~s") description)
|
||||
'description))))
|
||||
|
||||
(define (warn-if-package-has-input linted inputs-to-check input-names message)
|
||||
;; Emit a warning MESSAGE if some of the inputs named in INPUT-NAMES are
|
||||
;; contained in INPUTS-TO-CHECK, which are assumed to be inputs of package
|
||||
;; LINTED.
|
||||
(match inputs-to-check
|
||||
(((labels packages . outputs) ...)
|
||||
(for-each (lambda (package output)
|
||||
(when (package? package)
|
||||
(let ((input (string-append
|
||||
(package-name package)
|
||||
(if (> (length output) 0)
|
||||
(string-append ":" (car output))
|
||||
""))))
|
||||
(when (member input input-names)
|
||||
(emit-warning linted
|
||||
(format #f (_ message) input)
|
||||
'inputs-to-check)))))
|
||||
packages outputs))))
|
||||
|
||||
(define (check-inputs-should-be-native package)
|
||||
;; Emit a warning if some inputs of PACKAGE are likely to belong to its
|
||||
;; native inputs.
|
||||
(let ((linted package)
|
||||
(let ((message "'~a' should probably be a native input")
|
||||
(inputs (package-inputs package))
|
||||
(native-inputs
|
||||
(input-names
|
||||
'("pkg-config"
|
||||
"extra-cmake-modules"
|
||||
"glib:bin"
|
||||
"intltool"
|
||||
"itstool"
|
||||
"qttools")))
|
||||
(match inputs
|
||||
(((labels packages . outputs) ...)
|
||||
(for-each (lambda (package output)
|
||||
(when (package? package)
|
||||
(let ((input (string-append
|
||||
(package-name package)
|
||||
(if (> (length output) 0)
|
||||
(string-append ":" (car output))
|
||||
""))))
|
||||
(when (member input native-inputs)
|
||||
(emit-warning linted
|
||||
(format #f (_ "'~a' should probably \
|
||||
be a native input")
|
||||
input)
|
||||
'inputs)))))
|
||||
packages outputs)))))
|
||||
"qttools"
|
||||
"python-coverage" "python2-coverage"
|
||||
"python-cython" "python2-cython"
|
||||
"python-docutils" "python2-docutils"
|
||||
"python-mock" "python2-mock"
|
||||
"python-nose" "python2-nose"
|
||||
"python-pbr" "python2-pbr"
|
||||
"python-pytest" "python2-pytest"
|
||||
"python-pytest-cov" "python2-pytest-cov"
|
||||
"python-setuptools-scm" "python2-setuptools-scm"
|
||||
"python-sphinx" "python2-sphinx")))
|
||||
(warn-if-package-has-input package inputs input-names message)))
|
||||
|
||||
(define (check-inputs-should-not-be-an-input-at-all package)
|
||||
;; Emit a warning if some inputs of PACKAGE are likely to should not be
|
||||
;; an input at all.
|
||||
(let ((message "'~a' should probably not be an input at all")
|
||||
(inputs (package-inputs package))
|
||||
(input-names
|
||||
'("python-setuptools"
|
||||
"python2-setuptools"
|
||||
"python-pip"
|
||||
"python2-pip")))
|
||||
(warn-if-package-has-input package (package-inputs package)
|
||||
input-names message)
|
||||
(warn-if-package-has-input package (package-native-inputs package)
|
||||
input-names message)
|
||||
(warn-if-package-has-input package (package-propagated-inputs package)
|
||||
input-names message)))
|
||||
|
||||
(define (package-name-regexp package)
|
||||
"Return a regexp that matches PACKAGE's name as a word at the beginning of a
|
||||
|
@ -875,6 +908,10 @@ (define %checkers
|
|||
(name 'inputs-should-be-native)
|
||||
(description "Identify inputs that should be native inputs")
|
||||
(check check-inputs-should-be-native))
|
||||
(lint-checker
|
||||
(name 'inputs-should-not-be-input)
|
||||
(description "Identify inputs that should be inputs at all")
|
||||
(check check-inputs-should-not-be-an-input-at-all))
|
||||
(lint-checker
|
||||
(name 'patch-file-names)
|
||||
(description "Validate file names and availability of patches")
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -34,6 +35,10 @@ (define-module (test-lint)
|
|||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (web server)
|
||||
#:use-module (web server http)
|
||||
#:use-module (web response)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-9 gnu)
|
||||
#:use-module (srfi srfi-64))
|
||||
|
@ -274,6 +279,38 @@ (define-syntax-rule (with-warnings body ...)
|
|||
(check-inputs-should-be-native pkg)))
|
||||
"'glib:bin' should probably be a native input")))
|
||||
|
||||
(test-assert
|
||||
"inputs: python-setuptools should not be an input at all (input)"
|
||||
(->bool
|
||||
(string-contains
|
||||
(with-warnings
|
||||
(let ((pkg (dummy-package "x"
|
||||
(inputs `(("python-setuptools" ,python-setuptools))))))
|
||||
(check-inputs-should-not-be-an-input-at-all pkg)))
|
||||
"'python-setuptools' should probably not be an input at all")))
|
||||
|
||||
(test-assert
|
||||
"inputs: python-setuptools should not be an input at all (native-input)"
|
||||
(->bool
|
||||
(string-contains
|
||||
(with-warnings
|
||||
(let ((pkg (dummy-package "x"
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python-setuptools))))))
|
||||
(check-inputs-should-not-be-an-input-at-all pkg)))
|
||||
"'python-setuptools' should probably not be an input at all")))
|
||||
|
||||
(test-assert
|
||||
"inputs: python-setuptools should not be an input at all (propagated-input)"
|
||||
(->bool
|
||||
(string-contains
|
||||
(with-warnings
|
||||
(let ((pkg (dummy-package "x"
|
||||
(propagated-inputs
|
||||
`(("python-setuptools" ,python-setuptools))))))
|
||||
(check-inputs-should-not-be-an-input-at-all pkg)))
|
||||
"'python-setuptools' should probably not be an input at all")))
|
||||
|
||||
(test-assert "patches: file names"
|
||||
(->bool
|
||||
(string-contains
|
||||
|
|
Loading…
Reference in a new issue