Tcl Source Code

View Ticket
Login
Ticket UUID: 1068088
Title: unixInit-2.8 fails
Type: Bug Version: obsolete: 8.4.8
Submitter: dgp Created on: 2004-11-17 15:53:14
Subsystem: 38. Init - Library - Autoload Assigned To: das
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2004-11-19 13:35:24
Resolution: Fixed Closed By: das
    Closed on: 2004-11-19 06:34:24
Description:
Test unixInit-2.8 is now failing
on both active branches in
the macosx build.  I believe
this is a recent regression.
Any clue what we broke?
User Comments: das added on 2004-11-19 13:35:24:

File Added - 109317: 1068088-core-8-4-branch.diff

das added on 2004-11-19 13:34:24:

File Added - 109316: 1068088-HEAD.diff

Logged In: YES 
user_id=90580

as mentioned, this is not a new test failure, we've discussed it before, bug 
931061, this bug is a duplicate.

I'm suspicious of your patch because it does not deal with the fact that tcl 
might not have been built as a framework (HAVE_CFBUNDLE has nothing 
to do with that, it's only about the availibitly of the bundle API).
If we called Tcl_MacOSXOpenVersionedBundleResources 
unconditionally, this might then find the tcl library files in an unrelated 
Tcl.framework that we are not actually linked against.

The current technique is a kludge but the only side-effect I've seen so far 
is unixInit-2.8 failing, so it hadn't been high on my list of things to 
improve.
What was needed is a better way for tcl to determine that it 
has been built as a framework, the attached (and committed) patch uses 
an extra configure #define TCL_FRAMEWORK set when configured 
with --enable-framework, and removes the overloading of TCL_LIBRARY.

dgp added on 2004-11-18 20:58:05:
Logged In: YES 
user_id=80530

I just test Tcl 8.4.7 and my earlier
claims that this is a new failure were
mistaken.

While I'd still like to sort this out,
I'm dropping priority; I no longer
consider this an 8.4.8 release blocker.

dgp added on 2004-11-18 12:23:17:

File Added - 109177: 1068088.patch

Logged In: YES 
user_id=80530


Here's a patch that corrects the
problem for me.  Can someone
more knowledgable about "frameworks"
either approve it, or explain in short
words and big cartoon figures what
is wrong with it?  Thanks.

dgp added on 2004-11-18 04:10:18:
Logged In: YES 
user_id=80530


It appears that macosx Makefile
sets TCL_LIBRARY = @TCL_IN_FRAMEWORK@
and then the routine MacOSXGetLibraryPath
checks for that value as a signal that it
should call Tcl_MacOSXOpenVersionedBundleResources().

The MOGLP () routine definition, is already
protected by a HAVE_CFBUNDLE to control
at compile time whether it is called.  Isn't that
enough?  What is the use case where an
additional compile-time signal is needed?

dgp added on 2004-11-18 00:03:25:
Logged In: YES 
user_id=80530

Somehow the bogus value
@TCL_IN_FRAMEWORK@
is getting exposed to the test.

Is there some way we can
prevent that value from leaking
into the $tcl_libPath value or
the [tcl::pkgconfig get scriptdir,runtime]
value?

If not, we need to constrain this test
not to run in the Mac framework configuration.

Still not clear to me why this just
started failing recently.

Attachments: