Subject: Re: Tkinter moved to separate output

From: [email-masked] (Ludovic Courtès)
Date: Mon, 16 Nov 2015 13:57:37 +0100

Federico Beffa <[email-masked]> skribis:

> On Mon, Nov 16, 2015 at 9:42 AM, Ludovic Courtès <[email-masked]> 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’.