summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-10-07 21:27:36 +0200
committerLudovic Courtès <ludo@gnu.org>2015-10-07 23:25:22 +0200
commit95288fcc6cfa184b500caa95062bf3194d255880 (patch)
treefd79c02f1c88a331b7a7678ae20bbf20185b2e8f
parent0d56e3e1bc7269c403c72ba265cec44d4757d1a1 (diff)
downloadguix-95288fcc6cfa184b500caa95062bf3194d255880.tar.gz
gnu: python: Add "minimal" variants.
* gnu/packages/python.scm (python2-minimal, python-minimal): New
  variables.
  (wrap-python3): New procedure.
  (python-wrapper): Use it.
  (python-minimal-wrapper): New variable.
* gnu/packages/xml.scm (libxslt)[native-inputs]: Use
  PYTHON-MINIMAL-WRAPPER instead of PYTHON-WRAPPER.
* gnu/packages/xorg.scm (xcb-proto, libxcb, xorg-server): Likewise.
-rw-r--r--gnu/packages/python.scm43
-rw-r--r--gnu/packages/xml.scm2
-rw-r--r--gnu/packages/xorg.scm6
3 files changed, 45 insertions, 6 deletions
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 08f5bca2c7..bb4b385026 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -260,9 +260,46 @@ data types.")
                                         (version-major+minor version)
                                         "/site-packages"))))))))
 
-(define-public python-wrapper
+;; Minimal variants of Python, mostly used to break the cycle between Tk and
+;; Python (Tk -> libxcb -> Python.)
+
+(define-public python2-minimal
+  (package (inherit python-2)
+    (name "python-minimal")
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-2)
+       ((#:configure-flags _)
+        `(list "--enable-shared"
+               (string-append "LDFLAGS=-Wl,-rpath="
+                              (assoc-ref %outputs "out") "/lib")))))
+    (inputs '())))                          ;none of the optional dependencies
+
+(define-public python-minimal
+  (package (inherit python)
+    (name "python-minimal")
+    (arguments
+     (substitute-keyword-arguments (package-arguments python)
+       ((#:configure-flags _)
+        `(let ((openssl (assoc-ref %build-inputs "openssl"))
+               (zlib    (assoc-ref %build-inputs "zlib"))
+               (out     (assoc-ref %outputs "out")))
+           (list "--enable-shared"
+                 (string-append "CPPFLAGS="
+                                "-I" openssl "/include "
+                                "-I" zlib "/include ")
+                 (string-append "LDFLAGS="
+                                "-L" openssl "/lib "
+                                "-L" zlib "/lib "
+                                "-Wl,-rpath=" out "/lib"))))))
+
+    ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
+    ;; zlib is required by 'zipimport', used by pip.
+    (inputs `(("openssl" ,openssl)
+              ("zlib" ,zlib)))))
+
+(define* (wrap-python3 python #:optional (name "python-wrapper"))
   (package (inherit python)
-    (name "python-wrapper")
+    (name name)
     (source #f)
     (build-system trivial-build-system)
     (propagated-inputs `(("python" ,python)))
@@ -286,6 +323,8 @@ data types.")
 that they can be invoked under their usual name---e.g., @command{python}
 instead of @command{python3}.")))
 
+(define-public python-wrapper (wrap-python3 python))
+(define-public python-minimal-wrapper (wrap-python3 python-minimal))
 
 (define-public python-psutil
   (package
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 5d65648bfb..d9c92d6d93 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -135,7 +135,7 @@ project (but it is usable outside of the Gnome platform).")
     (synopsis "C library for applying XSLT stylesheets to XML documents")
     (inputs `(("libgcrypt" ,libgcrypt)
               ("libxml2" ,libxml2)
-              ("python" ,python-wrapper)
+              ("python" ,python-minimal-wrapper)
               ("zlib" ,zlib)))
     (description
      "Libxslt is an XSLT C library developed for the GNOME project.  It is
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index d4ed4b82d0..47dc0e2601 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -2050,7 +2050,7 @@ legacy X clients.")
             "0bp3f53l9fy5x3mn1rkj1g81aiyzl90wacwvqdgy831aa3kfxb5l"))))
     (build-system gnu-build-system)
     (native-inputs
-      `(("pkg-config" ,pkg-config) ("python" ,python-wrapper)))
+      `(("pkg-config" ,pkg-config) ("python" ,python-minimal-wrapper)))
     (home-page "http://www.x.org/wiki/")
     (synopsis "XML-XCB protocol descriptions")
     (description
@@ -4804,7 +4804,7 @@ protocol.")
         ("libxslt" ,libxslt)))
     (native-inputs
       `(("pkg-config" ,pkg-config)
-        ("python" ,python-wrapper)))
+        ("python" ,python-minimal-wrapper)))
     (arguments
      `(#:configure-flags '("--enable-xkb")))
     (home-page "http://www.x.org/wiki/")
@@ -4889,7 +4889,7 @@ over Xlib, including:
         ("xtrans" ,xtrans)
         ("zlib" ,zlib)))
     (native-inputs
-       `(("python" ,python-wrapper)
+       `(("python" ,python-minimal-wrapper)
          ("pkg-config" ,pkg-config)))
     (arguments
      `(#:parallel-tests? #f