Tk Source Code

View Ticket
Login
Ticket UUID: 1597242
Title: TCL_PATCHLEVEL not set in Makefile.vc
Type: Bug Version: None
Submitter: mpc_janssen Created on: 2006-11-15 19:45:42
Subsystem: 85. Win Build Assigned To: patthoyts
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2007-11-01 18:20:10
Resolution: Fixed Closed By: patthoyts
    Closed on: 2007-11-01 11:20:10
Description:
When using Makefile.vc to build Tk, package require Tk fails in a tclsh. I have built Tcl 8.5a6 and Tk 8.5a6 thus:

Build Tcl

nmake -f Makefile.vc OPTS=threads INSTALLDIR=c:\tcl
nmake -f Makefile.vc OPTS=threads INSTALLDIR=c:\tcl install

build Tk
nmake -f Makefile.vc OPTS=threads INSTALLDIR=c:\tcl TCLDIR=..\..\tcl
nmake -f Makefile.vc OPTS=threads INSTALLDIR=c:\tcl TCLDIR=..\..\tcl install

tclsh85t

% package require Tk
can't find package Tk
%

After building like this the generated pkgIndex.tcl contains no patchlevel because of the undefined TCL_PATCHLEVEL in the Makefile.vc:

if {![package vsatisfies [package provide Tcl] 8.5]} { return }
if {[package vcompare [package provide Tcl] 8.5] != 0} { return }
package ifneeded Tk 8.5 [list load [file join $dir .. .. bin tk85t.dll] Tk]

Everything loads correctly if TCL_PATCHLEVEL is set to a6 when building Tk. This results in the following pkgIndex.tcl

if {![package vsatisfies [package provide Tcl] 8.5]} { return }
if {[package vcompare [package provide Tcl] 8.5a6] != 0} { return }
package ifneeded Tk 8.5a6 [list load [file join $dir .. .. bin tk85t.dll] Tk]

After which, Tk loads succesfully from tclsh:

> tclsh85t
% package require Tk
8.5a6
%
User Comments: patthoyts added on 2007-11-01 18:20:10:
Logged In: YES 
user_id=202636
Originator: NO

Yes - fixed for 8.5b2

dgp added on 2007-11-01 00:40:35:
Logged In: YES 
user_id=80530
Originator: NO


Did this recently get fixed?

mistachkin added on 2007-01-22 17:10:57:
Logged In: YES 
user_id=113501
Originator: NO


I just hit this bug as well.  Maybe we can modify nmakehlp to dynamically get this value?  Failing that, we should just put back the constant value so that the build works.