anidot does not work on a mac, unless development tools are installed (needs /usr/lib/libltdl.3.dylib)
|Status:||New||Start date:||20 Aug 2009|
when JTorX is started on a mac on which no development tools are installed,
anidot windows appear, but on stdout/stderr of JTorX
(only visible when JTorX is started from a terminal window)
the following appears:
anidotsrv : could not require package Tcldot: dlopen(libtcldot_builtin.dylib, 6): Library not loaded: /usr/lib/libltdl.3.dylib
Referenced from: /private/var/folders/[some path elided]/-Tmp-/tcldotlib/libtcldot_builtin.dylib
Reason: image not found
when an attempt is made to make anidot show an automaton, as JTorX typically does,
an error popup window appears:
Error: invalid command name "dotnew"
work around: make sure that development tools are installed.
alternative workaround: only install /usr/lib/libltdl.3.dylib
either in the given path, or in another default location where
dlopen looks, like $(HOME)/lib.
see the description of DYLD_FALLBACK_LIBRARY_PATH
in manual page dlopen(3)
in the code of anidot we can almost fix this.
we can just distribute libltdl.3.dylib next to libtcldot_builtin.dylib
however, we then still have to make sure that it is found.
this is a bit tricky when we use anidot.kit, because we copy the
library .dylib files out of the .kit archive to a temporary location
we then cd to that location,
load the .dylib
and return to the original location.
it will find the tcldot dylib, but not the libltdl one that is referenced from it.
However, if DYLD_LIBRARY_PATH contains .
then it will find the libltdl also -- this is nice, because we only decide
on the temporary location when we run the lib/tcldot/pkgIndex.tcl script.
now there is one ugly problem remaining:
setting DYLD_LIBRARY_PATH from a script that is run by tclkit
does not seem to affect the dlopen that is executed by that tclkit.
i.e. we can not change the lookup paths from within the scripts.
To work around that, we either have to set DYLD_LIBRARY_PATH
in a wrapper around "tclkit anidot.kit", or we could set the
DYLD_LIBRARY_PATH in a tcl script, and then exec a fresh instance
of tclkit to do the actual work.
The latter approach is appealing (hide issues from end-user) but nasty.
#1 Updated by Axel Belinfante almost 11 years ago
- File libltdl.3.dylib added
attached libltdl.3.dylib to allow copying it to directory $HOME/lib as workaround.
Once it has been copied there and any running anidot has been closed,
any new anidot instance that is started (e.g. by JTorX) will work as intended.