Tcl Source Code

View Ticket
Login
Ticket UUID: 07eb49661ae9a183957cf732bbe5a544fed034c2
Title: Change to genStubs.tcl between 8.6 and 8.7 breaks packages for macOS.
Type: Bug Version:
Submitter: marc_culler Created on: 2020-08-29 20:13:57
Subsystem: - New Stub Entries Assigned To: jan.nijtmans
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2020-09-16 15:43:39
Resolution: Fixed Closed By: jan.nijtmans
    Closed on: 2020-09-16 15:43:39
Description:
An example of a package which breaks for 8.7 is tkTable.

In tkInt.decls the X stubs are marked with platform macosx.  In 8.6 the
macosx platform is guarded with the line:
#ifdef MAC_OSX_TK /* AQUA */

For 8.7 the genStubs.tcl script was changed, so that the macosx platform
is instead guarded by the line:
#ifdef MAC_OSX_TCL /* MACOSX */

Packages such as tkTable written for 8.6 define MAC_OSX_TK when USE_STUBS
is defined.  But they do not define MAC_OSX_TCL.  Consequently when
building such a package there is a linker error reporting a missing symbol
for each X stub that the package uses.

There is a simple fix, which was not so simple to diagnose, however. That is
to reclassify the X stubs for macOS as aqua instead of macosx.  I will
commit a bug-fix branch containing this change.
User Comments: jan.nijtmans added on 2020-08-29 20:36:43:

Fix committed to trunk now. I'll explain later.


jan.nijtmans added on 2020-08-29 20:25:14:

Well, there was a reason for this change, therefore I propose a different solution in Tk only.


marc_culler (claiming to be Marc Culler) added on 2020-08-29 20:21:46:
Note: This ticket was submitted to Tcl since the change that led to the
problem was in Tcl.  But the fix is actually in Tk.  So this could be
regarded as a Tk bug.  The Tk changes which should have accompanied the
Tcl changes were not made.