unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#20889: [PATCH] tk: Hardcode path to TK_LIBRARY.
       [not found] <8def219fd20047742c102943aaf6dea7@openmailbox.org>
@ 2015-11-12 12:58 ` Ludovic Courtès
       [not found] ` <87ziyjxtkp.fsf@gnu.org>
  1 sibling, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2015-11-12 12:58 UTC (permalink / raw)
  To: 宋文武; +Cc: guix-devel, iyzsong, 20889

宋文武 <iyzsong@openmailbox.org> skribis:

> From 6c9ea521e88d36bd1ce990a561477ec0e2950017 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
> Date: Thu, 12 Nov 2015 13:31:19 +0800
> Subject: [PATCH] tk: Hardcode path to TK_LIBRARY.
>
> Fixes <http://bugs.gnu.org/20889>.
>
> * gnu/packages/patches/tk-find-library.patch: New patch.
> * gnu-system.am (dist_patch_DATA): Add it.
> * gnu/packages/tcl.scm (tk)[source]: Add patch.

[...]

> +++ b/gnu/packages/patches/tk-find-library.patch
> @@ -0,0 +1,30 @@
> +This patch hardcode where Tk found its script library during package
                     ^^          ^^^^
“This patch hard-codes the Tk library directory during package
initialization.”

OK with this change.  Thanks for providing a quick fix!  :-)

Could you commit it in a new ‘tk-update’ branch?

At the same time, I think we should move tkinter*.so to a separate
output of the Python packages; I think it’s a matter of moving the .so
to a separate output, literally.  Would you like to give it a try?

Thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#20889: [PATCH] tk: Hardcode path to TK_LIBRARY.
       [not found] ` <87ziyjxtkp.fsf@gnu.org>
@ 2015-11-13 11:55   ` 宋文武
  2015-11-16  8:42   ` bug#20889: Tkinter moved to separate output Ludovic Courtès
  1 sibling, 0 replies; 8+ messages in thread
From: 宋文武 @ 2015-11-13 11:55 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel, 20889

ludo@gnu.org (Ludovic Courtès) writes:

> 宋文武 <iyzsong@openmailbox.org> skribis:
>
>> From 6c9ea521e88d36bd1ce990a561477ec0e2950017 Mon Sep 17 00:00:00 2001
>> From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
>> Date: Thu, 12 Nov 2015 13:31:19 +0800
>> Subject: [PATCH] tk: Hardcode path to TK_LIBRARY.
>>
>> Fixes <http://bugs.gnu.org/20889>.
>>
>> * gnu/packages/patches/tk-find-library.patch: New patch.
>> * gnu-system.am (dist_patch_DATA): Add it.
>> * gnu/packages/tcl.scm (tk)[source]: Add patch.
>
> [...]
>
>> +++ b/gnu/packages/patches/tk-find-library.patch
>> @@ -0,0 +1,30 @@
>> +This patch hardcode where Tk found its script library during package
>                      ^^          ^^^^
> “This patch hard-codes the Tk library directory during package
> initialization.”
>
> OK with this change.  Thanks for providing a quick fix!  :-)
>
> Could you commit it in a new ‘tk-update’ branch?
Done.
>
> At the same time, I think we should move tkinter*.so to a separate
> output of the Python packages; I think it’s a matter of moving the .so
> to a separate output, literally.  Would you like to give it a try?
I don't know much about python, so I'd like to leave it for others :-)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#20889: Tkinter moved to separate output
       [not found] ` <87ziyjxtkp.fsf@gnu.org>
  2015-11-13 11:55   ` 宋文武
@ 2015-11-16  8:42   ` Ludovic Courtès
  2015-11-16 11:44     ` Federico Beffa
  1 sibling, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2015-11-16  8:42 UTC (permalink / raw)
  To: 宋文武; +Cc: guix-devel, iyzsong, 20889, Federico Beffa

In ‘tk-update’ the ‘python’ packages now have a separate ‘tk’ output for
Tkinter (adding ~50 MiB to the closure of Python.)  I’ve tested it along
these lines, for 2.x and 3.x:

  guix environment --ad-hoc python python:tk --pure -- python
  > import Tkinter
  > root = Tkinter.Tk()
  
One thing I haven’t checked is whether some packages need to have an
additional python:tk input.  Matplotlib maybe?  Federico?

I plan to have Hydra build that branch once we’ve checked that.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#20889: Tkinter moved to separate output
  2015-11-16  8:42   ` bug#20889: Tkinter moved to separate output Ludovic Courtès
@ 2015-11-16 11:44     ` Federico Beffa
  2015-11-16 12:57       ` Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Federico Beffa @ 2015-11-16 11:44 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 宋文武, Guix-devel, iyzsong, 20889

