gnu: libxml2: Build python bindings separately.

* gnu/packages/xml.scm (libxml2)[native-inputs]: Remove python.
  [arguments]: Remove.
  (python-libxml2, python2-libxml2): New variables.
This commit is contained in:
宋文武 2015-05-30 17:06:25 +08:00
parent 10ac0f9f24
commit 7ce3224247

View file

@ -31,6 +31,7 @@ (define-module (gnu packages xml)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system perl) #:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (gnu packages linux)) #:use-module (gnu packages linux))
(define-public expat (define-public expat
@ -68,10 +69,7 @@ (define-public libxml2
(home-page "http://www.xmlsoft.org/") (home-page "http://www.xmlsoft.org/")
(synopsis "C parser for XML") (synopsis "C parser for XML")
(propagated-inputs `(("zlib" ,zlib))) ; libxml2.la says '-lz'. (propagated-inputs `(("zlib" ,zlib))) ; libxml2.la says '-lz'.
(native-inputs `(("perl" ,perl) (native-inputs `(("perl" ,perl)))
("python" ,python-2))) ; incompatible with Python 3 (print syntax)
;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml' ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
;; sub-directory of any given package. ;; sub-directory of any given package.
(native-search-paths (list (search-path-specification (native-search-paths (list (search-path-specification
@ -81,29 +79,40 @@ (define-public libxml2
(file-pattern "^catalog\\.xml$") (file-pattern "^catalog\\.xml$")
(file-type 'regular)))) (file-type 'regular))))
(search-paths native-search-paths) (search-paths native-search-paths)
(arguments
`(#:phases
(alist-replace
'install
(lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
(let ((install (assoc-ref %standard-phases 'install))
(glibc (assoc-ref inputs ,(if (%current-target-system)
"cross-libc" "libc")))
(out (assoc-ref outputs "out")))
(apply install args)
(chdir "python")
(substitute* "setup.py"
(("/opt/include")
(string-append glibc "/include")))
(system* "python" "setup.py" "install"
(string-append "--prefix=" out))))
%standard-phases)))
(description (description
"Libxml2 is the XML C parser and toolkit developed for the Gnome project "Libxml2 is the XML C parser and toolkit developed for the Gnome project
(but it is usable outside of the Gnome platform).") (but it is usable outside of the Gnome platform).")
(license license:x11))) (license license:x11)))
(define-public python-libxml2
(package (inherit libxml2)
(name "python-libxml2")
(build-system python-build-system)
(arguments
`(;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'.
#:tests? #f
#:phases
(modify-phases %standard-phases
(add-before
'build 'configure
(lambda* (#:key inputs #:allow-other-keys)
(chdir "python")
(let ((glibc (assoc-ref inputs ,(if (%current-target-system)
"cross-libc" "libc")))
(libxml2 (assoc-ref inputs "libxml2")))
(substitute* "setup.py"
;; For 'libxml2/libxml/tree.h'.
(("ROOT = r'/usr'")
(format #f "ROOT = r'~a'" libxml2))
;; For 'iconv.h'.
(("/opt/include")
(string-append glibc "/include")))))))))
(inputs `(("libxml2" ,libxml2)))
(synopsis "Python bindings for the libxml2 library")))
(define-public python2-libxml2
(package-with-python2 python-libxml2))
(define-public libxslt (define-public libxslt
(package (package
(name "libxslt") (name "libxslt")