#3379 fails to work correctly on solaris8

obsolete: 8.4.12
closed-invalid
Don Porter
None
5
2006-03-04
2006-03-03
acb
No

OS Platform and version:
sparc solaris 8

Problem Behavior:
invocations fails with:
application-specific initialization failed: Can't find
a usable init.tcl in the following directories:
/palab/apps/tcl/lib/tcl8.4 /palab/fa/lib/tcl8.4
/palab/apps/tcl/lib/tcl8.4 /palab/apps/tcltk/lib/tcl8.4
/palab/apps/lib/tcl8.4 /palab/apps/tcltk/library
/palab/apps/library /palab/apps/tcl8.4.11/library
/palab/tcl8.4.11/library /palab/fa/lib/tcl8.4

/palab/apps/tcltk/lib/tcl8.4/init.tcl: can't read
"::auto_path": no such variable
can't read "::auto_path": no such variable
while executing
"lsearch -exact $::auto_path $Dir"
("foreach" body line 2)
invoked from within
"foreach Dir [list [info library] [file dirname [info
library]]] {
if {[lsearch -exact $::auto_path $Dir] < 0} {
lappend ::auto_path $Dir
}..."
(in namespace eval "::tcl" script line 4)
invoked from within
"namespace eval tcl {
variable Dir
if {[info library] ne ""} {
foreach Dir [list [info library] [file dirname
[info library]]] {
if {[lse..."
(file "/palab/apps/tcltk/lib/tcl8.4/init.tcl" line 49)
invoked from within
"source /palab/apps/tcltk/lib/tcl8.4/init.tcl"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list source $tclfile]"

This probably means that Tcl wasn't installed properly.

Expected Behavior:
installed binary works without errors.

was built by
tar xfvz tcl8.4.12-src.tar.gz && cd tcl8.4.12/unix &&
./configure --prefix=/palab/apps/tcltk && make && make
install

There are no errors thru make or make install, but make
test fails with similar errors.

Discussion

  • Don Porter
    Don Porter
    2006-03-03

    Logged In: YES
    user_id=80530

    Very weird. looking...

     
  • Don Porter
    Don Porter
    2006-03-03

    • labels: --> 105676
    • assigned_to: nobody --> dgp
     
  • Don Porter
    Don Porter
    2006-03-03

    Logged In: YES
    user_id=80530

    The error appears to come
    from line 53 of the file
    /palab/apps/tcltk/lib/tcl8.4/init.tcl

    but I don't see how you
    can pass through lines 42-48
    without getting ::auto_path
    defined.

    Can you debug that, and report?

     
  • acb
    acb
    2006-03-03

    Logged In: YES
    user_id=14072

    It appears that the expression on line 42

    if {![info exists auto_path]} {

    evaluates to 0. Inserting the lines:

    set tmpvar [info exists auto_path]
    puts stderr "VALUE is: $tmpvar"

    just before line 42 results in this output:
    --------------------
    $ /palab/apps/tcltk/bin/tclsh8.4
    VALUE is: 0
    application-specific initialization failed: Can't find a
    usable init.tcl in the following directories:
    /palab/fa/lib/tcl8.4 /palab/apps/tcltk/lib/tcl8.4
    /palab/apps/lib/tcl8.4 /palab/apps/tcltk/library
    /palab/apps/library /palab/apps/tcl8.4.11/library
    /palab/tcl8.4.11/library /palab/fa/lib/tcl8.4

    /palab/apps/tcltk/lib/tcl8.4/init.tcl: can't read
    "::auto_path": no such variable
    can't read "::auto_path": no such variable
    while executing
    "lsearch -exact $::auto_path $Dir"
    ("foreach" body line 2)
    invoked from within
    "foreach Dir [list [info library] [file dirname [info
    library]]] {
    if {[lsearch -exact $::auto_path $Dir] < 0} {
    lappend ::auto_path $Dir
    }..."
    (in namespace eval "::tcl" script line 4)
    invoked from within
    "namespace eval tcl {
    variable Dir
    if {[info library] ne ""} {
    foreach Dir [list [info library] [file dirname [info
    library]]] {
    if {[lse..."
    (file "/palab/apps/tcltk/lib/tcl8.4/init.tcl" line 51)
    invoked from within
    "source /palab/apps/tcltk/lib/tcl8.4/init.tcl"
    ("uplevel" body line 1)
    invoked from within
    "uplevel #0 [list source $tclfile]"

    This probably means that Tcl wasn't installed properly.
    --------------------

     
  • Don Porter
    Don Porter
    2006-03-03

    Logged In: YES
    user_id=80530

    OK, I see something weird in your
    report. You claim to be building
    and testing Tcl 8.4.12 sources, but
    the error message reports that it
    is searching in paths like

    /palab/apps/tcl8.4.11/library

    It would only search in a path like
    that if the "libtcl" active in your
    program is that of version 8.4.11.

    It is possible (though I don't yet
    know how) that 8.4.11 libtcl might
    be incompatible with 8.4.12 init.tcl.

    That is, the error message appears
    to be correct when it says
    "This probably means that Tcl wasn't installed properly."

    It appears that you are installing
    the 8.4.12 version of libtcl as
    /palab/apps/tcltk/lib/libtcl8.4.so ?
    Is the runtime loader able to find
    that library when you run Tcl apps?

    When I run `make test` for Tcl 8.4.12,
    the first several lines of output are:

    LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}; export
    LD_LIBRARY_PATH; \ TCL_LIBRARY="/local/src/tcl8.4.12/library"; export
    TCL_LIBRARY; \ ./tcltest /local/src/tcl8.4.12/unix/../tests/all.tcl

    What lines do you see?

     
  • acb
    acb
    2006-03-03

    Logged In: YES
    user_id=14072

    Here's the output I get from make test:

    $ cd /home/a7056/.code/tcl8.4.12/unix && make test
    LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}; export
    LD_LIBRARY_PATH; \ TCL_LIBRARY="/home/a7056/.code/tcl8.4.12/library"; export
    TCL_LIBRARY; \ ./tcltest /home/a7056/.code/tcl8.4.12/unix/../tests/all.tcl
    application-specific initialization failed: Can't find a
    usable init.tcl in the following directories:
    /home/a7056/.code/tcl8.4.12/library
    /palab/apps/tcltk/lib/tcl8.4
    /home/a7056/.code/tcl8.4.12/library
    /home/a7056/.code/tcl8.4.12/tcl8.4
    /home/a7056/.code/tcl8.4.12/lib/tcl8.4
    /home/a7056/.code/lib/tcl8.4
    /home/a7056/.code/tcl8.4.12/library
    /home/a7056/.code/library
    /home/a7056/.code/tcl8.4.12/library
    /home/a7056/tcl8.4.12/library /palab/apps/tcltk/lib/tcl8.4

    /home/a7056/.code/tcl8.4.12/library/init.tcl: can't read
    "::auto_path": no such variable
    can't read "::auto_path": no such variable
    while executing
    "lsearch -exact $::auto_path $Dir"
    ("foreach" body line 2)
    invoked from within
    "foreach Dir [list [info library] [file dirname [info
    library]]] {
    if {[lsearch -exact $::auto_path $Dir] < 0} {
    lappend ::auto_path $Dir
    }..."
    (in namespace eval "::tcl" script line 4)
    invoked from within
    "namespace eval tcl {
    variable Dir
    if {[info library] ne ""} {
    foreach Dir [list [info library] [file dirname [info
    library]]] {
    if {[lse..."
    (file "/home/a7056/.code/tcl8.4.12/library/init.tcl"
    line 49)
    invoked from within
    "source /home/a7056/.code/tcl8.4.12/library/init.tcl"
    ("uplevel" body line 1)
    invoked from within
    "uplevel #0 [list source $tclfile]"
    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    This probably means that Tcl wasn't installed properly.

    invalid command name "tclPkgUnknown"
    while executing
    "tclPkgUnknown tcltest {}"
    ("package unknown" script)
    invoked from within
    "package require tcltest"
    invoked from within
    "set tcltestVersion [package require tcltest]"
    (file
    "/home/a7056/.code/tcl8.4.12/unix/../tests/all.tcl" line 15)
    make: *** [test] Error 1

    I had previously tried to install tcl8.4.11 on the system
    with similar results, but never took the time to report the
    bug...

     
  • Don Porter
    Don Porter
    2006-03-03

    Logged In: YES
    user_id=80530

    Thanks for the testing. The `make test`
    gives more useful info, so let's stick
    with that.

    At the beginning of file
    /home/a7056/.code/tcl8.4.12/library/init.tcl
    please add a line:

    puts "current namespace is [namespace current]"

    and report the new output from`make test`

     
  • acb
    acb
    2006-03-03

    Logged In: YES
    user_id=14072

    just noticed that replacing line 42 of
    /palab/apps/tcltk/lib/tcl8.4/init.tcl with

    if {[info exists auto_path]==0} {

    gets rid of the complaints about auto_path, but it still
    says it can't find a usable init.tcl:

    $/palab/apps/tcltk/bin/tclsh8.4
    application-specific initialization failed: Can't find a
    usable init.tcl in the following directories:
    /palab/apps/tcltk/lib/tcl8.4
    /palab/apps/tcltk/lib/tcl8.4 /palab/apps/lib/tcl8.4
    /palab/apps/tcltk/library /palab/apps/library
    /palab/apps/tcl8.4.12/library /palab/tcl8.4.12/library
    /palab/apps/tcltk/lib/tcl8.4

    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    This probably means that Tcl wasn't installed properly.

    Here's the output of make test with after your suggested change:
    $ make test
    LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}; export
    LD_LIBRARY_PATH; \ TCL_LIBRARY="/home/a7056/.code/tcl8.4.12/library"; export
    TCL_LIBRARY; \ ./tcltest /home/a7056/.code/tcl8.4.12/unix/../tests/all.tcl
    current namespace is ::
    current namespace is ::
    current namespace is ::
    current namespace is ::
    application-specific initialization failed: Can't find a
    usable init.tcl in the
    following directories:
    /home/a7056/.code/tcl8.4.12/library
    /palab/apps/tcltk/lib/tcl8.4 /home/a7056
    /.code/tcl8.4.12/library /home/a7056/.code/tcl8.4.12/tcl8.4
    /home/a7056/.code/tc
    l8.4.12/lib/tcl8.4 /home/a7056/.code/lib/tcl8.4
    /home/a7056/.code/tcl8.4.12/libr
    ary /home/a7056/.code/library
    /home/a7056/.code/tcl8.4.12/library /home/a7056/tc
    l8.4.12/library /palab/apps/tcltk/lib/tcl8.4

    /home/a7056/.code/tcl8.4.12/library/init.tcl: can't read
    "::auto_path": no such
    variable
    can't read "::auto_path": no such variable
    while executing
    "lsearch -exact $::auto_path $Dir"
    ("foreach" body line 2)
    invoked from within
    "foreach Dir [list [info library] [file dirname [info
    library]]] {
    if {[lsearch -exact $::auto_path $Dir] < 0} {
    lappend ::auto_path $Dir
    }..."
    (in namespace eval "::tcl" script line 4)
    invoked from within
    "namespace eval tcl {
    variable Dir
    if {[info library] ne ""} {
    foreach Dir [list [info library] [file dirname [info
    library]]] {
    if {[lse..."
    (file "/home/a7056/.code/tcl8.4.12/library/init.tcl"
    line 50)
    invoked from within
    "source /home/a7056/.code/tcl8.4.12/library/init.tcl"
    ("uplevel" body line 1)
    invoked from within
    "uplevel #0 [list source $tclfile]"
    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    This probably means that Tcl wasn't installed properly.
    invalid command name "tclPkgUnknown"
    while executing
    "tclPkgUnknown tcltest {}"
    ("package unknown" script)
    invoked from within
    "package require tcltest"
    invoked from within
    "set tcltestVersion [package require tcltest]"
    (file
    "/home/a7056/.code/tcl8.4.12/unix/../tests/all.tcl" line 15)
    make: *** [test] Error 1

    Thanks for the quick debugging work!

     
  • Don Porter
    Don Porter
    2006-03-03

    Logged In: YES
    user_id=80530

    ok, something is deeply, deeply
    wrong here, and we need to figure
    it out, and only you seem to
    reproduce it.

    thanks for helping with the
    debugging, but please let's
    stay on one track at a time.

    Please change the "auto_path"
    variables on lines 42, 44, 46
    to "::auto_path" and report
    the results of `make test`.

     
  • acb
    acb
    2006-03-03

    Logged In: YES
    user_id=14072

    after this change, the result of make test is identical to
    what it was before:

    $ make test
    LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}; export
    LD_LIBRARY_PATH; \ TCL_LIBRARY="/home/a7056/.code/tcl8.4.12/library"; export
    TCL_LIBRARY; \ ./tcltest /home/a7056/.code/tcl8.4.12/unix/../tests/all.tcl
    current namespace is ::
    current namespace is ::
    current namespace is ::
    current namespace is ::
    application-specific initialization failed: Can't find a
    usable init.tcl in the following directories:
    /home/a7056/.code/tcl8.4.12/library
    /palab/apps/tcltk/lib/tcl8.4
    /home/a7056/.code/tcl8.4.12/library
    /home/a7056/.code/tcl8.4.12/tcl8.4
    /home/a7056/.code/tcl8.4.12/lib/tcl8.4
    /home/a7056/.code/lib/tcl8.4
    /home/a7056/.code/tcl8.4.12/library
    /home/a7056/.code/library
    /home/a7056/.code/tcl8.4.12/library
    /home/a7056/tcl8.4.12/library /palab/apps/tcltk/lib/tcl8.4

    /home/a7056/.code/tcl8.4.12/library/init.tcl: can't read
    "::auto_path": no such variable
    can't read "::auto_path": no such variable
    while executing
    "lsearch -exact $::auto_path $Dir"
    ("foreach" body line 2)
    invoked from within
    "foreach Dir [list [info library] [file dirname [info
    library]]] {
    if {[lsearch -exact $::auto_path $Dir] < 0} {
    lappend ::auto_path $Dir
    }..."
    (in namespace eval "::tcl" script line 4)
    invoked from within
    "namespace eval tcl {
    variable Dir
    if {[info library] ne ""} {
    foreach Dir [list [info library] [file dirname [info
    library]]] {
    if {[lse..."
    (file "/home/a7056/.code/tcl8.4.12/library/init.tcl"
    line 50)
    invoked from within
    "source /home/a7056/.code/tcl8.4.12/library/init.tcl"
    ("uplevel" body line 1)
    invoked from within
    "uplevel #0 [list source $tclfile]"
    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /home/a7056/.code/tcl8.4.12/library/init.tcl:

    /palab/apps/tcltk/lib/tcl8.4/init.tcl:

    This probably means that Tcl wasn't installed properly.

    invalid command name "tclPkgUnknown"
    while executing
    "tclPkgUnknown tcltest {}"
    ("package unknown" script)
    invoked from within
    "package require tcltest"
    invoked from within
    "set tcltestVersion [package require tcltest]"
    (file
    "/home/a7056/.code/tcl8.4.12/unix/../tests/all.tcl" line 15)
    make: *** [test] Error 1

     
  • Don Porter
    Don Porter
    2006-03-03

    Logged In: YES
    user_id=80530

    hmmm... ringing a little bit
    of a bell now.

    What compiler is in use?

     
  • acb
    acb
    2006-03-04

    Logged In: YES
    user_id=14072

    compiler that was used was egcs-2.91.66

    ...looks like that was the problem. I just tried with
    gcc3.3.1, and everything seems to install and work correctly
    now.

    Thanks!

     
  • Don Porter
    Don Porter
    2006-03-04

    • labels: 105676 -->
    • status: open --> closed-invalid