Merge branch 'python-build-system'.

This commit is contained in:
Hartmut Goebel 2016-11-29 19:06:27 +01:00
commit 03e856ddf5
No known key found for this signature in database
GPG Key ID: 634A8DFFD3F631DF
42 changed files with 1044 additions and 1692 deletions

View File

@ -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 to be built for a specific version of the Python interpreter, which
might be necessary if the package is only compatible with a single might be necessary if the package is only compatible with a single
interpreter version. 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 @end defvr
@defvr {Scheme Variable} perl-build-system @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 starts with @code{py} (e.g. @code{pytz}), we keep it and prefix it as
described above. described above.
@subsubsection Specifying Dependencies @subsubsection Specifying Dependencies
@cindex inputs, for Python packages @cindex inputs, for Python packages
@ -13822,6 +13826,12 @@ following check list to determine which dependency goes where.
@itemize @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 @item
Python dependencies required at run time go into Python dependencies required at run time go into
@code{propagated-inputs}. They are typically defined with the @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 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. cross-compilation context, it's the ``native'' input that we'd want.
Examples are @code{setuptools}, which is usually needed only at build Examples are the @code{pytest}, @code{mock}, and @code{nose} test
time, or the @code{pytest}, @code{mock}, and @code{nose} test
frameworks. Of course if any of these packages is also required at frameworks. Of course if any of these packages is also required at
run-time, it needs to go to @code{propagated-inputs}. run-time, it needs to go to @code{propagated-inputs}.

View File

@ -820,6 +820,7 @@ dist_patch_DATA = \
%D%/packages/patches/pyqt-configure.patch \ %D%/packages/patches/pyqt-configure.patch \
%D%/packages/patches/python-2-deterministic-build-info.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-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-2.7-source-date-epoch.patch \
%D%/packages/patches/python-3-deterministic-build-info.patch \ %D%/packages/patches/python-3-deterministic-build-info.patch \
%D%/packages/patches/python-3-search-paths.patch \ %D%/packages/patches/python-3-search-paths.patch \

View File

