Opened 9 years ago

Closed 9 years ago

#31995 closed enhancement (fixed)

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 (Ryan Schmidt))

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 (1)

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

Download all attachments as: .zip

Change History (9)

Changed 9 years ago by marshall.perrin@…

Attachment: tcl.corefoundation.patch added

comment:1 Changed 9 years ago by ryandesign (Ryan Schmidt)

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

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

comment:2 Changed 9 years 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 9 years ago by jmroot (Joshua Root)

CF was disabled because of #21968.

comment:4 Changed 9 years ago by jmroot (Joshua Root)

Resolution: fixed
Status: newclosed
Summary: tcl: add new variant +corefoundationtcl: enable CoreFoundation

comment:5 Changed 9 years ago by howarth@…

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

comment:6 Changed 9 years ago by howarth@…

Resolution: fixed
Status: closedreopened

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 years 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 years ago by mww@…

Resolution: fixed
Status: reopenedclosed
Note: See TracTickets for help on using tickets.