On Mon, Nov 16, 2015 at 9:42 AM, Ludovic Courtès <ludo@gnu.org> wrote:
> In ‘tk-update’ the ‘python’ packages now have a separate ‘tk’ output for
> Tkinter (adding ~50 MiB to the closure of Python.)  I’ve tested it along
> these lines, for 2.x and 3.x:
>
>   guix environment --ad-hoc python python:tk --pure -- python
>   > import Tkinter
>   > root = Tkinter.Tk()
>
> One thing I haven’t checked is whether some packages need to have an
> additional python:tk input.  Matplotlib maybe?  Federico?

Yes, given that the back-end currently used by matploblib doesn't
work, I would change that by using 'Tkinter'.

Since you are at it, I would also change the default back-end by
changing 'GTK3Agg' to 'TkAgg' in the following snippet:

(lambda (port)
  (format port "[rc_options]~%
backend = GTK3Agg~%")))))

I'm not convinced that having 2 versions of packages (a "normal" and a
"minimal" one) is a good idea. The reason is that you often end up
downloading both instead of just one. As one example, I just
downloaded 'vlc' and I noticed that it downloaded both 'cups' and
'cups-minimal'. Similarly, for python, anyone needing 'Tkinter' will
end up with 2 versions in the store.

Regards,
Fede

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#20889: Tkinter moved to separate output
  2015-11-16 11:44     ` Federico Beffa
@ 2015-11-16 12:57       ` Ludovic Courtès
  2015-11-16 13:16         ` Federico Beffa
       [not found]         ` <CAKrPhPOXRTG10qVkEqAPmcLyPGteT_JwkbH+QFprGOcBT=6uQw@mail.gmail.com>
  0 siblings, 2 replies; 8+ messages in thread
From: Ludovic Courtès @ 2015-11-16 12:57 UTC (permalink / raw)
  To: Federico Beffa; +Cc: 宋文武, Guix-devel, iyzsong, 20889

Federico Beffa <beffa@ieee.org> skribis:

> On Mon, Nov 16, 2015 at 9:42 AM, Ludovic Courtès <ludo@gnu.org> wrote:
>> In ‘tk-update’ the ‘python’ packages now have a separate ‘tk’ output for
>> Tkinter (adding ~50 MiB to the closure of Python.)  I’ve tested it along
>> these lines, for 2.x and 3.x:
>>
>>   guix environment --ad-hoc python python:tk --pure -- python
>>   > import Tkinter
>>   > root = Tkinter.Tk()
>>
>> One thing I haven’t checked is whether some packages need to have an
>> additional python:tk input.  Matplotlib maybe?  Federico?
>
> Yes, given that the back-end currently used by matploblib doesn't
> work, I would change that by using 'Tkinter'.
>
> Since you are at it, I would also change the default back-end by
> changing 'GTK3Agg' to 'TkAgg' in the following snippet:
>
> (lambda (port)
>   (format port "[rc_options]~%
> backend = GTK3Agg~%")))))

OTOH I see that Matploblib already depends on GTK+ 3.x and
python-pygobject, so maybe it’s best to stick to GTK+ by default?

> I'm not convinced that having 2 versions of packages (a "normal" and a
> "minimal" one) is a good idea. The reason is that you often end up
> downloading both instead of just one. As one example, I just
> downloaded 'vlc' and I noticed that it downloaded both 'cups' and
> 'cups-minimal'. Similarly, for python, anyone needing 'Tkinter' will
> end up with 2 versions in the store.

The ‘minimal’ variants are there to break cyclic dependencies most of
the time.  This is the case for cups/cups-filters and Python/Tk.

At run time, cups indeed depends on cups-filters, which depends on
cups-minimal.  In that case, as you say, we end up downloading those two
variants.  But there’s not much of a choice, as was discussed during the
initial review:

  https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00057.html

Conversely, python does not depend on python-minimal.  So python-minimal
is here just to break the cycle with Tk/libxcb, as noted in python.scm
and discussed in:

  http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20889

As for Tkinter, it is in a separate “tk” output, which users can choose
to install or not.  The “tk” output contains a single file, but it pulls
in Tcl/Tk.

I hope this clarifies things.

Thanks for your feedback,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#20889: Tkinter moved to separate output
  2015-11-16 12:57       ` Ludovic Courtès
@ 2015-11-16 13:16         ` Federico Beffa
       [not found]         ` <CAKrPhPOXRTG10qVkEqAPmcLyPGteT_JwkbH+QFprGOcBT=6uQw@mail.gmail.com>
  1 sibling, 0 replies; 8+ messages in thread
From: Federico Beffa @ 2015-11-16 13:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 宋文武, Guix-devel, iyzsong, 20889

On Mon, Nov 16, 2015 at 1:57 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> Federico Beffa <beffa@ieee.org> skribis:
>> Yes, given that the back-end currently used by matploblib doesn't
>> work, I would change that by using 'Tkinter'.
>>
>> Since you are at it, I would also change the default back-end by
>> changing 'GTK3Agg' to 'TkAgg' in the following snippet:
>>
>> (lambda (port)
>>   (format port "[rc_options]~%
>> backend = GTK3Agg~%")))))
>
> OTOH I see that Matploblib already depends on GTK+ 3.x and
> python-pygobject, so maybe it’s best to stick to GTK+ by default?

Unfortunately, the back-ends based on GTK+ are broken and I didn't
manage to find how to fix the problem.
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20888

That's why I'm looking forward to get Tkinter :-)

>> I'm not convinced that having 2 versions of packages (a "normal" and a
>> "minimal" one) is a good idea. The reason is that you often end up
>> downloading both instead of just one. As one example, I just
>> downloaded 'vlc' and I noticed that it downloaded both 'cups' and
>> 'cups-minimal'. Similarly, for python, anyone needing 'Tkinter' will
>> end up with 2 versions in the store.
>
> The ‘minimal’ variants are there to break cyclic dependencies most of
> the time.  This is the case for cups/cups-filters and Python/Tk.
>
> At run time, cups indeed depends on cups-filters, which depends on
> cups-minimal.  In that case, as you say, we end up downloading those two
> variants.  But there’s not much of a choice, as was discussed during the
> initial review:
>
>   https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00057.html
>
> Conversely, python does not depend on python-minimal.  So python-minimal
> is here just to break the cycle with Tk/libxcb, as noted in python.scm
> and discussed in:
>
>   http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20889
>
> As for Tkinter, it is in a separate “tk” output, which users can choose
> to install or not.  The “tk” output contains a single file, but it pulls
> in Tcl/Tk.

OK. Thanks for the explanation!

Regards,
Fede

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#20889: Tkinter moved to separate output
       [not found]         ` <CAKrPhPOXRTG10qVkEqAPmcLyPGteT_JwkbH+QFprGOcBT=6uQw@mail.gmail.com>
@ 2015-11-29 22:09           ` Ludovic Courtès
       [not found]           ` <87two4e9v8.fsf@gnu.org>
  1 sibling, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2015-11-29 22:09 UTC (permalink / raw)
  To: Federico Beffa; +Cc: 宋文武, Guix-devel, iyzsong, 20889

[-- Attachment #1: Type: text/plain, Size: 978 bytes --]

Federico Beffa <beffa@ieee.org> skribis:

> On Mon, Nov 16, 2015 at 1:57 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>> Federico Beffa <beffa@ieee.org> skribis:
>>> Yes, given that the back-end currently used by matploblib doesn't
>>> work, I would change that by using 'Tkinter'.
>>>
>>> Since you are at it, I would also change the default back-end by
>>> changing 'GTK3Agg' to 'TkAgg' in the following snippet:
>>>
>>> (lambda (port)
>>>   (format port "[rc_options]~%
>>> backend = GTK3Agg~%")))))
>>
>> OTOH I see that Matploblib already depends on GTK+ 3.x and
>> python-pygobject, so maybe it’s best to stick to GTK+ by default?
>
> Unfortunately, the back-ends based on GTK+ are broken and I didn't
> manage to find how to fix the problem.
> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20888
>
> That's why I'm looking forward to get Tkinter :-)

Could you or someone else test this patch on current master?

Thanks in advance!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 963 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 39d0751..76bda96 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3190,6 +3190,7 @@ transcendental functions).")
      `(("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
@@ -3244,7 +3245,7 @@ transcendental functions).")
             (call-with-output-file "setup.cfg"
               (lambda (port)
                 (format port "[rc_options]~%
-backend = GTK3Agg~%")))))
+backend = TkAgg~%")))))
         (alist-cons-after
          'install 'install-doc
          (lambda* (#:key outputs #:allow-other-keys)

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#20889: Tkinter moved to separate output
       [not found]           ` <87two4e9v8.fsf@gnu.org>
@ 2015-11-30 16:45             ` Federico Beffa
  0 siblings, 0 replies; 8+ messages in thread
From: Federico Beffa @ 2015-11-30 16:45 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 宋文武, Guix-devel, iyzsong, 20889

[-- Attachment #1: Type: text/plain, Size: 2994 bytes --]

On Sun, Nov 29, 2015 at 11:09 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> Federico Beffa <beffa@ieee.org> skribis:
>
>> On Mon, Nov 16, 2015 at 1:57 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>>> Federico Beffa <beffa@ieee.org> skribis:
>>>> Yes, given that the back-end currently used by matploblib doesn't
>>>> work, I would change that by using 'Tkinter'.
>>>>
>>>> Since you are at it, I would also change the default back-end by
>>>> changing 'GTK3Agg' to 'TkAgg' in the following snippet:
>>>>
>>>> (lambda (port)
>>>>   (format port "[rc_options]~%
>>>> backend = GTK3Agg~%")))))
>>>
>>> OTOH I see that Matploblib already depends on GTK+ 3.x and
>>> python-pygobject, so maybe it’s best to stick to GTK+ by default?
>>
>> Unfortunately, the back-ends based on GTK+ are broken and I didn't
>> manage to find how to fix the problem.
>> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20888
>>
>> That's why I'm looking forward to get Tkinter :-)
>
> Could you or someone else test this patch on current master?

It does not work. It can't find the tcl/tk header files:

...
                 tkagg: no  [The C/C++ header for Tk (tk.h) could not be
                        found.  You may need to install the development
                        package.]
...

With the attached patch it does find the headers, but then it fails at
link time.

...
g++ -pthread -shared
-Wl,-rpath=/gnu/store/cxrqlhbr6xqgi08x3amd0lvl6m7sxx57-python-3.4.3/lib
build/temp.linux-x86_64-3.4/src/agg_py_transforms.o
build/temp.linux-x86_64-3.4/src/_tkagg.o
build/temp.linux-x86_64-3.4/extern/agg24/src/agg_bezier_arc.o
build/temp.linux-x86_64-3.4/extern/agg24/src/agg_curves.o
build/temp.linux-x86_64-3.4/extern/agg24/src/agg_image_filters.o
build/temp.linux-x86_64-3.4/extern/agg24/src/agg_trans_affine.o
build/temp.linux-x86_64-3.4/extern/agg24/src/agg_vcgen_contour.o
build/temp.linux-x86_64-3.4/extern/agg24/src/agg_vcgen_dash.o
build/temp.linux-x86_64-3.4/extern/agg24/src/agg_vcgen_stroke.o
build/temp.linux-x86_64-3.4/extern/agg24/src/agg_vpgen_segmentator.o
build/temp.linux-x86_64-3.4/extern/CXX/IndirectPythonInterface.o
build/temp.linux-x86_64-3.4/extern/CXX/cxxsupport.o
build/temp.linux-x86_64-3.4/extern/CXX/cxx_extensions.o
build/temp.linux-x86_64-3.4/extern/CXX/cxxextensions.o
-L/gnu/store/ipsq9hlk6k0w1qfiw0y0a03bxkp2clhl-tcl-8.6.4/lib
-L/gnu/store/my9wgryzpfvksng6k7h87xz9rphdwddw-tk-8.6.4/lib
-L/usr/local/lib -L/usr/local/lib
-L/gnu/store/cxrqlhbr6xqgi08x3amd0lvl6m7sxx57-python-3.4.3/lib -ltcl
-ltk -lstdc++ -lm -lpython3.4m -o
build/lib.linux-x86_64-3.4/matplotlib/backends/_tkagg.cpython-34m.so
ld: cannot find -ltcl
ld: cannot find -ltk
collect2: error: ld returned 1 exit status
error: command 'g++' failed with exit status 1
phase `build' failed after 94.8 seconds
...

Looking into the failed build directory, it seems that PKG_CONFIG_PATH
is set correctly. Still, it doesn't get the correct flags.

Regards,
Fede

[-- Attachment #2: mpl.patch --]
[-- Type: text/x-diff, Size: 1510 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 39d0751..4dfe557 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3190,6 +3190,7 @@ transcendental functions).")
      `(("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
@@ -3224,7 +3225,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)
@@ -3243,8 +3245,13 @@ 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)

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-11-30 16:47 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <8def219fd20047742c102943aaf6dea7@openmailbox.org>
2015-11-12 12:58 ` bug#20889: [PATCH] tk: Hardcode path to TK_LIBRARY Ludovic Courtès
     [not found] ` <87ziyjxtkp.fsf@gnu.org>
2015-11-13 11:55   ` 宋文武
2015-11-16  8:42   ` bug#20889: Tkinter moved to separate output Ludovic Courtès
2015-11-16 11:44     ` Federico Beffa
2015-11-16 12:57       ` Ludovic Courtès
2015-11-16 13:16         ` Federico Beffa
     [not found]         ` <CAKrPhPOXRTG10qVkEqAPmcLyPGteT_JwkbH+QFprGOcBT=6uQw@mail.gmail.com>
2015-11-29 22:09           ` Ludovic Courtès
     [not found]           ` <87two4e9v8.fsf@gnu.org>
2015-11-30 16:45             ` Federico Beffa

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).