New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #31995 (closed enhancement: fixed)

Opened 19 months ago

Last modified 9 months ago

tcl: enable CoreFoundation

Reported by: marshall.perrin@… Owned by: mww@…
Priority: Normal Milestone:
Component: ports Version: 2.0.3
Keywords: Cc:
Port: tcl

Description (last modified by ryandesign@…) (diff)

This patch adds a new variant +corefoundation to tcl, which enables building with CoreFoundation support. This is related to the outstanding ticket #22954, which has a patch file to enable CoreFoundation but not as a variant. That solution was never merged into the tcl port, which means that the problem described in #22954 reoccurs with every update to the tcl port (e.g. I just had to re-patch the portfile for the Nth time due to the upgrade to 8.5.11 today).

Creating a variant for corefoundation will fix this problem once and for all.

Attachments

tcl.corefoundation.patch (432 bytes) - added by marshall.perrin@… 19 months ago.

Change History

Changed 19 months ago by marshall.perrin@…

comment:1 Changed 19 months ago by ryandesign@…

  • Owner changed from macports-tickets@… to mww@…
  • Description modified (diff)

Why is making a variant better than doing it all the time, as shown in the patch in #22954?

comment:2 Changed 19 months ago by marshall.perrin@…

Good question! I only assumed there must be some reason not to do it all the time, because otherwise why had the patch in #22954 from almost two years ago never been applied onto the official portfile? Someone went to the trouble of explicitly adding --disable-corefoundation to the tcl portfile back in the past and I don't want to second guess other folks' use cases.

But certainly from my own perspective I'd say enable it all the time, yes.

comment:3 Changed 11 months ago by jmr@…

CF was disabled because of #21968.

comment:4 Changed 11 months ago by jmr@…

  • Status changed from new to closed
  • Resolution set to fixed
  • Summary changed from tcl: add new variant +corefoundation to tcl: enable CoreFoundation

comment:5 Changed 10 months ago by howarth@…

This change may have caused http://trac.macports.org/ticket/35400 on Mountain Lion.

comment:6 Changed 10 months ago by howarth@…

  • Status changed from closed to reopened
  • Resolution fixed deleted

It was a mistake to default tcl to --enable-corefoundation as CoreFoundation is incompatible with code using fork() without immediately calling exec().

See...
http://boredzo.org/blog/archives/2010-09-04/singleton-repository#comment-332147
http://objectivistc.tumblr.com/post/16187948939/you-must-exec-a-core-foundation-fork-safety-tale
http://old.nabble.com/Fork-vs.-exec-in-RC-5-of-Tk-8.5-td14390131.html

Since both --enable-threads and --enable-corefoundation are incompatible with fork(), it makes much more
sense to just move --enable-corefoundation into the threads variant instead.

comment:7 Changed 9 months ago by howarth@…

As posted in reply to complaints about the unfixed breakage from this supposed fix to the pymol package
http://trac.macports.org/ticket/35400[[BR]]

The tcl maintainers have broken pymol (actually most likely the required blt package) by their ill-considered removal of
--disable-corefoundation. As I have explained numerous times, the Core Foundation support in tcl is likely providing some level
of thread support which is incompatible with tcl programs that use fork() without exec(). The sensible fix is already attached to
this bug report as well as http://trac.macports.org/ticket/31995 where the removal of --disable-corefoundation. is moved to
the threads variant of tcl. Unfortunately the macports tcl maintainers seem entirely disinterested in fixing this breakage.

comment:8 Changed 9 months ago by mww@…

  • Status changed from reopened to closed
  • Resolution set to fixed
Note: See TracTickets for help on using tickets.