* 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).