Opened 11 years ago

Closed 5 years ago

#40203 closed update (fixed)

use FreeBSD patch-use-tkInt approach to fix tcltk 8.6 support

Reported by: howarth@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version:
Keywords: haspatch Cc: mojca (Mojca Miklavec), cooljeanius (Eric Gallager), chrstphrchvz (Christopher Chavez), MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Port: blt

Description (last modified by mf2k (Frank Schima))

Currently the blt in MacPort segfaults when used by the apbstool plugin of pymol.
This is fixed by using the http://svnweb.freebsd.org/ports/head/x11-toolkits/blt/files/patch-use-tkInt?revision=300897
patch with the addition of the required tcl/tk internal headers from tcl/tk 8.6.0.
The attached Portfile.diff and patch-tcltk86_internals implements this change and
eliminates the segfaults when clicking the "Choose Externally Generated PQR" button
in pymol's APBS Tools plugin window when blt is installed.

Note the submitted pymol update from ticket:38516#comment:2 needs to be used
to provide additional fixes for the apbstools plugin to run under tcl/tk 8.6.0.

Attachments (2)

Portfile.diff (652 bytes) - added by howarth@… 11 years ago.
Portfile diff to use patch-tcltk86_internals patch
patch-tcltk86_internals (344.0 KB) - added by howarth@… 11 years ago.
patch-tcltk86_internals to address multiple changes in internal tcl/tk calls that blt uses

Download all attachments as: .zip

Change History (14)

Changed 11 years ago by howarth@…

Attachment: Portfile.diff added

Portfile diff to use patch-tcltk86_internals patch

Changed 11 years ago by howarth@…

Attachment: patch-tcltk86_internals added

patch-tcltk86_internals to address multiple changes in internal tcl/tk calls that blt uses

comment:1 Changed 11 years ago by mf2k (Frank Schima)

Keywords: haspatch added; x11 removed
Owner: changed from macports-tickets@… to markd@…
Version: 2.2.0

In the future, please Cc the port maintainers (port info --maintainers blt).

comment:2 Changed 11 years ago by howarth@…

Note that the patch has to bundle the private tk headers since MacPorts doesn't install the private headers. On FreeBSD and fink, we do install the private tcl/tk headers so that those are used instead. FYI.

comment:3 Changed 11 years ago by mojca (Mojca Miklavec)

Cc: mojca@… added

Cc Me!

comment:4 in reply to:  2 Changed 11 years ago by cooljeanius (Eric Gallager)

Replying to howarth@…:

Note that the patch has to bundle the private tk headers since MacPorts doesn't install the private headers. On FreeBSD and fink, we do install the private tcl/tk headers so that those are used instead. FYI.

Homebrew also installs the private tcl/tk headers. See also the ticket I opened about this (#39431) and the ticket that it was closed as a duplicate of (#17189) for more on installing the private tcl/tk headers.

comment:5 Changed 11 years ago by cooljeanius (Eric Gallager)

Cc: egall@… added

Cc Me!

comment:6 Changed 11 years ago by cooljeanius (Eric Gallager)

Also my copy of the proposed port for tcl84 would also install the private headers (for its version): see #34826 and https://github.com/cooljeanius/LocalPorts/blob/master/lang/tcl84/Portfile#L43

comment:7 Changed 11 years ago by howarth@…

Both fink and fedora use a different approach which in fink looks like...

        for pkg in tcl tk; do
                mkdir -p %i/include/tcltk-private/${pkg}${MAJORVER}/{generic,unix}
                cp ${pkg}%v/generic/*.h %i/include/tcltk-private/${pkg}${MAJORVER}/generic
                cp ${pkg}%v/unix/*.h    %i/include/tcltk-private/${pkg}${MAJORVER}/unix

                pushd %i/include
                        for hdr in *.h ; do
                                if [ -f tcltk-private/${pkg}${MAJORVER}/generic/${hdr} ]; then
                                        ln -sf ../../../${hdr} tcltk-private/${pkg}${MAJORVER}/generic
                                fi
                        done
                popd

                perl -pi -e "s,%b/${pkg}%v/unix,%p/lib,; s,%b,%p/include/tcltk-private,; s,/${pkg}%v,/${pkg}${MAJORVER},g" %i/lib/${pkg}Config.sh
        done

Note that only the generic headers get symlinked outside of the private header subdirectory

Last edited 10 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:8 Changed 10 years ago by mf2k (Frank Schima)

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

markd has retired. See #44782.

comment:9 Changed 5 years ago by chrstphrchvz (Christopher Chavez)

Cc: chrstphrchvz added

comment:10 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Cc: MarcusCalhoun-Lopez added

comment:11 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

In 609fbf58946ddea1f0c1ae959931cdc7502e97bb/macports-ports (master):

tk: install private header file

Installing these header files seems to be a common practice.
See #40203.

comment:12 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Resolution: fixed
Status: newclosed

In 99a69e509ed7c5eab314fc77e5a37d1ce19f6367/macports-ports (master):

blt: update version 2.4z->2.5.3

For an explanation of this versioning scheme, see
#15095#comment:17.

Fixes #15095
Fixes #40203

Note: See TracTickets for help on using tickets.