@ -1332,8 +1332,6 @@ specified directories.")
(("/usr") out) (("/usr") out)
(("distro_ver = .*") "distro_ver = ''")) (("distro_ver = .*") "distro_ver = ''"))
#t)))))) #t))))))
(inputs
`(("python-setuptools" ,python2-setuptools)))
(home-page "https://github.com/shawn-sterling/graphios") (home-page "https://github.com/shawn-sterling/graphios")
(synopsis "Emit Nagios metrics to Graphite, Statsd, and Librato") (synopsis "Emit Nagios metrics to Graphite, Statsd, and Librato")
(description (description
@ -1356,8 +1354,7 @@ of supported upstream metrics systems simultaneously.")
"1bfc2xiplpad6f2nwi48y0kps7xqnsll85dlz63cy8k5bysl6d20")))) "1bfc2xiplpad6f2nwi48y0kps7xqnsll85dlz63cy8k5bysl6d20"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python2-setuptools" ,python2-setuptools) `(("python2-pycrypto" ,python2-pycrypto)
("python2-pycrypto" ,python2-pycrypto)
("python2-httplib2" ,python2-httplib2) ("python2-httplib2" ,python2-httplib2)
("python2-passlib" ,python2-passlib) ("python2-passlib" ,python2-passlib)
("python2-nose" ,python2-nose) ("python2-nose" ,python2-nose)
@ -1699,13 +1696,15 @@ throughput (in the same interval).")
(base32 (base32
"04q2cn8c83f6z6wn1scla1ilrpi5ssjc64987hvmwfvwvb82bvkp")))) "04q2cn8c83f6z6wn1scla1ilrpi5ssjc64987hvmwfvwvb82bvkp"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(inputs (inputs
`(("python-colorama" ,python-colorama) `(("python-colorama" ,python-colorama)
("python-decorator" ,python-decorator) ("python-decorator" ,python-decorator)
("python-psutil" ,python-psutil) ("python-psutil" ,python-psutil)
("python-six" ,python-six))) ("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") (home-page "https://github.com/nvbn/thefuck")
(synopsis "Correct mistyped console command") (synopsis "Correct mistyped console command")
(description (description

View File

@ -1493,9 +1493,10 @@ implementation of the Open Sound Control (OSC) protocol.")
"13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw")))) "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
(build-system python-build-system) (build-system python-build-system)
(arguments `(#:tests? #f)) ;no tests (arguments `(#:tests? #f)) ;no tests
(native-inputs
`(("python-cython" ,python-cython)))
(inputs (inputs
`(("python-cython" ,python-cython) `(("liblo" ,liblo)))
("liblo" ,liblo)))
(home-page "http://das.nasophon.de/pyliblo/") (home-page "http://das.nasophon.de/pyliblo/")
(synopsis "Python bindings for liblo") (synopsis "Python bindings for liblo")
(description (description

View File

@ -66,8 +66,7 @@
"duplicity-test_selection-tmp.patch")))) "duplicity-test_selection-tmp.patch"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (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 (inputs
`(("python" ,python-2) `(("python" ,python-2)
("librsync" ,librsync) ("librsync" ,librsync)
@ -339,8 +338,6 @@ errors.")
(base32 (base32
"1nwmmh816f96h0ff1jxk95ad38ilbhbdl5dgibx1d4cl81dsi48d")))) "1nwmmh816f96h0ff1jxk95ad38ilbhbdl5dgibx1d4cl81dsi48d"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)))
(inputs (inputs
`(("python" ,python-2) `(("python" ,python-2)
("librsync" ,librsync))) ("librsync" ,librsync)))

View File

@ -216,8 +216,7 @@ structure of the predicted RNA.")
("libtool" ,libtool) ("libtool" ,libtool)
("zlib" ,zlib) ("zlib" ,zlib)
("python-nose" ,python2-nose) ("python-nose" ,python2-nose)
("python-pysam" ,python2-pysam) ("python-pysam" ,python2-pysam)))
("python-setuptools" ,python2-setuptools)))
(inputs (inputs
`(("htslib" ,htslib) `(("htslib" ,htslib)
("samtools" ,samtools) ("samtools" ,samtools)
@ -524,15 +523,14 @@ intended to behave exactly the same as the original BWK awk.")
(build-system python-build-system) (build-system python-build-system)
(arguments `(#:python ,python-2)) ; no Python 3 support (arguments `(#:python ,python-2)) ; no Python 3 support
(inputs (inputs
`(("python-cython" ,python2-cython) `(("python-matplotlib" ,python2-matplotlib)))
("python-matplotlib" ,python2-matplotlib)))
(propagated-inputs (propagated-inputs
`(("bedtools" ,bedtools) `(("bedtools" ,bedtools)
("samtools" ,samtools))) ("samtools" ,samtools)))
(native-inputs (native-inputs
`(("python-pyyaml" ,python2-pyyaml) `(("python-cython" ,python2-cython)
("python-nose" ,python2-nose) ("python-pyyaml" ,python2-pyyaml)
("python-setuptools" ,python2-setuptools))) ("python-nose" ,python2-nose)))
(home-page "https://pythonhosted.org/pybedtools/") (home-page "https://pythonhosted.org/pybedtools/")
(synopsis "Python wrapper for BEDtools programs") (synopsis "Python wrapper for BEDtools programs")
(description (description
@ -587,9 +585,7 @@ e.g. microbiome samples, genomes, metagenomes.")
(substitute* "setup.py" (substitute* "setup.py"
(("install_requires.append\\(\"pyqi\"\\)") "pass")) (("install_requires.append\\(\"pyqi\"\\)") "pass"))
#t))) #t)))
,@(package-arguments base))) ,@(package-arguments base))))))
(native-inputs `(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))
(define-public bioperl-minimal (define-public bioperl-minimal
(let* ((inputs `(("perl-module-build" ,perl-module-build) (let* ((inputs `(("perl-module-build" ,perl-module-build)
@ -674,7 +670,7 @@ provide a coordinated and extensible framework to do computational biology.")
(add-before 'check 'set-home (add-before 'check 'set-home
;; Some tests require a home directory to be set. ;; Some tests require a home directory to be set.
(lambda _ (setenv "HOME" "/tmp") #t))))) (lambda _ (setenv "HOME" "/tmp") #t)))))
(inputs (propagated-inputs
`(("python-numpy" ,python-numpy))) `(("python-numpy" ,python-numpy)))
(home-page "http://biopython.org/") (home-page "http://biopython.org/")
(synopsis "Tools for biological computation in Python") (synopsis "Tools for biological computation in Python")
@ -685,15 +681,10 @@ bioinformatics programs; a standard sequence class and tools for performing
common operations on them; code to perform data classification; code for common operations on them; code to perform data classification; code for
dealing with alignments; code making it easy to split up parallelizable tasks dealing with alignments; code making it easy to split up parallelizable tasks
into separate processes; and more.") into separate processes; and more.")
(license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE")) (license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE"))))
(properties `((python2-variant . ,(delay python2-biopython))))))
(define-public python2-biopython (define-public python2-biopython
(let ((base (package-with-python2 (strip-python2-variant python-biopython)))) (package-with-python2 python-biopython))
(package
(inherit base)
(native-inputs `(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))
;; An outdated version of biopython is required for seqmagick, see ;; An outdated version of biopython is required for seqmagick, see
;; https://github.com/fhcrc/seqmagick/issues/59 ;; https://github.com/fhcrc/seqmagick/issues/59
@ -1340,8 +1331,7 @@ well as many of the command line options.")
`(("python-numpy" ,python2-numpy) `(("python-numpy" ,python2-numpy)
("zlib" ,zlib))) ("zlib" ,zlib)))
(native-inputs (native-inputs
`(("python-nose" ,python2-nose) `(("python-nose" ,python2-nose)))
("python-setuptools" ,python2-setuptools)))
(home-page "http://bitbucket.org/james_taylor/bx-python/") (home-page "http://bitbucket.org/james_taylor/bx-python/")
(synopsis "Tools for manipulating biological data") (synopsis "Tools for manipulating biological data")
(description (description
@ -1405,7 +1395,6 @@ multiple sequence alignments.")
("zlib" ,zlib))) ("zlib" ,zlib)))
(native-inputs (native-inputs
`(("python-cython" ,python-cython) `(("python-cython" ,python-cython)
("python-setuptools" ,python-setuptools)
;; Dependencies below are are for tests only. ;; Dependencies below are are for tests only.
("samtools" ,samtools) ("samtools" ,samtools)
("bcftools" ,bcftools) ("bcftools" ,bcftools)
@ -1431,7 +1420,6 @@ also includes an interface for tabix.")
(sha256 (sha256
(base32 (base32
"1q8wnj2kga9nz1lwc4w7qv52smfm536hp6mc8w6s53lhyj0mpi22")))) "1q8wnj2kga9nz1lwc4w7qv52smfm536hp6mc8w6s53lhyj0mpi22"))))
(properties `((python2-variant . ,(delay python2-twobitreader))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
'(;; Tests are not distributed in the PyPi release. '(;; Tests are not distributed in the PyPi release.
@ -1448,11 +1436,7 @@ UCSC genome browser.")
(license license:artistic2.0))) (license license:artistic2.0)))
(define-public python2-twobitreader (define-public python2-twobitreader
(let ((base (package-with-python2 (strip-python2-variant python-twobitreader)))) (package-with-python2 python-twobitreader))
(package
(inherit base)
(native-inputs `(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))
(define-public python-plastid (define-public python-plastid
(package (package
@ -1464,7 +1448,6 @@ UCSC genome browser.")
(sha256 (sha256
(base32 (base32
"1sqkz5d3b9kf688mp7k771c87ins42j7j0whmkb49cb3fsg8s8lj")))) "1sqkz5d3b9kf688mp7k771c87ins42j7j0whmkb49cb3fsg8s8lj"))))
(properties `((python2-variant . ,(delay python2-plastid))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; Some test files are not included. ;; Some test files are not included.
@ -1489,12 +1472,7 @@ high-throughput sequencing data with an emphasis on simplicity.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public python2-plastid (define-public python2-plastid
(let ((base (package-with-python2 (strip-python2-variant python-plastid)))) (package-with-python2 python-plastid))
(package
(inherit base)
;; setuptools is required at runtime
(propagated-inputs `(("python2-setuptools" ,python2-setuptools)
,@(package-propagated-inputs base))))))
(define-public cd-hit (define-public cd-hit
(package (package
@ -1582,8 +1560,7 @@ databases.")
("python-scipy" ,python2-scipy))) ("python-scipy" ,python2-scipy)))
(native-inputs (native-inputs
`(("python-mock" ,python2-mock) ; for tests `(("python-mock" ,python2-mock) ; for tests
("python-pytz" ,python2-pytz) ; for tests ("python-pytz" ,python2-pytz))) ; for tests
("python-setuptools" ,python2-setuptools)))
(home-page "https://github.com/YeoLab/clipper") (home-page "https://github.com/YeoLab/clipper")
(synopsis "CLIP peak enrichment recognition") (synopsis "CLIP peak enrichment recognition")
(description (description
@ -1756,8 +1733,7 @@ time.")
("zlib" ,zlib))) ("zlib" ,zlib)))
(native-inputs (native-inputs
`(("python-cython" ,python2-cython) `(("python-cython" ,python2-cython)
("python-nose" ,python2-nose) ("python-nose" ,python2-nose)))
("python-setuptools" ,python2-setuptools)))
(home-page "http://crossmap.sourceforge.net/") (home-page "http://crossmap.sourceforge.net/")
(synopsis "Convert genome coordinates between assemblies") (synopsis "Convert genome coordinates between assemblies")
(description (description
@ -1855,8 +1831,7 @@ preparation protocols.")
(alist-delete 'check %standard-phases)))) (alist-delete 'check %standard-phases))))
(native-inputs (native-inputs
`(("python-cython" ,python-cython) `(("python-cython" ,python-cython)
("python-nose" ,python-nose) ("python-nose" ,python-nose)))
("python-setuptools" ,python-setuptools)))
(home-page "https://code.google.com/p/cutadapt/") (home-page "https://code.google.com/p/cutadapt/")
(synopsis "Remove adapter sequences from nucleotide sequencing reads") (synopsis "Remove adapter sequences from nucleotide sequencing reads")
(description (description
@ -1946,10 +1921,7 @@ accessing bigWig files.")
(license license:expat))) (license license:expat)))
(define-public python2-pybigwig (define-public python2-pybigwig
(let ((pybigwig (package-with-python2 python-pybigwig))) (package-with-python2 python-pybigwig))
(package (inherit pybigwig)
(native-inputs
`(("python-setuptools" ,python2-setuptools))))))
(define-public python-dendropy (define-public python-dendropy
(package (package
@ -1998,8 +1970,7 @@ trees (phylogenies) and characters.")
;; There is currently a test failure that only happens on some ;; There is currently a test failure that only happens on some
;; systems, and only using "setup.py test" ;; systems, and only using "setup.py test"
(lambda _ (zero? (system* "nosetests"))))))) (lambda _ (zero? (system* "nosetests")))))))
(native-inputs `(("python2-setuptools" ,python2-setuptools) (native-inputs `(("python2-nose" ,python2-nose)
("python2-nose" ,python2-nose)
,@(package-native-inputs base)))))) ,@(package-native-inputs base))))))
@ -2028,8 +1999,7 @@ trees (phylogenies) and characters.")
("python-pybigwig" ,python2-pybigwig))) ("python-pybigwig" ,python2-pybigwig)))
(native-inputs (native-inputs
`(("python-mock" ,python2-mock) ;for tests `(("python-mock" ,python2-mock) ;for tests
("python-pytz" ,python2-pytz) ;for tests ("python-pytz" ,python2-pytz))) ;for tests
("python-setuptools" ,python2-setuptools)))
(home-page "https://github.com/fidelram/deepTools") (home-page "https://github.com/fidelram/deepTools")
(synopsis "Tools for normalizing and visualizing deep-sequencing data") (synopsis "Tools for normalizing and visualizing deep-sequencing data")
(description (description
@ -2684,8 +2654,7 @@ comment or quality sections.")
("python-pysam" ,python2-pysam) ("python-pysam" ,python2-pysam)
("python-networkx" ,python2-networkx))) ("python-networkx" ,python2-networkx)))
(native-inputs (native-inputs
`(("python-cython" ,python2-cython) `(("python-cython" ,python2-cython)))
("python-setuptools" ,python2-setuptools)))
(home-page "http://grit-bio.org") (home-page "http://grit-bio.org")
(synopsis "Tool for integrative analysis of RNA-seq type assays") (synopsis "Tool for integrative analysis of RNA-seq type assays")
(description (description
@ -2811,8 +2780,6 @@ HMMs).")
`(("python-numpy" ,python2-numpy))) `(("python-numpy" ,python2-numpy)))
(inputs (inputs
`(("python-pysam" ,python2-pysam))) `(("python-pysam" ,python2-pysam)))
(native-inputs
`(("python-setuptools" ,python2-setuptools)))
(home-page "http://www-huber.embl.de/users/anders/HTSeq/") (home-page "http://www-huber.embl.de/users/anders/HTSeq/")
(synopsis "Analysing high-throughput sequencing data with Python") (synopsis "Analysing high-throughput sequencing data with Python")
(description (description
@ -2933,8 +2900,7 @@ data. It also provides the bgzip, htsfile, and tabix utilities.")
("python-numpy" ,python-numpy) ("python-numpy" ,python-numpy)
("python-matplotlib" ,python-matplotlib))) ("python-matplotlib" ,python-matplotlib)))
(native-inputs (native-inputs
`(("python-cython" ,python-cython) `(("python-cython" ,python-cython)))
("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/nboley/idr") (home-page "https://github.com/nboley/idr")
(synopsis "Tool to measure the irreproducible discovery rate (IDR)") (synopsis "Tool to measure the irreproducible discovery rate (IDR)")
(description (description
@ -3091,8 +3057,6 @@ data.")
#:tests? #f)) ; no test target #:tests? #f)) ; no test target
(inputs (inputs
`(("python-numpy" ,python2-numpy))) `(("python-numpy" ,python2-numpy)))
(native-inputs
`(("python-setuptools" ,python2-setuptools)))
(home-page "http://github.com/taoliu/MACS/") (home-page "http://github.com/taoliu/MACS/")
(synopsis "Model based analysis for ChIP-Seq data") (synopsis "Model based analysis for ChIP-Seq data")
(description (description
@ -3425,8 +3389,7 @@ linker_so='gcc -shared'); defines")))))
("python-matplotlib" ,python2-matplotlib))) ("python-matplotlib" ,python2-matplotlib)))
(native-inputs (native-inputs
`(("python-mock" ,python2-mock) ;for tests `(("python-mock" ,python2-mock) ;for tests
("python-pytz" ,python2-pytz) ;for tests ("python-pytz" ,python2-pytz))) ;for tests
("python-setuptools" ,python2-setuptools)))
(home-page "http://genes.mit.edu/burgelab/miso/index.html") (home-page "http://genes.mit.edu/burgelab/miso/index.html")
(synopsis "Mixture of Isoforms model for RNA-Seq isoform quantitation") (synopsis "Mixture of Isoforms model for RNA-Seq isoform quantitation")
(description (description
@ -3549,18 +3512,15 @@ interrupted by stop codons. OrfM finds and prints these ORFs.")
"1kjmv891d6qbpp4shhhvkl02ff4q5xlpnls2513sm2cjcrs52f1i")))) "1kjmv891d6qbpp4shhhvkl02ff4q5xlpnls2513sm2cjcrs52f1i"))))
(build-system python-build-system) (build-system python-build-system)
(arguments `(#:python ,python-2)) ; pbcore requires Python 2.7 (arguments `(#:python ,python-2)) ; pbcore requires Python 2.7
(inputs (propagated-inputs
`(("python-cython" ,python2-cython) `(("python-cython" ,python2-cython)
("python-numpy" ,python2-numpy) ("python-numpy" ,python2-numpy)
("python-pysam" ,python2-pysam) ("python-pysam" ,python2-pysam)
("python-h5py" ,python2-h5py))) ("python-h5py" ,python2-h5py)))
(native-inputs (native-inputs
`(("python-docutils" ,python2-docutils) `(("python-nose" ,python2-nose)
("python-nose" ,python2-nose) ("python-sphinx" ,python2-sphinx)
("python-setuptools" ,python2-setuptools) ("python-pyxb" ,python2-pyxb)))
("python-sphinx" ,python2-sphinx)))
(propagated-inputs
`(("python-pyxb" ,python2-pyxb)))
(home-page "http://pacificbiosciences.github.io/pbcore/") (home-page "http://pacificbiosciences.github.io/pbcore/")
(synopsis "Library for reading and writing PacBio data files") (synopsis "Library for reading and writing PacBio data files")
(description (description
@ -3583,18 +3543,7 @@ files and writing bioinformatics applications.")
"1agfz6zqa8nc6cw47yh0s3y14gkpa9wqazwcj7mwwj3ffnw39p3j")))) "1agfz6zqa8nc6cw47yh0s3y14gkpa9wqazwcj7mwwj3ffnw39p3j"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:python ,python-2 ; requires Python 2.7 `(#: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)))))
(propagated-inputs (propagated-inputs
`(("python-scipy" ,python2-scipy) `(("python-scipy" ,python2-scipy)
("python-numpy" ,python2-numpy) ("python-numpy" ,python2-numpy)
@ -3603,8 +3552,7 @@ files and writing bioinformatics applications.")
("python-pandas" ,python2-pandas) ("python-pandas" ,python2-pandas)
("python-pysnptools" ,python2-pysnptools))) ("python-pysnptools" ,python2-pysnptools)))
(native-inputs (native-inputs
`(("python-setuptools" ,python2-setuptools) `(("python-mock" ,python2-mock)
("python-mock" ,python2-mock)
("python-nose" ,python2-nose) ("python-nose" ,python2-nose)
("unzip" ,unzip))) ("unzip" ,unzip)))
(home-page "https://github.com/PMBio/warpedLMM") (home-page "https://github.com/PMBio/warpedLMM")
@ -3638,11 +3586,6 @@ the phenotype as it models the data.")
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:python ,python-2 `(#: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 #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'enter-directory (add-after 'unpack 'enter-directory
@ -3666,8 +3609,7 @@ the phenotype as it models the data.")
("python-h5py" ,python2-h5py))) ("python-h5py" ,python2-h5py)))
(native-inputs (native-inputs
`(("python-cython" ,python2-cython) `(("python-cython" ,python2-cython)
("python-nose" ,python2-nose) ("python-nose" ,python2-nose)))
("python-setuptools" ,python2-setuptools)))
(home-page "https://github.com/PacificBiosciences/cDNA_primer") (home-page "https://github.com/PacificBiosciences/cDNA_primer")
(synopsis "Analyze transcriptome data generated with the Iso-Seq protocol") (synopsis "Analyze transcriptome data generated with the Iso-Seq protocol")
(description (description
@ -4116,7 +4058,6 @@ BAM and Wiggle files in both transcript-coordinate and genomic-coordinate.")
`(("python-cython" ,python2-cython) `(("python-cython" ,python2-cython)
("python-pysam" ,python2-pysam) ("python-pysam" ,python2-pysam)
("python-numpy" ,python2-numpy) ("python-numpy" ,python2-numpy)
("python-setuptools" ,python2-setuptools)
("zlib" ,zlib))) ("zlib" ,zlib)))
(native-inputs (native-inputs
`(("python-nose" ,python2-nose))) `(("python-nose" ,python2-nose)))
@ -4678,11 +4619,7 @@ sequence itself can be retrieved from these databases.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public python2-screed (define-public python2-screed
(let ((base (package-with-python2 (strip-python2-variant python-screed)))) (package-with-python2 python-screed))
(package
(inherit base)
(native-inputs `(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))
(define-public sra-tools (define-public sra-tools
(package (package
@ -4844,8 +4781,7 @@ bioinformatics file formats, sequence alignment, and more.")
;; should be removed. ;; should be removed.
`(("python-biopython" ,python2-biopython-1.66))) `(("python-biopython" ,python2-biopython-1.66)))
(native-inputs (native-inputs
`(("python-setuptools" ,python2-setuptools) `(("python-nose" ,python2-nose)))
("python-nose" ,python2-nose)))
(home-page "http://github.com/fhcrc/seqmagick") (home-page "http://github.com/fhcrc/seqmagick")
(synopsis "Tools for converting and modifying sequence files") (synopsis "Tools for converting and modifying sequence files")
(description (description
@ -7865,19 +7801,7 @@ may optionally be provided to further inform the peak-calling process.")
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:python ,python-2 ; python2 only `(#:python ,python-2 ; python2 only
#:tests? #f ; no tests included #: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)))))
(propagated-inputs (propagated-inputs
`(("python2-numpy" ,python2-numpy) `(("python2-numpy" ,python2-numpy)
("python2-scipy" ,python2-scipy) ("python2-scipy" ,python2-scipy)
@ -7939,8 +7863,6 @@ replacement for strverscmp.")
("python-click" ,python-click) ("python-click" ,python-click)
("python-matplotlib" ,python-matplotlib) ("python-matplotlib" ,python-matplotlib)
("python-numpy" ,python-numpy))) ("python-numpy" ,python-numpy)))
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "http://multiqc.info") (home-page "http://multiqc.info")
(synopsis "Aggregate bioinformatics analysis reports") (synopsis "Aggregate bioinformatics analysis reports")
(description (description

View File

@ -96,10 +96,9 @@ data units.")
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases
;; Building the manpage requires khal to be installed. ;; Building the manpage requires khal to be installed.
(add-after 'install 'manpage (add-after 'install 'manpage
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(setenv "PYTHONPATH" ;; Make installed package available for running the tests
(string-append (add-installed-pythonpath inputs outputs)
(getenv "PYTHONPATH") ":" (assoc-ref outputs "out")))
(zero? (system* "make" "--directory=doc/" "man")) (zero? (system* "make" "--directory=doc/" "man"))
(install-file (install-file
"doc/build/man/khal.1" "doc/build/man/khal.1"

View File

@ -73,11 +73,8 @@ clients.")
;; vdirsyncer requires itself to be installed in order to build ;; vdirsyncer requires itself to be installed in order to build
;; the manpage. ;; the manpage.
(add-after 'install 'manpage (add-after 'install 'manpage
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(setenv "PYTHONPATH" (add-installed-pythonpath inputs outputs)
(string-append
(getenv "PYTHONPATH")
":" (assoc-ref outputs "out")))
(zero? (system* "make" "--directory=docs/" "man")) (zero? (system* "make" "--directory=docs/" "man"))
(install-file (install-file
"docs/_build/man/vdirsyncer.1" "docs/_build/man/vdirsyncer.1"

View File

@ -54,10 +54,6 @@
(string-append ".:" (getenv "PYTHONPATH"))) (string-append ".:" (getenv "PYTHONPATH")))
(zero? (system* "python" "tests/runtests.py"))))))) (zero? (system* "python" "tests/runtests.py")))))))
;; TODO: Install extras/django_bash_completion. ;; 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 (native-inputs
`(("tzdata", tzdata) `(("tzdata", tzdata)
;; bcrypt and argon2-cffi are extra requirements not yet in guix ;; bcrypt and argon2-cffi are extra requirements not yet in guix
@ -112,8 +108,6 @@ to the @dfn{don't repeat yourself} (DRY) principle.")
(build-system python-build-system) (build-system python-build-system)
(propagated-inputs (propagated-inputs
`(("python-django" ,python-django))) `(("python-django" ,python-django)))
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/alsoicode/django-simple-math-captcha") (home-page "https://github.com/alsoicode/django-simple-math-captcha")
(synopsis "Easy-to-use math field/widget captcha for Django forms") (synopsis "Easy-to-use math field/widget captcha for Django forms")
(description (description
@ -147,23 +141,16 @@ with arguments to the field constructor.")
(native-inputs (native-inputs
`(("python-django" ,python-django) `(("python-django" ,python-django)
("python-setuptools-scm" ,python-setuptools-scm))) ("python-setuptools-scm" ,python-setuptools-scm)))
(inputs (propagated-inputs
`(("python-py" ,python-py) `(("python-pytest" ,python-pytest)))
("python-pytest" ,python-pytest)))
(home-page "http://pytest-django.readthedocs.org/") (home-page "http://pytest-django.readthedocs.org/")
(synopsis "Django plugin for py.test") (synopsis "Django plugin for py.test")
(description "Pytest-django is a plugin for py.test that provides a set of (description "Pytest-django is a plugin for py.test that provides a set of
useful tools for testing Django applications and projects.") useful tools for testing Django applications and projects.")
(properties `((python2-variant . ,(delay python2-pytest-django))))
(license license:bsd-3))) (license license:bsd-3)))
(define-public python2-pytest-django (define-public python2-pytest-django
(let ((base (package-with-python2 (package-with-python2 python-pytest-django))
(strip-python2-variant python-pytest-django))))
(package (inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))
(define-public python-django-filter (define-public python-django-filter
(package (package
@ -186,13 +173,7 @@ useful tools for testing Django applications and projects.")
some of the more mundane bits of view code. Specifically, it allows users to some of the more mundane bits of view code. Specifically, it allows users to
filter down a queryset based on a models fields, displaying the form to let filter down a queryset based on a models fields, displaying the form to let
them do this.") them do this.")
(properties `((python2-variant . ,(delay python2-django-filter))))
(license license:bsd-3))) (license license:bsd-3)))
(define-public python2-django-filter (define-public python2-django-filter
(let ((base (package-with-python2 (package-with-python2 python-django-filter))
(strip-python2-variant python-django-filter))))
(package (inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))

View File

@ -185,8 +185,7 @@ by no means limited to these applications.) This package provides XML DTDs.")
(build-system python-build-system) (build-system python-build-system)
;; TODO: Add xfig/transfig for fig2dev utility ;; TODO: Add xfig/transfig for fig2dev utility
(inputs (inputs
`(("python-setuptools" ,python-setuptools) `(("texlive" ,texlive)
("texlive" ,texlive)
("imagemagick" ,imagemagick) ;for convert ("imagemagick" ,imagemagick) ;for convert
("inkscape" ,inkscape) ;for svg conversion ("inkscape" ,inkscape) ;for svg conversion
("docbook" ,docbook-xml) ("docbook" ,docbook-xml)

View File

@ -42,7 +42,6 @@
(arguments '(#:tests? #f)) (arguments '(#:tests? #f))
(inputs (inputs
`(("python-requests" ,python-requests) `(("python-requests" ,python-requests)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six) ("python-six" ,python-six)
("python-websocket-client" ,python-websocket-client))) ("python-websocket-client" ,python-websocket-client)))
(home-page "https://github.com/docker/docker-py/") (home-page "https://github.com/docker/docker-py/")
@ -93,7 +92,6 @@ client.")
("python-jsonschema" ,python-jsonschema) ("python-jsonschema" ,python-jsonschema)
("python-pyyaml" ,python-pyyaml) ("python-pyyaml" ,python-pyyaml)
("python-requests" ,python-requests-2.7) ("python-requests" ,python-requests-2.7)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six) ("python-six" ,python-six)
("python-texttable" ,python-texttable) ("python-texttable" ,python-texttable)
("python-websocket-client" ,python-websocket-client))) ("python-websocket-client" ,python-websocket-client)))

View File

@ -256,8 +256,7 @@ of a the system to know what users are logged in, and where.")
(native-inputs (native-inputs
`(("shared-mime-info" ,shared-mime-info) ;for tests `(("shared-mime-info" ,shared-mime-info) ;for tests
("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests ("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests
("python-nose" ,python-nose) ("python-nose" ,python-nose)))
("python-setuptools" ,python-setuptools)))
(home-page "http://freedesktop.org/wiki/Software/pyxdg") (home-page "http://freedesktop.org/wiki/Software/pyxdg")
(synopsis "Implementations of freedesktop.org standards in Python") (synopsis "Implementations of freedesktop.org standards in Python")
(description (description

View File

@ -591,8 +591,6 @@ interface (API).")
(string-append v4l-ref "/include/libv4l1-videodev.h") (string-append v4l-ref "/include/libv4l1-videodev.h")
"linux/videodev.h") "linux/videodev.h")
(system* "ln" "--symbolic" "Setup.in" "Setup"))))))) (system* "ln" "--symbolic" "Setup.in" "Setup")))))))
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(inputs (inputs
`(("sdl" ,sdl) `(("sdl" ,sdl)
("sdl-image" ,sdl-image) ("sdl-image" ,sdl-image)

View File

@ -414,12 +414,7 @@ decrypt messages using the OpenPGP format by making use of GPGME.")
(license license:lgpl2.1+))) (license license:lgpl2.1+)))
(define-public python2-pygpgme (define-public python2-pygpgme
(let ((base (package-with-python2 python-pygpgme))) (package-with-python2 python-pygpgme))
(package
(inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))
(define-public python-gnupg (define-public python-gnupg
(package (package

View File

@ -42,8 +42,6 @@
(arguments (arguments
`(#:python ,python-2 ;uses the Python 2 'print' syntax `(#:python ,python-2 ;uses the Python 2 'print' syntax
#:tests? #f)) ;no tests #:tests? #f)) ;no tests
(native-inputs
`(("python2-setuptools" ,python2-setuptools)))
(inputs (inputs
`(("python2-xlib" ,python2-xlib) `(("python2-xlib" ,python2-xlib)
("python2-pygtk" ,python2-pygtk) ("python2-pygtk" ,python2-pygtk)

View File

@ -134,5 +134,4 @@ on just one button press.")
(lambda _ (lambda _
(zero? (system* "make" "py2"))))))) (zero? (system* "make" "py2")))))))
(native-inputs (native-inputs
`(("python2-setuptools" ,python2-setuptools) `(("python2-cython" ,python2-cython))))))
("python2-cython" ,python2-cython))))))

View File

@ -1376,8 +1376,6 @@ maintained.")
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/khard"))) (doc (string-append out "/share/doc/khard")))
(copy-recursively "misc/khard" doc))))))) (copy-recursively "misc/khard" doc)))))))
(native-inputs
`(("python2-setuptools" ,python2-setuptools)))
(propagated-inputs (propagated-inputs
`(("python2-vobject" ,python2-vobject) `(("python2-vobject" ,python2-vobject)
("python2-pyyaml" ,python2-pyyaml) ("python2-pyyaml" ,python2-pyyaml)
@ -1748,7 +1746,7 @@ for OpenSMTPD to extend its functionality.")
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:tests? #f)) ; Requires mailman running `(#:tests? #f)) ; Requires mailman running
(inputs (propagated-inputs
`(("python-six" ,python-six) `(("python-six" ,python-six)
("python-httplib2" ,python-httplib2))) ("python-httplib2" ,python-httplib2)))
(home-page "https://launchpad.net/mailman.client") (home-page "https://launchpad.net/mailman.client")
@ -1756,12 +1754,7 @@ for OpenSMTPD to extend its functionality.")
(description (description
"The mailmanclient library provides official Python bindings for "The mailmanclient library provides official Python bindings for
the GNU Mailman 3 REST API.") the GNU Mailman 3 REST API.")
(properties `((python2-variant . ,(delay python2-mailmanclient))))
(license lgpl3+))) (license lgpl3+)))
(define-public python2-mailmanclient (define-public python2-mailmanclient
(let ((base (package-with-python2 (package-with-python2 python-mailmanclient))
(strip-python2-variant python-mailmanclient))))
(package (inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools))))))

View File

@ -471,8 +471,7 @@ compression format (.mpc files).")
(arguments (arguments
`(#:python ,python-2)) `(#:python ,python-2))
(native-inputs (native-inputs
`(("python2-setuptools" ,python2-setuptools) `(("python2-nose" ,python2-nose)
("python2-nose" ,python2-nose)
("python2-sphinx" ,python2-sphinx) ("python2-sphinx" ,python2-sphinx)
("python2-coverage" ,python2-coverage))) ("python2-coverage" ,python2-coverage)))
(synopsis "MP3 tag ID3 metadata editor") (synopsis "MP3 tag ID3 metadata editor")

View File

@ -257,15 +257,10 @@ information about tracks being played to a scrobbler, such as Libre.FM.")
(synopsis "Python MPD client library") (synopsis "Python MPD client library")
(description "Python-mpd2 is a Python library which provides a client (description "Python-mpd2 is a Python library which provides a client
interface for the Music Player Daemon.") interface for the Music Player Daemon.")
(license license:lgpl3+) (license license:lgpl3+)))
(properties `((python2-variant . ,(delay python2-mpd2))))))
(define-public python2-mpd2 (define-public python2-mpd2
(let ((mpd2 (package-with-python2 (package-with-python2 python-mpd2))
(strip-python2-variant python-mpd2))))
(package (inherit mpd2)
(native-inputs `(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs mpd2))))))
(define-public sonata (define-public sonata
(package (package

View File

@ -1113,7 +1113,6 @@ Laurens Hammond and Don Leslie.")
`(("rapicorn" ,rapicorn) `(("rapicorn" ,rapicorn)
("guile" ,guile-1.8) ("guile" ,guile-1.8)
("python" ,python-2) ("python" ,python-2)
("cython" ,python2-cython)
("libgnomecanvas" ,libgnomecanvas) ("libgnomecanvas" ,libgnomecanvas)
("libogg" ,libogg) ("libogg" ,libogg)
("libmad" ,libmad) ("libmad" ,libmad)
@ -1124,6 +1123,7 @@ Laurens Hammond and Don Leslie.")
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
("glib:bin" ,glib "bin") ("glib:bin" ,glib "bin")
("cython" ,python2-cython)
("perl" ,perl) ("perl" ,perl)
("perl-xml-parser" ,perl-xml-parser))) ("perl-xml-parser" ,perl-xml-parser)))
(home-page "https://testbit.eu/wiki/Beast_Home") (home-page "https://testbit.eu/wiki/Beast_Home")
@ -1405,10 +1405,10 @@ using a system-independent interface.")
#t))))) #t)))))
(inputs (inputs
`(("portmidi" ,portmidi) `(("portmidi" ,portmidi)
("alsa-lib" ,alsa-lib) ("alsa-lib" ,alsa-lib)))
("python-cython" ,python-cython)))
(native-inputs (native-inputs
`(("unzip" ,unzip))) `(("python-cython" ,python-cython)
("unzip" ,unzip)))
(home-page "http://portmedia.sourceforge.net/portmidi/") (home-page "http://portmedia.sourceforge.net/portmidi/")
(synopsis "Python bindings to PortMidi") (synopsis "Python bindings to PortMidi")
(description (description
@ -1884,7 +1884,6 @@ MusicBrainz database.")
`(;; Python 3 is not supported: `(;; Python 3 is not supported:
;; https://github.com/echonest/pyechonest/issues/42 ;; https://github.com/echonest/pyechonest/issues/42
#:python ,python-2)) #:python ,python-2))
(native-inputs `(("python2-setuptools" ,python2-setuptools)))
(home-page "https://github.com/echonest/pyechonest") (home-page "https://github.com/echonest/pyechonest")
(synopsis "Python interface to The Echo Nest APIs") (synopsis "Python interface to The Echo Nest APIs")
(description "Pyechonest is a Python library for the Echo Nest API. With (description "Pyechonest is a Python library for the Echo Nest API. With
@ -1927,16 +1926,10 @@ detailed track info including timbre, pitch, rhythm and loudness information.
(synopsis "Python interface to Last.fm and Libre.fm") (synopsis "Python interface to Last.fm and Libre.fm")
(description "A Python interface to Last.fm and other API-compatible (description "A Python interface to Last.fm and other API-compatible
websites such as Libre.fm.") websites such as Libre.fm.")
(license license:asl2.0) (license license:asl2.0)))
(properties `((python2-variant . ,(delay python2-pylast))))))
(define-public python2-pylast (define-public python2-pylast
(let ((pylast (package-with-python2 (package-with-python2 python-pylast))
(strip-python2-variant python-pylast))))
(package (inherit pylast)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs pylast))))))
(define-public beets (define-public beets
(package (package
@ -1964,7 +1957,6 @@ websites such as Libre.fm.")
(native-inputs (native-inputs
`(("python2-beautifulsoup4" ,python2-beautifulsoup4) `(("python2-beautifulsoup4" ,python2-beautifulsoup4)
("python2-flask" ,python2-flask) ("python2-flask" ,python2-flask)
("python2-setuptools" ,python2-setuptools)
("python2-mock" ,python2-mock) ("python2-mock" ,python2-mock)
("python2-mpd2" ,python2-mpd2) ("python2-mpd2" ,python2-mpd2)
("python2-nose" ,python2-nose) ("python2-nose" ,python2-nose)
@ -2479,13 +2471,7 @@ you to query the Discogs database for information on artists, releases, labels,
users, Marketplace listings, and more. It also supports OAuth 1.0a users, Marketplace listings, and more. It also supports OAuth 1.0a
authorization, which allows you to change user data such as profile information, authorization, which allows you to change user data such as profile information,
collections and wantlists, inventory, and orders.") collections and wantlists, inventory, and orders.")
(license license:bsd-2) (license license:bsd-2)))
(properties `((python2-variant . ,(delay python2-discogs-client))))))
(define-public python2-discogs-client (define-public python2-discogs-client
(let ((base (package-with-python2 (package-with-python2 python-discogs-client))
(strip-python2-variant python-discogs-client))))
(package (inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))

View File

@ -52,11 +52,7 @@
`(("pygtk" ,python2-pygtk) `(("pygtk" ,python2-pygtk)
("sqlalchemy" ,python2-sqlalchemy) ("sqlalchemy" ,python2-sqlalchemy)
("python-pillow" ,python2-pillow) ("python-pillow" ,python2-pillow)
("elib.intl" ,python2-elib.intl) ("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)))
(arguments (arguments
`(#:python ,python-2 ;exception and print syntax `(#:python ,python-2 ;exception and print syntax
#:tests? #f)) ;tests look bitrotted #:tests? #f)) ;tests look bitrotted

View File

@ -49,9 +49,8 @@
("python-pyyaml" ,python-pyyaml) ("python-pyyaml" ,python-pyyaml)
("python-six" ,python-six) ("python-six" ,python-six)
("python-stevedore" ,python-stevedore))) ("python-stevedore" ,python-stevedore)))
(inputs (native-inputs
`(("python-pbr" ,python-pbr) `(("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
;; Tests ;; Tests
("python-fixtures" ,python-fixtures) ("python-fixtures" ,python-fixtures)
("python-mock" ,python-mock) ("python-mock" ,python-mock)
@ -85,10 +84,9 @@ all the files it generates a report.")
(propagated-inputs (propagated-inputs
`(("python-six" ,python-six) `(("python-six" ,python-six)
("python-wrapt" ,python-wrapt))) ("python-wrapt" ,python-wrapt)))
(inputs (native-inputs
`(("python-babel" ,python-babel) `(("python-babel" ,python-babel)
("python-pbr" ,python-pbr) ("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
;; Tests. ;; Tests.
("python-oslotest" ,python-oslotest))) ("python-oslotest" ,python-oslotest)))
(home-page "http://www.openstack.org/") (home-page "http://www.openstack.org/")
@ -122,9 +120,8 @@ manner.")
("python-pep8-1.5.7" ,python-pep8-1.5.7) ("python-pep8-1.5.7" ,python-pep8-1.5.7)
("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1) ("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1)
("python-six" ,python-six))) ("python-six" ,python-six)))
(inputs (native-inputs
`(("python-setuptools" ,python-setuptools) `(;; Tests
;; Tests
("python-testscenarios" ,python-testscenarios))) ("python-testscenarios" ,python-testscenarios)))
(home-page "http://github.com/openstack-dev/hacking") (home-page "http://github.com/openstack-dev/hacking")
(synopsis "OpenStack hacking guideline enforcement") (synopsis "OpenStack hacking guideline enforcement")
@ -152,8 +149,6 @@ guidelines}.")
(native-inputs (native-inputs
`(("python-fixtures" ,python-fixtures) `(("python-fixtures" ,python-fixtures)
("python-pbr" ,python-pbr) ("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six)
("python-testtools" ,python-testtools))) ("python-testtools" ,python-testtools)))
(home-page "http://www.openstack.org/") (home-page "http://www.openstack.org/")
(synopsis "Mock object framework for Python") (synopsis "Mock object framework for Python")
@ -181,14 +176,14 @@ tested on Python version 3.2, 2.7 and 2.6.")
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:tests? #f)) ;; Circular dependency with python-oslotest `(#:tests? #f)) ;; Circular dependency with python-oslotest
(inputs (propagated-inputs
`(("python-appdirs" ,python-appdirs) `(("python-appdirs" ,python-appdirs)
("python-pyyaml" ,python-pyyaml)))
(native-inputs
`(("python-pbr" ,python-pbr)
("python-fixtures" ,python-fixtures) ("python-fixtures" ,python-fixtures)
("python-mimeparse" ,python-mimeparse) ("python-mimeparse" ,python-mimeparse)
("python-pbr" ,python-pbr)
("python-pyyaml" ,python-pyyaml)
("python-testrepository" ,python-testrepository) ("python-testrepository" ,python-testrepository)
("python-setuptools" ,python-setuptools)
("python-testscenarios" ,python-testscenarios) ("python-testscenarios" ,python-testscenarios)
("python-testtools" ,python-testtools))) ("python-testtools" ,python-testtools)))
(home-page "http://www.openstack.org/") (home-page "http://www.openstack.org/")
@ -221,12 +216,11 @@ tested on Python version 3.2, 2.7 and 2.6.")
;; when building the package. Skip the tests for now. ;; when building the package. Skip the tests for now.
`(#:tests? #f)) `(#:tests? #f))
(propagated-inputs (propagated-inputs
`(("python-subunit" ,python-subunit)))
(native-inputs
`(("python-pbr" ,python-pbr) `(("python-pbr" ,python-pbr)
("python-subunit" ,python-subunit) ("python-testtools" ,python-testtools)
("python-testtools" ,python-testtools))) ("python-babel" ,python-babel)))
(inputs
`(("python-babel" ,python-babel)
("python-setuptools" ,python-setuptools)))
(home-page "https://www.openstack.org/") (home-page "https://www.openstack.org/")
(synopsis "Testr wrapper to provide functionality for OpenStack projects") (synopsis "Testr wrapper to provide functionality for OpenStack projects")
(description (description
@ -252,10 +246,9 @@ tested on Python version 3.2, 2.7 and 2.6.")
(propagated-inputs (propagated-inputs
`(("python-requests" ,python-requests) `(("python-requests" ,python-requests)
("python-six" ,python-six))) ("python-six" ,python-six)))
(inputs
`(("python-pbr" ,python-pbr)))
(native-inputs (native-inputs
`(("python-discover" ,python-discover) `(("python-pbr" ,python-pbr)
("python-discover" ,python-discover)
("python-docutils" ,python-docutils) ("python-docutils" ,python-docutils)
("python-fixtures" ,python-fixtures) ("python-fixtures" ,python-fixtures)
("python-mock" ,python-mock) ("python-mock" ,python-mock)
@ -267,16 +260,10 @@ tested on Python version 3.2, 2.7 and 2.6.")
(description (description
"This module provides a building block to stub out the HTTP requests "This module provides a building block to stub out the HTTP requests
portions of your testing code.") portions of your testing code.")
(license asl2.0) (license asl2.0)))
(properties `((python2-variant . ,(delay python2-requests-mock))))))
(define-public python2-requests-mock (define-public python2-requests-mock
(let ((base (package-with-python2 (package-with-python2 python-requests-mock))
(strip-python2-variant python-requests-mock))))
(package (inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))
(define-public python-stevedore (define-public python-stevedore
(package (package
@ -292,10 +279,8 @@ portions of your testing code.")
(build-system python-build-system) (build-system python-build-system)
(propagated-inputs (propagated-inputs
`(("python-six" ,python-six))) `(("python-six" ,python-six)))
(inputs
`(("python-pbr" ,python-pbr)))
(native-inputs (native-inputs
`(("python-setuptools" ,python-setuptools) `(("python-pbr" ,python-pbr)
;; Tests ;; Tests
("python-docutils" ,python-docutils) ("python-docutils" ,python-docutils)
("python-mock" ,python-mock) ("python-mock" ,python-mock)
@ -346,12 +331,11 @@ extensions.")
("python-paramiko" ,python-paramiko) ("python-paramiko" ,python-paramiko)
("python-pbr" ,python-pbr) ("python-pbr" ,python-pbr)
("python-six" ,python-six))) ("python-six" ,python-six)))
(inputs (native-inputs
`(("python-babel" ,python-babel) `(("python-babel" ,python-babel)
("python-mock" ,python-mock) ("python-mock" ,python-mock)
("python-os-testr" ,python-os-testr) ("python-os-testr" ,python-os-testr)
("python-oslotest" ,python-oslotest) ("python-oslotest" ,python-oslotest)))
("python-setuptools" ,python-setuptools)))
(home-page "https://www.openstack.org/") (home-page "https://www.openstack.org/")
(synopsis "OpenStack functional testing library") (synopsis "OpenStack functional testing library")
(description (description
@ -382,9 +366,8 @@ common features used in Tempest.")
`(("python-netaddr" ,python-netaddr) `(("python-netaddr" ,python-netaddr)
("python-six" ,python-six) ("python-six" ,python-six)
("python-stevedore" ,python-stevedore))) ("python-stevedore" ,python-stevedore)))
(inputs (native-inputs
`(("python-pbr" ,python-pbr) `(("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
;; Tests ;; Tests
("python-oslo.i18n" ,python-oslo.i18n) ("python-oslo.i18n" ,python-oslo.i18n)
("python-mock" ,python-mock) ("python-mock" ,python-mock)
@ -412,10 +395,9 @@ common features used in Tempest.")
(base32 (base32
"0kvha0rs9295njyl2z6n6zm5dapi5mrl5zwjm0m6ldqrvccyf8c3")))) "0kvha0rs9295njyl2z6n6zm5dapi5mrl5zwjm0m6ldqrvccyf8c3"))))
(build-system python-build-system) (build-system python-build-system)
(inputs (native-inputs
`(("python-babel" ,python-babel) `(("python-babel" ,python-babel)
("python-pbr" ,python-pbr) ("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
;; Tests. ;; Tests.
("python-oslotest" ,python-oslotest))) ("python-oslotest" ,python-oslotest)))
(home-page "http://launchpad.net/oslo") (home-page "http://launchpad.net/oslo")
@ -444,9 +426,8 @@ pipeline and used by various modules such as logging.")
(propagated-inputs (propagated-inputs
`(("python-babel" ,python-babel) `(("python-babel" ,python-babel)
("python-six" ,python-six))) ("python-six" ,python-six)))
(inputs (native-inputs
`(("python-pbr" ,python-pbr) `(("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
;; Tests ;; Tests
("python-mock" ,python-mock) ("python-mock" ,python-mock)
("python-mox3" ,python-mox3) ("python-mox3" ,python-mox3)
@ -486,13 +467,12 @@ in an application or library.")
("python-oslo.utils" ,python-oslo.utils) ("python-oslo.utils" ,python-oslo.utils)
("python-oslo.serialization" ,python-oslo.serialization) ("python-oslo.serialization" ,python-oslo.serialization)
("python-six" ,python-six))) ("python-six" ,python-six)))
(inputs (native-inputs
`(("python-babel" ,python-babel) `(("python-babel" ,python-babel)
("python-iso8601" ,python-iso8601) ("python-iso8601" ,python-iso8601)
("python-mock" ,python-mock) ("python-mock" ,python-mock)
("python-oslotest" ,python-oslotest) ("python-oslotest" ,python-oslotest)
("python-pbr" ,python-pbr) ("python-pbr" ,python-pbr)))
("python-setuptools" ,python-setuptools)))
(home-page "http://launchpad.net/oslo") (home-page "http://launchpad.net/oslo")
(synopsis "Python logging library of the Oslo project") (synopsis "Python logging library of the Oslo project")
(description (description
@ -523,10 +503,9 @@ handlers and support for context specific logging (like resource ids etc).")
("python-simplejson" ,python-simplejson) ("python-simplejson" ,python-simplejson)
("python-six" ,python-six) ("python-six" ,python-six)
("python-pytz" ,python-pytz))) ("python-pytz" ,python-pytz)))
(inputs (native-inputs
`(("python-babel" ,python-babel) `(("python-babel" ,python-babel)
("python-pbr" ,python-pbr) ("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
;; Tests. ;; Tests.
("python-mock" ,python-mock) ("python-mock" ,python-mock)
("python-oslo.i18n" ,python-oslo.i18n) ("python-oslo.i18n" ,python-oslo.i18n)
@ -555,11 +534,10 @@ in transmittable and storable formats, such as JSON and MessagePack.")
(build-system python-build-system) (build-system python-build-system)
(propagated-inputs (propagated-inputs
`(("python-requests" ,python-requests))) `(("python-requests" ,python-requests)))
(inputs (native-inputs
`(("python-pbr" ,python-pbr) `(("python-pbr" ,python-pbr)
("python-docutils" ,python-docutils) ("python-docutils" ,python-docutils)
("python-hacking" ,python-hacking) ("python-hacking" ,python-hacking)
("python-setuptools" ,python-setuptools)
("python-sphinx" ,python-sphinx))) ("python-sphinx" ,python-sphinx)))
(home-page "http://www.openstack.org/") (home-page "http://www.openstack.org/")
(synopsis "OpenStack sphinx extensions and theme") (synopsis "OpenStack sphinx extensions and theme")
@ -591,10 +569,9 @@ from the OpenStack project.")
("python-mock" ,python-mock) ("python-mock" ,python-mock)
("python-mox3" ,python-mox3) ("python-mox3" ,python-mox3)
("python-six" ,python-six))) ("python-six" ,python-six)))
(inputs (native-inputs
`(("python-pbr" ,python-pbr) `(("python-pbr" ,python-pbr)
("python-os-client-config" ,python-os-client-config) ("python-os-client-config" ,python-os-client-config)
("python-setuptools" ,python-setuptools)
("python-subunit" ,python-subunit) ("python-subunit" ,python-subunit)
("python-testrepository" ,python-testrepository) ("python-testrepository" ,python-testrepository)
("python-testscenarios" ,python-testscenarios) ("python-testscenarios" ,python-testscenarios)
@ -635,10 +612,9 @@ and better support for mocking results.")
("python-netifaces" ,python-netifaces) ("python-netifaces" ,python-netifaces)
("python-pytz" ,python-pytz) ("python-pytz" ,python-pytz)
("python-six" ,python-six))) ("python-six" ,python-six)))
(inputs (native-inputs
`(("python-babel" ,python-babel) `(("python-babel" ,python-babel)
("python-pbr" ,python-pbr) ("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
;; Tests. ;; Tests.
("python-oslotest" ,python-oslotest) ("python-oslotest" ,python-oslotest)
("python-mock" ,python-mock) ("python-mock" ,python-mock)
@ -668,8 +644,7 @@ handling.")
"1w4csvkah67rfpxylxnvs2s3594i0f9isy8pf4gnsqs5zirvjaa4")))) "1w4csvkah67rfpxylxnvs2s3594i0f9isy8pf4gnsqs5zirvjaa4"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-setuptools" ,python-setuptools) `(("python-sphinx" ,python-sphinx)
("python-sphinx" ,python-sphinx)
;; and some packages for the tests ;; and some packages for the tests
("openssl" ,openssl) ("openssl" ,openssl)
("python-coverage" ,python-coverage) ("python-coverage" ,python-coverage)
@ -744,7 +719,6 @@ LDAP.")
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-pbr" ,python-pbr) `(("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
("python-sphinx" ,python-sphinx) ("python-sphinx" ,python-sphinx)
;; The folloing packages are needed for the tests. ;; The folloing packages are needed for the tests.
("python-coverage" ,python-coverage) ("python-coverage" ,python-coverage)
@ -814,9 +788,10 @@ permanence.")
(list git openssh)))))))))) (list git openssh))))))))))
(native-inputs (native-inputs
`(("python-pbr" ,python-pbr))) `(("python-pbr" ,python-pbr)))
(propagated-inputs
`(("python-requests" ,python-requests)))
(inputs (inputs
`(("python-requests" ,python-requests) `(("git" ,git)
("git" ,git)
("openssh" ,openssh))) ("openssh" ,openssh)))
(home-page "http://docs.openstack.org/infra/git-review/") (home-page "http://docs.openstack.org/infra/git-review/")
(synopsis "Command-line tool for Gerrit") (synopsis "Command-line tool for Gerrit")
@ -826,8 +801,4 @@ Gerrit for review, or fetching existing ones.")
(license asl2.0))) (license asl2.0)))
(define-public python2-git-review (define-public python2-git-review
(let ((base (package-with-python2 (strip-python2-variant python-git-review)))) (package-with-python2 python-git-review))
(package (inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs base))))))

View File

@ -250,8 +250,7 @@ random passwords that pass the checks.")
(native-inputs (native-inputs
`(("help2man" ,help2man))) `(("help2man" ,help2man)))
(inputs (inputs
`(("python-setuptools" ,python2-setuptools) `(("python2-xdo" ,python2-xdo)
("python2-xdo" ,python2-xdo)
("python2-pygpgme" ,python2-pygpgme) ("python2-pygpgme" ,python2-pygpgme)
("python2-pygtk" ,python2-pygtk))) ("python2-pygtk" ,python2-pygtk)))
(propagated-inputs (propagated-inputs
@ -362,7 +361,7 @@ winner of the 2015 Password Hashing Competition.")
(native-inputs (native-inputs
`(("python-pycparser" ,python-pycparser) `(("python-pycparser" ,python-pycparser)
("python-pytest" ,python-pytest))) ("python-pytest" ,python-pytest)))
(inputs (propagated-inputs
`(("python-cffi" ,python-cffi) `(("python-cffi" ,python-cffi)
("python-six" ,python-six))) ("python-six" ,python-six)))
(home-page "https://github.com/pyca/bcrypt/") (home-page "https://github.com/pyca/bcrypt/")
@ -376,8 +375,4 @@ Password Scheme\"} by Niels Provos and David Mazieres.")
(license license:asl2.0))) (license license:asl2.0)))
(define-public python2-bcrypt (define-public python2-bcrypt
(let ((bcrypt (package-with-python2 python-bcrypt))) (package-with-python2 python-bcrypt))
(package (inherit bcrypt)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs bcrypt))))))

View 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

View File

@ -649,11 +649,6 @@ using a stylus.")
(base32 (base32
"0rz2pg04wnzjjm2f5a8ik9v8s54mv4xrjhv5liqjijqv6awh12gl")))) "0rz2pg04wnzjjm2f5a8ik9v8s54mv4xrjhv5liqjijqv6awh12gl"))))
(build-system python-build-system) (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 (propagated-inputs
`(("python-pillow" ,python-pillow))) `(("python-pillow" ,python-pillow)))
(home-page "http://www.reportlab.com") (home-page "http://www.reportlab.com")
@ -661,14 +656,10 @@ using a stylus.")
(description "This is the ReportLab PDF Toolkit. It allows rapid creation (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 of rich PDF documents, and also creation of charts in a variety of bitmap and
vector formats.") vector formats.")
(license license:bsd-3) (license license:bsd-3)))
(properties `((python2-variant . ,(delay python2-reportlab))))))
(define-public python2-reportlab (define-public python2-reportlab
(package (package-with-python2 python-reportlab))
(inherit (package-with-python2
(strip-python2-variant python-reportlab)))
(native-inputs `(("python2-pip" ,python2-pip)))))
(define-public impressive (define-public impressive
(package (package
@ -884,8 +875,6 @@ python-pypdf2 instead.")
(inputs (inputs
;; pdfposter 0.6.0 still uses the old pyPdf ;; pdfposter 0.6.0 still uses the old pyPdf
`(("python2-pypdf" ,python2-pypdf))) `(("python2-pypdf" ,python2-pypdf)))
(native-inputs
`(("python2-setuptools" ,python2-setuptools)))
(home-page "https://pythonhosted.org/pdftools.pdfposter/") (home-page "https://pythonhosted.org/pdftools.pdfposter/")
(synopsis "Scale and tile PDF images/pages to print on multiple pages") (synopsis "Scale and tile PDF images/pages to print on multiple pages")
(description "@command{pdfposter} can be used to create a large poster by (description "@command{pdfposter} can be used to create a large poster by

View File

@ -63,17 +63,14 @@ internal RPC protocols and file formats.")
(base32 (base32
"1xbgbfg4g43bihkyw1a2giqa2gxmqc5wkh0fzqcb90qi1z1hpi7c")))) "1xbgbfg4g43bihkyw1a2giqa2gxmqc5wkh0fzqcb90qi1z1hpi7c"))))
(build-system python-build-system) (build-system python-build-system)
(inputs (propagated-inputs
`(("python-six" ,python-six))) `(("python-six" ,python-six)))
(home-page "https://github.com/google/protobuf") (home-page "https://github.com/google/protobuf")
(synopsis "Protocol buffers is a data interchange format") (synopsis "Protocol buffers is a data interchange format")
(description (description
"Protocol buffers are a language-neutral, platform-neutral extensible "Protocol buffers are a language-neutral, platform-neutral extensible
mechanism for serializing structured data.") mechanism for serializing structured data.")
(license bsd-3) (license bsd-3)))
(properties `((python2-variant . ,(delay python2-protobuf))))))
(define-public python2-protobuf (define-public python2-protobuf
(package (inherit (package-with-python2 (package-with-python2 python-protobuf))
(strip-python2-variant python-protobuf)))
(native-inputs `(("python2-setuptools" ,python2-setuptools)))))

File diff suppressed because it is too large Load Diff

View File

@ -394,8 +394,9 @@ three libraries:
(which "nosetests") "\""))) (which "nosetests") "\"")))
#t))))) #t)))))
(inputs (inputs
`(("libvirt" ,libvirt) `(("libvirt" ,libvirt)))
("python-lxml" ,python-lxml))) (propagated-inputs
`(("python-lxml" ,python-lxml)))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
("python-nose" ,python-nose))) ("python-nose" ,python-nose)))

View File

@ -315,11 +315,10 @@ ideal (e.g. in LV2 implementations or embedded applications).")
(base32 (base32
"0kvaf332cqbi47rqzlpdx4mbkvw12mkrzkj8n9l19wk713d4py9w")))) "0kvaf332cqbi47rqzlpdx4mbkvw12mkrzkj8n9l19wk713d4py9w"))))
(build-system python-build-system) (build-system python-build-system)
(inputs (propagated-inputs
`(("python-html5lib" ,python-html5lib) `(("python-html5lib" ,python-html5lib)
("python-isodate" ,python-isodate) ("python-isodate" ,python-isodate)
("python-pyparsing" ,python-pyparsing) ("python-pyparsing" ,python-pyparsing)))
("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/RDFLib/rdflib") (home-page "https://github.com/RDFLib/rdflib")
(synopsis (synopsis
"Python RDF library") "Python RDF library")

View File

@ -1394,13 +1394,7 @@ and fast file reading.")
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(replace 'check (lambda _ (zero? (system* "nosetests" "-v")))) (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)))))
(propagated-inputs (propagated-inputs
`(("python-numpy" ,python-numpy) `(("python-numpy" ,python-numpy)
("python-scipy" ,python-scipy) ("python-scipy" ,python-scipy)
@ -1416,15 +1410,10 @@ building design matrices.")
;; The majority of the code is distributed under BSD-2. The module ;; The majority of the code is distributed under BSD-2. The module
;; patsy.compat contains code derived from the Python standard library, ;; patsy.compat contains code derived from the Python standard library,
;; and is covered by the PSFL. ;; and is covered by the PSFL.
(license (list license:bsd-2 license:psfl)) (license (list license:bsd-2 license:psfl))))
(properties `((python2-variant . ,(delay python2-patsy))))))
(define-public python2-patsy (define-public python2-patsy
(let ((patsy (package-with-python2 (strip-python2-variant python-patsy)))) (package-with-python2 python-patsy))
(package (inherit patsy)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs patsy))))))
(define-public python-statsmodels (define-public python-statsmodels
(package (package
@ -1455,7 +1444,9 @@ building design matrices.")
line))) line)))
#t)) #t))
(add-after 'install 'check (add-after 'install 'check
(lambda _ (lambda* (#:key inputs outputs #:allow-other-keys)
;; Make installed package available for running the tests
(add-installed-pythonpath inputs outputs)
(with-directory-excursion "/tmp" (with-directory-excursion "/tmp"
(zero? (system* "nosetests" (zero? (system* "nosetests"
"--stop" "--stop"
@ -1487,10 +1478,7 @@ inference for statistical models.")
("python2-scipy" ,python2-scipy) ("python2-scipy" ,python2-scipy)
("python2-pandas" ,python2-pandas) ("python2-pandas" ,python2-pandas)
("python2-patsy" ,python2-patsy) ("python2-patsy" ,python2-patsy)
("python2-matplotlib" ,python2-matplotlib))) ("python2-matplotlib" ,python2-matplotlib))))))
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
,@(package-native-inputs stats))))))
(define-public r-coda (define-public r-coda
(package (package

View File

@ -161,8 +161,7 @@ insert mode and command mode where keybindings have different functions.")
(("'tput'") (("'tput'")
(string-append "'" ncurses "/bin/tput'")))) (string-append "'" ncurses "/bin/tput'"))))
#t))))) #t)))))
(inputs `(("ncurses" ,ncurses) (inputs `(("ncurses" ,ncurses)))
("python-setuptools" ,python-setuptools)))
(home-page "https://asciinema.org") (home-page "https://asciinema.org")
(synopsis "Terminal session recorder") (synopsis "Terminal session recorder")
(description (description

View File

@ -437,15 +437,6 @@ security, and applying best practice development processes.")
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-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 (add-after 'install 'docs
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
@ -462,7 +453,6 @@ security, and applying best practice development processes.")
("python-sphinx" ,python-sphinx) ("python-sphinx" ,python-sphinx)
("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput) ("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput)
("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
("python-setuptools" ,python-setuptools)
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(propagated-inputs (propagated-inputs
`(("python-ndg-httpsclient" ,python-ndg-httpsclient) `(("python-ndg-httpsclient" ,python-ndg-httpsclient)

View File

@ -208,11 +208,7 @@ networks.")
;; After all the patching we run the tests after installing. ;; After all the patching we run the tests after installing.
;; This is also a known issue: ;; This is also a known issue:
;; https://github.com/micahflee/onionshare/issues/284 ;; https://github.com/micahflee/onionshare/issues/284
(lambda _ (zero? (system* "nosetests" "test"))))) (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=/")
))
(native-inputs (native-inputs
`(("python-nose" ,python-nose))) `(("python-nose" ,python-nose)))
(inputs (inputs

View File

@ -1156,8 +1156,7 @@ Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
(build-system python-build-system) (build-system python-build-system)
(arguments `(#:python ,python-2)) (arguments `(#:python ,python-2))
(native-inputs (native-inputs
`(("python2-setuptools" ,python2-setuptools) `(;; for the tests
;; for the tests
("python2-six" ,python2-six))) ("python2-six" ,python2-six)))
(propagated-inputs (propagated-inputs
`(("python2-dateutil" ,python2-dateutil-2) `(("python2-dateutil" ,python2-dateutil-2)

View File

@ -3172,11 +3172,7 @@ CDF, Atom 0.3, and Atom 1.0 feeds.")
l:freebsd-doc)))) ; documentation l:freebsd-doc)))) ; documentation
(define-public python2-feedparser (define-public python2-feedparser
(let ((base (package-with-python2 (package-with-python2 python-feedparser))
(strip-python2-variant python-feedparser))))
(package (inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools))))))
(define-public r-httpuv (define-public r-httpuv
(package (package

View File

@ -67,6 +67,9 @@
(arguments (arguments
`(#:python ,python-2 `(#:python ,python-2
#:tests? #f ; test suite requires networking #: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 #:phases
(alist-cons-before (alist-cons-before
'build 'configure 'build 'configure

View File

@ -149,6 +149,9 @@ and many other languages.")
(arguments (arguments
`(#:python ,python-2 `(#:python ,python-2
#:tests? #f ; tests fail #: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" #:configure-flags (list "WXPORT=gtk2"
"UNICODE=1") "UNICODE=1")
#:phases #:phases
@ -181,8 +184,7 @@ and many other languages.")
#t))))) #t)))))
(native-inputs (native-inputs
`(("mesa" ,mesa) ; for glcanvas `(("mesa" ,mesa) ; for glcanvas
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)))
("python2-setuptools" ,python2-setuptools)))
(inputs (inputs
`(("gtk+" ,gtk+-2) ; for wxPython/src/helpers.cpp `(("gtk+" ,gtk+-2) ; for wxPython/src/helpers.cpp
("wxwidgets" ,wxwidgets-gtk2))) ("wxwidgets" ,wxwidgets-gtk2)))

View File

@ -92,8 +92,7 @@
(inputs `(("pygtk" ,python2-pygtk) (inputs `(("pygtk" ,python2-pygtk)
("xrandr" ,xrandr))) ("xrandr" ,xrandr)))
(native-inputs `(("gettext" ,gettext-minimal) (native-inputs `(("gettext" ,gettext-minimal)
("python-docutils" ,python2-docutils) ("python-docutils" ,python2-docutils)))
("python-setuptools" ,python2-setuptools)))
(home-page "https://christian.amsuess.com/tools/arandr/") (home-page "https://christian.amsuess.com/tools/arandr/")
(synopsis "Another RandR graphical user interface") (synopsis "Another RandR graphical user interface")
;; TRANSLATORS: "X11 resize-and-rotate" should not be translated. ;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.

View File

@ -177,6 +177,7 @@ pre-defined variants."
#:key #:key
(tests? #t) (tests? #t)
(test-target "test") (test-target "test")
(use-setuptools? #t)
(configure-flags ''()) (configure-flags ''())
(phases '(@ (guix build python-build-system) (phases '(@ (guix build python-build-system)
%standard-phases)) %standard-phases))
@ -204,6 +205,7 @@ provides a 'setup.py' file as its build system."
#:system ,system #:system ,system
#:test-target ,test-target #:test-target ,test-target
#:tests? ,tests? #:tests? ,tests?
#:use-setuptools? ,use-setuptools?
#:phases ,phases #:phases ,phases
#:outputs %outputs #:outputs %outputs
#:search-paths ',(map search-path-specification->sexp #:search-paths ',(map search-path-specification->sexp

View File

@ -3,6 +3,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -27,31 +28,119 @@
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:export (%standard-phases #:export (%standard-phases
add-installed-pythonpath
site-packages
python-build)) python-build))
;; Commentary: ;; Commentary:
;; ;;
;; Builder-side code of the standard Python package build procedure. ;; 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") (if (file-exists? "setup.py")
(begin (begin
(format #t "running \"python setup.py\" with command ~s and parameters ~s~%" (format #t "running \"python setup.py\" with command ~s and parameters ~s~%"
command params) 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"))) (error "no setup.py found")))
(define* (build #:rest empty) (define* (build #:key use-setuptools? #:allow-other-keys)
"Build a given Python package." "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." "Run the test suite of a given Python package."
(if tests? (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)) #t))
(define (get-python-version python) (define (get-python-version python)
@ -60,25 +149,36 @@
(major+minor (take components 2))) (major+minor (take components 2)))
(string-join major+minor "."))) (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) #:allow-other-keys)
"Install a given Python package." "Install a given Python package."
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(params (append (list (string-append "--prefix=" out)) (params (append (list (string-append "--prefix=" out))
configure-flags)) (if use-setuptools?
(python-version (get-python-version (assoc-ref inputs "python"))) ;; distutils does not accept these flags
(old-path (getenv "PYTHONPATH")) (list "--single-version-externally-managed"
(add-path (string-append out "/lib/python" python-version "--root=/")
"/site-packages/"))) '())
;; create the module installation directory and add it to PYTHONPATH configure-flags)))
;; to make setuptools happy (call-setuppy "install" params use-setuptools?)))
(mkdir-p add-path)
(setenv "PYTHONPATH"
(string-append (if old-path
(string-append old-path ":")
"")
add-path))
(call-setuppy "install" params)))
(define* (wrap #:key inputs outputs #:allow-other-keys) (define* (wrap #:key inputs outputs #:allow-other-keys)
(define (list-of-files dir) (define (list-of-files dir)
@ -112,6 +212,9 @@
(define* (rename-pth-file #:key name inputs outputs #:allow-other-keys) (define* (rename-pth-file #:key name inputs outputs #:allow-other-keys)
"Rename easy-install.pth to NAME.pth to avoid conflicts between packages "Rename easy-install.pth to NAME.pth to avoid conflicts between packages
installed with setuptools." 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")) (let* ((out (assoc-ref outputs "out"))
(python (assoc-ref inputs "python")) (python (assoc-ref inputs "python"))
(site-packages (string-append out "/lib/python" (site-packages (string-append out "/lib/python"
@ -137,8 +240,7 @@ installed with setuptools."
#t)) #t))
(define %standard-phases (define %standard-phases
;; 'configure' and 'build' phases are not needed. Everything is done during ;; 'configure' phase is not needed.
;; 'install'.
(modify-phases gnu:%standard-phases (modify-phases gnu:%standard-phases
(add-after 'unpack 'ensure-no-mtimes-pre-1980 ensure-no-mtimes-pre-1980) (add-after 'unpack 'ensure-no-mtimes-pre-1980 ensure-no-mtimes-pre-1980)
(delete 'configure) (delete 'configure)

View File

@ -4,6 +4,7 @@
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -59,6 +60,7 @@
#:export (guix-lint #:export (guix-lint
check-description-style check-description-style
check-inputs-should-be-native check-inputs-should-be-native
check-inputs-should-not-be-an-input-at-all
check-patch-file-names check-patch-file-names
check-synopsis-style check-synopsis-style
check-derivation check-derivation
@ -229,19 +231,11 @@ by two spaces; possible infraction~p at ~{~a~^, ~}")
(format #f (_ "invalid description: ~s") description) (format #f (_ "invalid description: ~s") description)
'description)))) 'description))))
(define (check-inputs-should-be-native package) (define (warn-if-package-has-input linted inputs-to-check input-names message)
;; Emit a warning if some inputs of PACKAGE are likely to belong to its ;; Emit a warning MESSAGE if some of the inputs named in INPUT-NAMES are
;; native inputs. ;; contained in INPUTS-TO-CHECK, which are assumed to be inputs of package
(let ((linted package) ;; LINTED.
(inputs (package-inputs package)) (match inputs-to-check
(native-inputs
'("pkg-config"
"extra-cmake-modules"
"glib:bin"
"intltool"
"itstool"
"qttools")))
(match inputs
(((labels packages . outputs) ...) (((labels packages . outputs) ...)
(for-each (lambda (package output) (for-each (lambda (package output)
(when (package? package) (when (package? package)
@ -250,13 +244,52 @@ by two spaces; possible infraction~p at ~{~a~^, ~}")
(if (> (length output) 0) (if (> (length output) 0)
(string-append ":" (car output)) (string-append ":" (car output))
"")))) ""))))
(when (member input native-inputs) (when (member input input-names)
(emit-warning linted (emit-warning linted
(format #f (_ "'~a' should probably \ (format #f (_ message) input)
be a native input") 'inputs-to-check)))))
input) packages outputs))))
'inputs)))))
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 ((message "'~a' should probably be a native input")
(inputs (package-inputs package))
(input-names
'("pkg-config"
"extra-cmake-modules"
"glib:bin"
"intltool"
"itstool"
"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) (define (package-name-regexp package)
"Return a regexp that matches PACKAGE's name as a word at the beginning of a "Return a regexp that matches PACKAGE's name as a word at the beginning of a
@ -875,6 +908,10 @@ them for PACKAGE."
(name 'inputs-should-be-native) (name 'inputs-should-be-native)
(description "Identify inputs that should be native inputs") (description "Identify inputs that should be native inputs")
(check check-inputs-should-be-native)) (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 (lint-checker
(name 'patch-file-names) (name 'patch-file-names)
(description "Validate file names and availability of patches") (description "Validate file names and availability of patches")

View File

@ -3,6 +3,7 @@
;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -34,6 +35,10 @@
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages pkg-config) #: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 (ice-9 match)
#:use-module (srfi srfi-9 gnu) #:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-64)) #:use-module (srfi srfi-64))
@ -274,6 +279,38 @@
(check-inputs-should-be-native pkg))) (check-inputs-should-be-native pkg)))
"'glib:bin' should probably be a native input"))) "'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" (test-assert "patches: file names"
(->bool (->bool
(string-contains (string-contains