New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #26387 (closed defect: fixed)

Opened 5 years ago

Last modified 4 years ago

xorg-xcb-proto/python dependency loop via tk/libX11

Reported by: spyro@… Owned by: mcalhoun@…
Priority: High Milestone:
Component: ports Version: 1.9.1
Keywords: Cc: jeremyhu@…, tracey@…, raimue@…, dports@…, olivier.serve@…
Port: xorg-xcb-proto python26

Description

This ticket is a followup to Ticket #26381

While that ticket is now fixed, a dependency loop still remains between python and xorg-xcb-proto. The attached patch resolves this issue.

Attachments

Portfile-xorg-xcb-proto.diff (891 bytes) - added by spyro@… 5 years ago.

Change History

Changed 5 years ago by spyro@…

comment:1 Changed 5 years ago by jeremyhu@…

  • Owner changed from macports-tickets@… to blb@…
  • Keywords haspatch removed
  • Port changed from xorg-xcb-proto to python
  • Cc mcalhoun@… added

We can't really do that because xorg-xcb-proto builds python modules.

comment:2 Changed 5 years ago by jeremyhu@…

Why does python need tk?

comment:3 Changed 5 years ago by spyro@…

Unfortunately, tk is one of the core parts of python: http://docs.python.org/library/tk.html

It is python's included gui framework. I suppose one could just use port install python26 +no_tkinter, but this would not really be a full python installation (it breaks IDLE, the dev environment included with python).

Couldn't xorg-xcb-proto use the system python like xorg-libxcb did?

comment:4 Changed 5 years ago by jeremyhu@…

No. It's not just used to build. xorg-xcb-proto installs python modules.

comment:5 follow-up: ↓ 10 Changed 5 years ago by spyro@…

So in that case, the patch that I created probably messed up my xorg-xcb-proto install?

I suppose that the best thing to do would be:

  1. To use port install python26 +no_tkinter
  2. Then install xorg-xcb-proto normally
  3. Then reinstall python without +no_tkinter

I wonder if there is any way to streamline this process or atleast to make it more obvious?

Thank you for your help!

comment:6 Changed 5 years ago by blb@…

  • Owner changed from blb@… to mcalhoun@…
  • Cc mcalhoun@… removed

comment:7 Changed 5 years ago by tracey@…

  • Cc tracey@… added

Cc Me!

comment:8 Changed 5 years ago by jmr@…

Dodgy workaround applied in r71286, since this is an "everything is broken!" situation from a new user's perpective.

So, taking into account that tkinter is considered a core python module, and our tk port must depend on X11 on 64-bit platforms because the aqua variant uses Carbon, what are we going to do about this?

comment:9 Changed 5 years ago by jmr@…

  • Port changed from python to xorg-xcb-proto python26

comment:10 in reply to: ↑ 5 Changed 5 years ago by jzwolak@…

Replying to spyro@…:

So in that case, the patch that I created probably messed up my xorg-xcb-proto install?

I suppose that the best thing to do would be:

  1. To use port install python26 +no_tkinter
  2. Then install xorg-xcb-proto normally
  3. Then reinstall python without +no_tkinter

I wonder if there is any way to streamline this process or atleast to make it more obvious?

Thank you for your help!

Here are the exact commands that worked for me:

sudo port install python26 +no_tkinter
sudo port -f activate python26
sudo port install xorg-xcb-proto
sudo port clean python26
sudo port install python26

And then I can install ImageMagick, xorg, or whatever. Note that the second command may not be necessary on your system, it was necessary on mine because I had some files lying around from a previous Python installation attempt.

comment:12 follow-up: ↓ 13 Changed 5 years ago by dluke@…

IIRC the python sub-ports were pulled back into the python main port because python -S won't load modules. Is tkinter something that needs to be run in that situation? My initial thought would be to just pull tkinter out into its own port (like we used to do with all of the python modules). If having it installed as a module doesn't brake IDLE, it might be the best (bad) fix.

comment:13 in reply to: ↑ 12 ; follow-up: ↓ 15 Changed 5 years ago by raimue@…

  • Cc raimue@… added

Replying to dluke@…: Actually that would be what I suggested in April 2009 already ;-)

Another solution would be to move the python module xcbgen to its own port?

comment:14 Changed 5 years ago by jeremyhu@…

Moving xcbgen to its own port won't help because we'll still need to depend on it in xorg-libxcb

comment:15 in reply to: ↑ 13 Changed 5 years ago by dluke@…

Replying to raimue@…:

Replying to dluke@…: Actually that would be what I suggested in April 2009 already ;-)

Yep :)

Unless someone else comes up with an alternate solution, I think we need to go this route.

comment:16 Changed 5 years ago by dports@…

  • Cc dports@… added

Cc Me!

comment:17 Changed 4 years ago by olivier.serve@…

  • Cc olivier.serve@… added

Cc Me!

comment:17 Changed 4 years ago by dluke@…

... any reason not to create py26-tkinter (based off of py24-tkinter) and move the +no_tkinter stuff into the main python26 port? (this has been broken for a while now).

comment:18 Changed 4 years ago by jmr@…

Nope. Please do.

comment:19 Changed 4 years ago by dluke@…

py26-tkinter added in r74547

comment:20 Changed 4 years ago by dluke@…

  • Status changed from new to closed
  • Resolution set to fixed

+no_tkinter incorporated into the main python26 port in r74548 (without a revbump)

Note: See TracTickets for help on using tickets.