Opened 11 years ago

Last modified 6 years ago

#40203 closed update

use FreeBSD patch-use-tkInt approach to fix tcltk 8.6 support — at Version 8

Reported by: howarth@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version:
Keywords: haspatch Cc: mojca@…, egall@…
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.

Change History (10)

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 11 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.

Note: See TracTickets for help on using tickets.