Jon Peatfield wrote:
On Mon, 12 May 2008, Shane Voss wrote:
John Summerfield wrote:
<snip>
> Am I missing something?
> > Shane
>
This?
package require Tclx
Sorry John, I've either missed something else or you need to use more
words.
On my system, I have installed tclx using the above named RPM.
I can see that it has installed /usr/lib/tclx8.4/libtclx8.4.so but
when I then try to run an executable which has been built against it,
it fails to load because that file can't be found.
If I tweak my system or my environment I can make it work. My
question is shouldn't a well behaved RPM do that for me?
Code using the tclsh/wish interpretter should just need to ask for the
tclx to be loaded using the package require magic.
Recent versions of tclx are implemented as a tcl extension and the
loading of any shared libraries (as needed) happens when the tcl
interpretter pulls in the tclx package.
If a binary is explictly linked against libtclx (part of the
requirements for some embeded tcl/tclx stuff perhaps) then it almost
certainly wasn't compiled against *this* version of tcl/tclx - so all
bets are probably off and who can tell if it will work.
In earlier versions of sl (3,4 anyway) the tclx (8.3.x) package was
rather more complicated because it essentially was a complete additional
tcl system (and it provided the the /usr/bin/tcl, /usr/bin/wishx
commands etc). With sl5 the tcl is the newer 8.4 release so tclx no
longer needs to implement so much itself... Also note that many
features from tclx have migrated over to standard tcl over the years so
the code might not actually need tclx any more.
See http://wiki.tcl.tk/207 for a bit more info about tclx history.
What binaries do you have that explicitly link against libtclx? Where
were they built? What does ldd show them as requesting? Maybe the app
just needs rebuilding, or if it dates from before tcl-8.4 it might need
a bit more work first.
So why does the tclx rpm run ldconfig in %post etc? I don't know for
sure but just *maybe* that is to cope with an upgrade from the older
tclx which did put libtclx etc into %{_libdir} (/usr/lib{,64}/ as
appropriate).
Thanks very much Jon. You've sent me in the right direction I think.
I'm trying out Environment Modules ( http://modules.sourceforge.net/ ).
Following your comments, I will try using the pure Tcl (beta) version -
it looks a lot cleaner despite the beta tag.
I guess the TclX RPM may still be broken, but I'm less worried about it.
I think I even understand why nobody else has noticed!
Shane