Merge branch 'python'
This commit is contained in:
commit
aae4ead814
|
@ -45,7 +45,7 @@
|
|||
`(("libgcrypt" ,libgcrypt)
|
||||
("lvm2" ,lvm2)
|
||||
("popt" ,popt)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("util-linux" ,util-linux)))
|
||||
(synopsis "hard disk encryption tool")
|
||||
(description
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
("gmp" ,gmp)
|
||||
("readline" ,readline)
|
||||
("ncurses" ,ncurses)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("texinfo" ,texinfo)
|
||||
("dejagnu" ,dejagnu)))
|
||||
(home-page "http://www.gnu.org/software/gdb/")
|
||||
|
|
|
@ -136,7 +136,7 @@ printing, and psresize, for adjusting page sizes.")
|
|||
("libtiff" ,libtiff)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config) ; needed to find libtiff
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("tcl" ,tcl)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
|
|
|
@ -104,7 +104,7 @@ shared NFS home directories.")
|
|||
("gettext" ,guix:gettext)
|
||||
("libffi" ,libffi)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)
|
||||
("perl" ,perl) ; needed by GIO tests
|
||||
("dbus" ,dbus) ; for GDBus tests
|
||||
|
|
|
@ -191,7 +191,7 @@ S/MIME.")
|
|||
"1g1jly3wl4ks6h8ydkygyl2c4i7v3z91rg42005m6vm70y1d8b3d"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("perl" ,perl)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("gpg" ,gnupg)))
|
||||
(arguments
|
||||
`(#:tests? #f
|
||||
|
|
|
@ -83,7 +83,7 @@ tools have full access to view and control running applications.")
|
|||
("libspectre" ,libspectre)
|
||||
("pkg-config" ,pkg-config)
|
||||
("poppler" ,poppler)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("xextproto" ,xextproto)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
|
@ -123,7 +123,7 @@ affine transformation (scale, rotation, shear, etc.)")
|
|||
`(("cairo" ,cairo)
|
||||
("icu4c" ,icu4c)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)))
|
||||
(synopsis "opentype text shaping engine")
|
||||
(description
|
||||
"HarfBuzz is an OpenType text shaping engine.")
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
|
||||
;; Dependencies used for the tests and for `event_rpcgen.py'.
|
||||
("which" ,which)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)))
|
||||
(arguments
|
||||
'(#:patches (list (assoc-ref %build-inputs "patch/dns-tests"))))
|
||||
(home-page "http://libevent.org/")
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
("libxml2" ,libxml2)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
|
|
@ -191,7 +191,7 @@ meaning that audio is compressed in FLAC without any loss in quality.")
|
|||
("libogg" ,libogg)
|
||||
("libpng" ,libpng)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)))
|
||||
(synopsis "kate, a karaoke and text codec for embedding in ogg")
|
||||
(description
|
||||
|
|
|
@ -19,19 +19,24 @@
|
|||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages python)
|
||||
#:use-module ((guix licenses) #:select (bsd-3 psfl x11))
|
||||
#:use-module ((guix licenses) #:select (bsd-3 bsd-style psfl x11))
|
||||
#:use-module ((guix licenses) #:select (zlib)
|
||||
#:renamer (symbol-prefix-proc 'license))
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages gdbm)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages openssl)
|
||||
#:use-module (gnu packages patchelf)
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python))
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system trivial))
|
||||
|
||||
(define-public python
|
||||
(define-public python-2
|
||||
(package
|
||||
(name "python")
|
||||
(version "2.7.5")
|
||||
|
@ -151,8 +156,8 @@ packages; exception-based error handling; and very high level dynamic
|
|||
data types.")
|
||||
(license psfl)))
|
||||
|
||||
(define-public python-3
|
||||
(package (inherit python)
|
||||
(define-public python
|
||||
(package (inherit python-2)
|
||||
(version "3.3.2")
|
||||
(source
|
||||
(origin
|
||||
|
@ -167,9 +172,34 @@ data types.")
|
|||
(variable "PYTHONPATH")
|
||||
(directories '("lib/python3.3/site-packages")))))))
|
||||
|
||||
(define-public pytz
|
||||
(define-public python-wrapper
|
||||
(package (inherit python)
|
||||
(name "python-wrapper")
|
||||
(source #f)
|
||||
(build-system trivial-build-system)
|
||||
(inputs `(("python" ,python)))
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
(let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
|
||||
(python (string-append (assoc-ref %build-inputs "python") "/bin/")))
|
||||
(mkdir-p bin)
|
||||
(for-each
|
||||
(lambda (old new)
|
||||
(symlink (string-append python old)
|
||||
(string-append bin "/" new)))
|
||||
`("python3", "pydoc3", "idle3")
|
||||
`("python", "pydoc", "idle"))))))
|
||||
(description (string-append (package-description python)
|
||||
"\n\nThis wrapper package provides symbolic links to the python binaries
|
||||
without version suffix."))))
|
||||
|
||||
|
||||
(define-public python-pytz
|
||||
(package
|
||||
(name "pytz")
|
||||
(name "python-pytz")
|
||||
(version "2013b")
|
||||
(source
|
||||
(origin
|
||||
|
@ -180,6 +210,7 @@ data types.")
|
|||
(base32
|
||||
"19giwgfcrg0nr1gdv49qnmf2jb2ilkcfc7qyqvfpz4dp0p64ksv5"))))
|
||||
(build-system python-build-system)
|
||||
(arguments `(#:tests? #f)) ; no test target
|
||||
(home-page "https://launchpad.net/pytz")
|
||||
(synopsis "The Python timezone library.")
|
||||
(description
|
||||
|
@ -187,22 +218,28 @@ data types.")
|
|||
using Python 2.4 or higher and provides access to the Olson timezone database.")
|
||||
(license x11)))
|
||||
|
||||
(define-public babel
|
||||
(define-public python2-pytz
|
||||
(package-with-python2 python-pytz))
|
||||
|
||||
|
||||
(define-public python-babel
|
||||
(package
|
||||
(name "babel")
|
||||
(version "0.9.6")
|
||||
(name "python-babel")
|
||||
(version "1.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://ftp.edgewall.com/pub/babel/Babel-"
|
||||
(uri (string-append "https://pypi.python.org/packages/source/B/Babel/Babel-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"03vmr54jq5vf3qw6kpdv7cdk7x7i2jhzyf1mawv2gk8zrxg0hfja"))))
|
||||
"0bnin777lc53nxd1hp3apq410jj5wx92n08h7h4izpl4f4sx00lz"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("pytz" ,pytz)))
|
||||
(home-page "http://babel.edgewall.org/")
|
||||
`(("python-pytz" ,python-pytz)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
(arguments `(#:tests? #f)) ; no test target
|
||||
(home-page "http://babel.pocoo.org/")
|
||||
(synopsis
|
||||
"Tools for internationalizing Python applications")
|
||||
(description
|
||||
|
@ -212,3 +249,133 @@ using Python 2.4 or higher and provides access to the Olson timezone database.")
|
|||
access to various locale display names, localized number and date formatting,
|
||||
etc. ")
|
||||
(license bsd-3)))
|
||||
|
||||
(define-public python2-babel
|
||||
(package-with-python2 python-babel))
|
||||
|
||||
|
||||
(define-public python-setuptools
|
||||
(package
|
||||
(name "python-setuptools")
|
||||
(version "1.1.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://pypi.python.org/packages/source/s/setuptools/setuptools-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0hl9sa5xr9bi2ifq51wy1bawsjv5nzvpbac7m9z1ciz778874csf"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f))
|
||||
;;FIXME: test_sdist_with_utf8_encoded_filename fails in
|
||||
;; /tmp/nix-build-python2-setuptools-1.1.4.drv-0/setuptools-1.1.4/setuptools/tests/test_sdist.py"
|
||||
;; line 354
|
||||
;; The tests pass with Python 2.7.5.
|
||||
(home-page "https://pypi.python.org/pypi/setuptools")
|
||||
(synopsis
|
||||
"Library designed to facilitate packaging Python projects")
|
||||
(description
|
||||
"Setuptools is a fully-featured, stable library designed to facilitate
|
||||
packaging Python projects, where packaging includes:
|
||||
Python package and module definitions,
|
||||
distribution package metadata,
|
||||
test hooks,
|
||||
project installation,
|
||||
platform-specific details,
|
||||
Python 3 support.")
|
||||
(license psfl)))
|
||||
|
||||
(define-public python2-setuptools
|
||||
(package-with-python2 python-setuptools))
|
||||
|
||||
|
||||
(define-public python-dateutil
|
||||
(package
|
||||
(name "python-dateutil")
|
||||
(version "1.5") ; last version for python < 3
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://labix.org/download/python-dateutil/python-dateutil-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("python-setuptools" ,python-setuptools)))
|
||||
(home-page "http://labix.org/python-dateutil")
|
||||
(synopsis
|
||||
"Extensions to the standard datetime module, available in Python 2.3+")
|
||||
(description
|
||||
"The dateutil module provides powerful extensions to the standard
|
||||
datetime module, available in Python 2.3+.")
|
||||
(license psfl)))
|
||||
|
||||
(define-public python2-dateutil
|
||||
(package-with-python2 python-dateutil))
|
||||
|
||||
|
||||
(define-public python2-pysqlite
|
||||
(package
|
||||
(name "python2-pysqlite")
|
||||
(version "2.6.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://pysqlite.googlecode.com/files/pysqlite-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0nsqqfp072rgqbls100rdvbzkjkin7li3kprhfxlfqvzf608hlqd"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("sqlite" ,sqlite)))
|
||||
(arguments
|
||||
`(#:python ,python-2 ; incompatible with Python 3
|
||||
#:tests? #f)) ; no test target
|
||||
(home-page "http://labix.org/python-dateutil")
|
||||
(synopsis
|
||||
"SQLite bindings for Python.")
|
||||
(description
|
||||
"Pysqlite provides SQLite bindings for Python that comply to the
|
||||
Database API 2.0T.")
|
||||
(license zlib)))
|
||||
|
||||
|
||||
(define-public python2-mechanize
|
||||
(package
|
||||
(name "python2-mechanize")
|
||||
(version "0.2.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)))
|
||||
(arguments
|
||||
`(#:python ,python-2 ; apparently incompatible with Python 3
|
||||
#:tests? #f))
|
||||
;; test fails with message
|
||||
;; AttributeError: 'module' object has no attribute 'test_pullparser'
|
||||
;; (python-3.3.2) or
|
||||
;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
|
||||
;; (python-2.7.5).
|
||||
;; The source code is from March 2011 and probably not up-to-date
|
||||
;; with respect to python unit tests.
|
||||
(home-page "http://wwwsearch.sourceforge.net/mechanize/")
|
||||
(synopsis
|
||||
"Stateful programmatic web browsing in Python")
|
||||
(description
|
||||
"Mechanize implements stateful programmatic web browsing in Python,
|
||||
after Andy Lester’s Perl module WWW::Mechanize.")
|
||||
(license (bsd-style "file://COPYING"
|
||||
"See COPYING in the distribution."))))
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
`(;; ("mesa" ,mesa)
|
||||
;; ("libaio" ,libaio)
|
||||
("glib" ,glib)
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 according to error message
|
||||
("ncurses" ,ncurses)
|
||||
("libpng" ,libpng)
|
||||
("libjpeg" ,libjpeg-8)
|
||||
|
|
|
@ -150,7 +150,7 @@ anywhere.")
|
|||
("patchelf" ,patchelf))) ; for (guix build rpath)
|
||||
(native-inputs ; for the test suite
|
||||
`(("perl" ,perl)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)))
|
||||
(home-page "http://www.samba.org/")
|
||||
(synopsis
|
||||
"The standard Windows interoperability suite of programs for GNU and Unix")
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
("pkg-config" ,pkg-config)
|
||||
;; FIXME: Add interpreters fontforge and ruby,
|
||||
;; once they are available.
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 (print syntax)
|
||||
("tcsh" ,tcsh)
|
||||
("teckit" ,teckit)
|
||||
("t1lib" ,t1lib)
|
||||
|
@ -202,7 +202,7 @@ world.")
|
|||
(build-system gnu-build-system)
|
||||
(arguments '(#:tests? #f)) ; no `check' target
|
||||
(inputs `(("texinfo" ,texinfo)
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 (print syntax)
|
||||
("which" ,which)))
|
||||
(home-page "https://launchpad.net/rubber")
|
||||
(synopsis "Rubber, a wrapper for LaTeX and friends")
|
||||
|
|
|
@ -58,7 +58,9 @@
|
|||
;; require Zsh.
|
||||
`(("gettext" ,guix:gettext)))
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no test target
|
||||
`(#:tests? #f ; no test target
|
||||
#:python ,python-2)) ; Python 3 apparently not yet supported, see
|
||||
; https://answers.launchpad.net/bzr/+question/229048
|
||||
(home-page "https://gnu.org/software/bazaar")
|
||||
(synopsis "Decentralized revision control system")
|
||||
(description
|
||||
|
@ -86,7 +88,7 @@ from a command line or use a GUI application.")
|
|||
("gettext" ,guix:gettext)
|
||||
("openssl" ,openssl)
|
||||
("perl" ,perl)
|
||||
("python" ,python) ; CAVEAT: incompatible with python-3 according to INSTALL
|
||||
("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:make-flags `("V=1") ; more verbose compilation
|
||||
|
@ -126,7 +128,7 @@ everything from small to very large projects with speed and efficiency.")
|
|||
`(("apr" ,apr)
|
||||
("apr-util" ,apr-util)
|
||||
("perl" ,perl)
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 (print syntax)
|
||||
("sqlite" ,sqlite)
|
||||
("zlib" ,zlib)))
|
||||
(home-page "http://subversion.apache.org/")
|
||||
|
|
|
@ -66,7 +66,7 @@ things the parser might find in the XML document (like start tags).")
|
|||
(home-page "http://www.xmlsoft.org/")
|
||||
(synopsis "libxml2, a C parser for XML")
|
||||
(inputs `(("perl" ,perl)
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 (print syntax)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -102,7 +102,7 @@ things the parser might find in the XML document (like start tags).")
|
|||
(synopsis "libxslt, a C library for applying XSLT stylesheets to XML documents")
|
||||
(inputs `(("libgcrypt" ,libgcrypt)
|
||||
("libxml2" ,libxml2)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)))
|
||||
(description
|
||||
"Libxslt is an XSLT C library developed for the GNOME project. It is
|
||||
|
|
|
@ -1857,7 +1857,7 @@ tracking.")
|
|||
"0ds4qg6slidrzyz6q9ckq0a19hn6blzpnvciy4brh741gn49jpdd"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("pkg-config" ,pkg-config) ("python" ,python)))
|
||||
`(("pkg-config" ,pkg-config) ("python" ,python-wrapper)))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
|
@ -4169,7 +4169,7 @@ tracking.")
|
|||
("libxml2" ,libxml2)
|
||||
("makedepend" ,makedepend)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)))
|
||||
("python" ,python-2))) ; incompatible with Python 3 (print syntax)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
`("--with-gallium-drivers=r600,svga,swrast") ; drop r300 from the default list as it requires llvm
|
||||
|
@ -4215,7 +4215,7 @@ emulation to complete hardware acceleration for modern GPUs.")
|
|||
`(("xcb-proto" ,xcb-proto)
|
||||
("libxslt" ,libxslt)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
|
@ -4270,7 +4270,7 @@ emulation to complete hardware acceleration for modern GPUs.")
|
|||
("mesa" ,mesa)
|
||||
("openssl" ,openssl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("recordproto" ,recordproto)
|
||||
("resourceproto" ,resourceproto)
|
||||
("scrnsaverproto" ,scrnsaverproto)
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
"0cfg7ji3ia2in628w42wrfvw2ixmmm4rghwmv2k202mraysgm3vn"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("python" ,python)
|
||||
`(("python" ,python-wrapper)
|
||||
("xmlto" ,xmlto)))
|
||||
(home-page "http://yasm.tortall.net/")
|
||||
(synopsis "Rewrite of the NASM assembler")
|
||||
|
|
|
@ -120,7 +120,8 @@ UnZip recreates the stored directory structure by default.")
|
|||
(build-system gnu-build-system)
|
||||
(inputs `(("perl" ,perl) ; for the documentation
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python) ; for the documentation
|
||||
("python" ,python-2) ; for the documentation; Python 3 not supported,
|
||||
; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
|
||||
("zip" ,zip) ; to create test files
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -25,7 +26,9 @@
|
|||
#:use-module (guix build-system)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (python-build
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (package-with-python2
|
||||
python-build
|
||||
python-build-system))
|
||||
|
||||
;; Commentary:
|
||||
|
@ -39,13 +42,60 @@
|
|||
"Return the default Python package."
|
||||
;; Lazily resolve the binding to avoid a circular dependency.
|
||||
(let ((python (resolve-interface '(gnu packages python))))
|
||||
(module-ref python 'python)))
|
||||
(module-ref python 'python-wrapper)))
|
||||
|
||||
(define (default-python2)
|
||||
"Return the default Python 2 package."
|
||||
(let ((python (resolve-interface '(gnu packages python))))
|
||||
(module-ref python 'python-2)))
|
||||
|
||||
(define (package-with-explicit-python p python old-prefix new-prefix)
|
||||
"Create a package with the same fields as P, which is assumed to use
|
||||
PYTHON-BUILD-SYSTEM, such that it is compiled with PYTHON instead. The
|
||||
inputs are changed recursively accordingly. If the name of P starts with
|
||||
OLD-PREFIX, this is replaced by NEW-PREFIX; otherwise, NEW-PREFIX is
|
||||
prepended to the name."
|
||||
(let* ((build-system (package-build-system p))
|
||||
(rewrite-if-package
|
||||
(lambda (content)
|
||||
;; CONTENT may be a string (e.g., for patches), in which case it
|
||||
;; is returned, or a package, which is rewritten with the new
|
||||
;; PYTHON and NEW-PREFIX.
|
||||
(if (package? content)
|
||||
(package-with-explicit-python content python
|
||||
old-prefix new-prefix)
|
||||
content)))
|
||||
(rewrite
|
||||
(match-lambda
|
||||
((name content . rest)
|
||||
(append (list name (rewrite-if-package content)) rest)))))
|
||||
(package (inherit p)
|
||||
(name
|
||||
(let ((name (package-name p)))
|
||||
(if (eq? build-system python-build-system)
|
||||
(string-append new-prefix
|
||||
(if (string-prefix? old-prefix name)
|
||||
(substring name (string-length old-prefix))
|
||||
name))
|
||||
name)))
|
||||
(arguments
|
||||
(let ((arguments (package-arguments p)))
|
||||
(if (eq? build-system python-build-system)
|
||||
(if (member #:python arguments)
|
||||
(substitute-keyword-arguments arguments ((#:python p) python))
|
||||
(append arguments `(#:python ,python)))
|
||||
arguments)))
|
||||
(inputs
|
||||
(map rewrite (package-inputs p)))
|
||||
(native-inputs
|
||||
(map rewrite (package-native-inputs p))))))
|
||||
|
||||
(define package-with-python2
|
||||
(cut package-with-explicit-python <> (default-python2) "python-" "python2-"))
|
||||
|
||||
(define* (python-build store name source inputs
|
||||
#:key
|
||||
(python (default-python))
|
||||
(python-version
|
||||
(string-take (package-version (default-python)) 3))
|
||||
(tests? #t)
|
||||
(configure-flags ''())
|
||||
(phases '(@ (guix build python-build-system)
|
||||
|
@ -58,10 +108,10 @@
|
|||
(guix build gnu-build-system)
|
||||
(guix build utils)))
|
||||
(modules '((guix build python-build-system)
|
||||
(guix build gnu-build-system)
|
||||
(guix build utils))))
|
||||
"Build SOURCE using PYTHON, and with INPUTS. This assumes that SOURCE
|
||||
provides a 'setup.py' file as its build system."
|
||||
|
||||
(define python-search-paths
|
||||
(append (package-native-search-paths python)
|
||||
(standard-search-paths)))
|
||||
|
@ -77,8 +127,8 @@ provides a 'setup.py' file as its build system."
|
|||
#:system ,system
|
||||
#:test-target "test"
|
||||
#:tests? ,tests?
|
||||
#:phases ,phases
|
||||
#:outputs %outputs
|
||||
#:python-version ,python-version
|
||||
#:search-paths ',(map search-path-specification->sexp
|
||||
(append python-search-paths
|
||||
search-paths))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -34,26 +35,49 @@
|
|||
;;
|
||||
;; Code:
|
||||
|
||||
(define* (install #:key outputs (configure-flags '())
|
||||
#:allow-other-keys)
|
||||
"Install a given Python package."
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(if (file-exists? "setup.py")
|
||||
(let ((args `("setup.py" "install" ,(string-append "--prefix=" out)
|
||||
,@configure-flags)))
|
||||
(format #t "running 'python' with arguments ~s~%" args)
|
||||
(zero? (apply system* "python" args)))
|
||||
(error "no setup.py found"))))
|
||||
|
||||
(define* (check #:key outputs #:allow-other-keys)
|
||||
"Run the test suite of a given Python package."
|
||||
(define (call-setuppy command params)
|
||||
(if (file-exists? "setup.py")
|
||||
(let ((args `("setup.py" "check")))
|
||||
(format #t "running 'python' with arguments ~s~%" args)
|
||||
(zero? (apply system* "python" args)))
|
||||
(begin
|
||||
(format #t "running \"python setup.py\" with command ~s and parameters ~s~%"
|
||||
command params)
|
||||
(zero? (apply system* "python" "setup.py" command params)))
|
||||
(error "no setup.py found")))
|
||||
|
||||
(define* (wrap #:key outputs python-version #:allow-other-keys)
|
||||
(define* (build #:rest empty)
|
||||
"Build a given Python package."
|
||||
(call-setuppy "build" '()))
|
||||
|
||||
(define* (check #:key tests? test-target #:allow-other-keys)
|
||||
"Run the test suite of a given Python package."
|
||||
(if tests?
|
||||
(call-setuppy test-target '())
|
||||
#t))
|
||||
|
||||
(define (get-python-version python)
|
||||
(string-take (string-take-right python 5) 3))
|
||||
|
||||
(define* (install #:key outputs inputs (configure-flags '())
|
||||
#: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)))
|
||||
|
||||
(define* (wrap #:key inputs outputs #:allow-other-keys)
|
||||
(define (list-of-files dir)
|
||||
(map (cut string-append dir "/" <>)
|
||||
(or (scandir dir (lambda (f)
|
||||
|
@ -69,9 +93,11 @@
|
|||
outputs))
|
||||
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(python (assoc-ref inputs "python"))
|
||||
(var `("PYTHONPATH" prefix
|
||||
,(cons (string-append out "/lib/python"
|
||||
python-version "/site-packages")
|
||||
(get-python-version python)
|
||||
"/site-packages")
|
||||
(search-path-as-string->list
|
||||
(or (getenv "PYTHONPATH") ""))))))
|
||||
(for-each (lambda (dir)
|
||||
|
@ -86,11 +112,12 @@
|
|||
(alist-cons-after
|
||||
'install 'wrap
|
||||
wrap
|
||||
(alist-replace
|
||||
'build build
|
||||
(alist-replace
|
||||
'check check
|
||||
(alist-replace 'install install
|
||||
(alist-delete 'configure
|
||||
(alist-delete 'build
|
||||
gnu:%standard-phases))))))
|
||||
|
||||
(define* (python-build #:key inputs (phases %standard-phases)
|
||||
|
|
Loading…
Reference in New Issue