summary refs log tree commit diff
diff options
context:
space:
mode:
authorFederico Beffa <beffa@fbengineering.ch>2015-12-01 17:20:59 +0100
committerFederico Beffa <beffa@fbengineering.ch>2015-12-02 18:21:13 +0100
commit1bbc659fd2012fbe33b53783c838e84833c74496 (patch)
tree5aa4bf06346567a9e6b7e39f7d0ca961c016ca8c
parent214ed6a39b05069b47a8d13a9f2c7f4243dddb40 (diff)
downloadguix-1bbc659fd2012fbe33b53783c838e84833c74496.tar.gz
gnu: python-matplotlib: Add 'TkAgg' backend and update to version '1.4.3'.
* gnu/packages/python.scm (python-matplotlib, python2-matplotlib): Do it.
* gnu/packages/patches/matplotlib-setupext-tk.patch: New file.
* gnu-system.am (dist_patch_DATA): Add the new patch.
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/patches/matplotlib-setupext-tk.patch34
-rw-r--r--gnu/packages/python.scm24
3 files changed, 50 insertions, 9 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 4e068536a1..ee7fcc185b 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -611,6 +611,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/make-impure-dirs.patch			\
   gnu/packages/patches/mars-install.patch			\
   gnu/packages/patches/mars-sfml-2.3.patch			\
+  gnu/packages/patches/matplotlib-setupext-tk.patch		\
   gnu/packages/patches/maxima-defsystem-mkdir.patch		\
   gnu/packages/patches/mc-fix-ncurses-build.patch		\
   gnu/packages/patches/mcron-install.patch			\
diff --git a/gnu/packages/patches/matplotlib-setupext-tk.patch b/gnu/packages/patches/matplotlib-setupext-tk.patch
new file mode 100644
index 0000000000..37c3d686e0
--- /dev/null
+++ b/gnu/packages/patches/matplotlib-setupext-tk.patch
@@ -0,0 +1,34 @@
+Use 'pkg-config' instead of heuristics to find 'tk' flags.
+
+--- matplotlib-1.4.3/setupext.py.orig	2015-12-01 14:21:19.554417453 +0100
++++ matplotlib-1.4.3/setupext.py	2015-12-02 10:39:47.282363530 +0100
+@@ -1457,7 +1457,7 @@
+             p = subprocess.Popen(
+                 '. %s ; eval echo ${%s}' % (file, varname),
+                 shell=True,
+-                executable="/bin/sh",
++                executable="sh",
+                 stdout=subprocess.PIPE)
+             result = p.communicate()[0]
+             return result.decode('ascii')
+@@ -1601,8 +1601,19 @@
+             #      of distros.
+ 
+             # Query Tcl/Tk system for library paths and version string
++            def getoutput(s):
++                ret = os.popen(s).read().strip()
++                return ret
+             try:
+-                tcl_lib_dir, tk_lib_dir, tk_ver = self.query_tcltk()
++                pkg_config_libs = getoutput('pkg-config --libs-only-L tk').split()
++                # drop '-L' part of strings
++                pkg_config_libs = [s[2:] for s in pkg_config_libs]
++                pkg_config_ver = getoutput('pkg-config --modversion tk')
++                tk_ver = re.match(r"(\d+.\d+)[\d.]*", pkg_config_ver).group(1)
++                tcl_lib_dir = next(s for s in pkg_config_libs
++                                   if re.match(r".*-tcl-.*", s)) + '/tcl' + tk_ver
++                tk_lib_dir = next(s for s in pkg_config_libs
++                                  if re.match(r".*-tk-.*", s)) + '/tk' + tk_ver
+             except:
+                 tk_ver = ''
+                 result = self.hardcoded_tcl_config()
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d8d7d0c9ba..f033cb1a79 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3182,7 +3182,7 @@ transcendental functions).")
 (define-public python-matplotlib
   (package
     (name "python-matplotlib")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
@@ -3190,13 +3190,15 @@ transcendental functions).")
                            "/matplotlib-" version ".tar.gz"))
        (sha256
         (base32
-         "0m6v9nwdldlwk22gcd339zg6mny5m301fxgks7z8sb8m9wawg8qp"))))
+         "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
+       (patches (list (search-patch "matplotlib-setupext-tk.patch")))))
     (build-system python-build-system)
     (outputs '("out" "doc"))
     (propagated-inputs ; the following packages are all needed at run time
      `(("python-pyparsing" ,python-pyparsing)
        ("python-pygobject" ,python-pygobject)
        ("gobject-introspection" ,gobject-introspection)
+       ("python-tkinter" ,python "tk")
        ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
        ;; from 'gtk+') provides the required 'typelib' files used by
        ;; 'gobject-introspection'. The location of these files is set with the
@@ -3231,7 +3233,8 @@ transcendental functions).")
        ;; FIXME: Add backends when available.
        ;("python-wxpython" ,python-wxpython)
        ;("python-pyqt" ,python-pyqt)
-       ))
+       ("tcl" ,tcl)
+       ("tk" ,tk)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("texlive" ,texlive)
@@ -3250,8 +3253,12 @@ transcendental functions).")
             (setenv "HOME" (getcwd))
             (call-with-output-file "setup.cfg"
               (lambda (port)
-                (format port "[rc_options]~%
-backend = GTK3Agg~%")))))
+                (format port "[directories]~%
+basedirlist = ~a,~a~%
+[rc_options]~%
+backend = TkAgg~%"
+                        (assoc-ref inputs "tcl")
+                        (assoc-ref inputs "tk"))))))
         (alist-cons-after
          'install 'install-doc
          (lambda* (#:key outputs #:allow-other-keys)
@@ -3295,10 +3302,9 @@ toolkits.")
       (propagated-inputs
        `(("python2-pycairo" ,python2-pycairo)
          ("python2-pygobject-2" ,python2-pygobject-2)
-         ,@(alist-delete "python-pycairo"
-                         (alist-delete "python-pygobject"
-                                       (package-propagated-inputs
-                                        matplotlib))))))))
+         ("python2-tkinter" ,python-2 "tk")
+         ,@(fold alist-delete (package-propagated-inputs matplotlib)
+                 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
 
 (define-public python2-pysnptools
   (package