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
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}.

View file

@ -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 \

View file

@ -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

View file

@ -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

View file

@ -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)))

View file

@ -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

View file

@ -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"

View file

@ -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"

View file

@ -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 models 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))

View file

@ -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)

View file

@ -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)))

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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))))))

View file

@ -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))

View file

@ -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")

View file

@ -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

View file

@ -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))

View file

@ -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

View file

@ -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))

View file

@ -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))

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 @@ (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

View file

@ -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

View file

@ -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)))

View file

@ -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")

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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)))

View file

@ -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.

View file

@ -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

View file

@ -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)

View file

@ -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")

View file

@ -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