Gustaf Neumann wrote:
On Friday 17 September 2004 19:19, Catherine Letondal wrote:
Dear members of xotcl the list,
Has someone any experience in installing XOtcl on MacOsX ? I have found a "Portfile" but I don't know what to do with it?
Catherine,
isn't the Mac OS X Tcl/Tk Aqua 8.4.7 Release something for you to use, it contains XOTcl binaries.....
http://groups.google.at/groups?q=xotcl&hl=de&lr=&ie=UTF -8&scoring=d&selm=pgpmoose.200408041618.26617%40despot.non.net&rnum=8
Thanks for the advice!
I have indeed installed the TclTkAquaBI and tried but it'svery complicated. I don't know whether you can help ?
1) I need to build my own wish with shared objects (libtcl.dylib etc...) which are not provided in TclTkAquaBI distribution - even using it together with the native Tcl.framework you don't have the *.h files etc...). So I decided to use the Fink tcl/tk distribution which works fine.
2) Using the TclTkAquaBI (the one which includes xotcl-1.2) is also not easy when you want to link an xotcl shared object (called /Library/Tcl/xotcl1.2/libxotcl1.2.dylib) First, because you need xotcl.h, so you have to download separately the sources that have been used for building the shared library (sources are kindly distributed from http://tcltkaqua.sourceforge.net/8.4.7.html). Even using libxotcl.dylib file distributed in TclAquaBI not not make sense for a simple reason: if I need another package (such as BLT), which is not distributed in TclAquaBI, I will also have to compile it myself, which is very difficult when it is not configured for this purpose (blt is also distributed in Fink).
3) So, sy conclusion was to compile Xotcl myself, which I did, I think, successfully. configure; ./configure --with-tcl=/sw/lib --with-tclinclude=/sw/include --with-tk=/sw/lib --with-tkinclude=/sw/include
I just got errors when building xowish:
gcc -pipe -rdynamic -o xowish tkAppInit.o \ xotcl.o xotclError.o xotclMetaData.o xotclObjectData.o xotclProfile.o xotclTrace.o xotclUtil.o xotclShadow.o xotclCompile.o aolstub.o xotclStubInit.o \ -O3 -Wall -Wconversion -Wno-implicit-int -fno-common -L/sw/lib -ltcl8.4 \
gcc: unrecognized option `-rdynamic' ld: Undefined symbols: _Tk_Init _Tk_MainEx _Tk_SafeInit
Apparently also: ==> -ltk8.4 is missing ?
But xotclsh was successfully built.
4) then, I built a very simple tkAppinit.c:
#include "tk.h" #include <xotcl.h> int main(argc, argv) int argc; /* Number of command-line arguments. */ char **argv; /* Values of command-line arguments. */ { Tk_Main(argc, argv, Tcl_AppInit); return 0; /* Needed only to prevent compiler warning. */ }
int Tcl_AppInit(interp) Tcl_Interp *interp; /* Interpreter for application. */ { if (Tcl_Init(interp) == TCL_ERROR) { return TCL_ERROR; } if (Tk_Init(interp) == TCL_ERROR) { return TCL_ERROR; } Tcl_StaticPackage(interp, "Tk", Tk_Init, Tk_SafeInit); if (Xotcl_Init(interp) == TCL_ERROR) { return TCL_ERROR; }
Tcl_Import(interp, Tcl_GetGlobalNamespace(interp), "xotcl::*", 1); if (Tcl_PkgRequire(interp, "XOTcl", XOTCLVERSION, 1) == NULL) { return TCL_ERROR; }
return TCL_OK; }
I got an executable (miniwish) built with the following compile/link commands (with some warnings):
gcc -fno-common -DXOTCLVERSION="1.3.1" -c -I/sw/include -I/sw/include -I/usr/include/X11 -I/sw/include tkAppInit.c gcc -bind_at_load -o minibiokwish tkAppInit.o -L/sw/lib -ltk8.4 -L/sw/lib -ltcl8.4 -L/usr/X11R6/lib -lX11 -lXmu -L/sw/lib/xotcl1.3.1 -lxotcl1.3.1 -lm ld: warning multiple definitions of symbol _tclPlatStubsPtr /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _tclPlatStubsPtr /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _tclPlatStubsPtr ld: warning multiple definitions of symbol _tclIntStubsPtr /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _tclIntStubsPtr /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _tclIntStubsPtr ld: warning multiple definitions of symbol _Tcl_InitStubs /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _Tcl_InitStubs /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _Tcl_InitStubs ld: warning multiple definitions of symbol _tclIntPlatStubsPtr /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _tclIntPlatStubsPtr /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _tclIntPlatStubsPtr ld: warning multiple definitions of symbol _tclStubsPtr /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _tclStubsPtr /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _tclStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _tclPlatStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _tclIntStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _tclStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _tclIntPlatStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _Tcl_InitStubs
But this executable does not work correctly:
./minibiokwish dyld: ./minibiokwish can't open library: libxotcl1.3.1.dylib (No such file or directory, errno = 2) Trace/BPT trap
(executed from an X11 environment - not Aqua - of course).
-- Catherine Letondal -- Pasteur Institute Computing Center
Hi Catherine,
on Unix we have moved the build system as default to the style preferred by TEA: the shells are not built anymore by default. Instead it is advisable to load XOTcl dynamically into the ordinary tclsh or wish. I propose you simply use this style of using XOTcl as well:
% wish
package require XOTcl namespace import xotcl::*
the shells, if build (what is optional) now do nothing else than this.
Uwe
Catherine Letondal wrote:
Gustaf Neumann wrote:
On Friday 17 September 2004 19:19, Catherine Letondal wrote:
Dear members of xotcl the list,
Has someone any experience in installing XOtcl on MacOsX ? I have found a "Portfile" but I don't know what to do with it?
Catherine,
isn't the Mac OS X Tcl/Tk Aqua 8.4.7 Release something for you to use, it contains XOTcl binaries.....
http://groups.google.at/groups?q=xotcl&hl=de&lr=&ie=UTF -8&scoring=d&selm=pgpmoose.200408041618.26617%40despot.non.net&rnum=8
Thanks for the advice!
I have indeed installed the TclTkAquaBI and tried but it'svery complicated. I don't know whether you can help ?
- I need to build my own wish with shared objects (libtcl.dylib
etc...) which are not provided in TclTkAquaBI distribution - even using it together with the native Tcl.framework you don't have the *.h files etc...). So I decided to use the Fink tcl/tk distribution which works fine.
- Using the TclTkAquaBI (the one which includes xotcl-1.2) is also
not easy when you want to link an xotcl shared object (called /Library/Tcl/xotcl1.2/libxotcl1.2.dylib) First, because you need xotcl.h, so you have to download separately the sources that have been used for building the shared library (sources are kindly distributed from http://tcltkaqua.sourceforge.net/8.4.7.html). Even using libxotcl.dylib file distributed in TclAquaBI not not make sense for a simple reason: if I need another package (such as BLT), which is not distributed in TclAquaBI, I will also have to compile it myself, which is very difficult when it is not configured for this purpose (blt is also distributed in Fink).
- So, sy conclusion was to compile Xotcl myself, which I did, I
think, successfully. configure; ./configure --with-tcl=/sw/lib --with-tclinclude=/sw/include --with-tk=/sw/lib --with-tkinclude=/sw/include
I just got errors when building xowish:
gcc -pipe -rdynamic -o xowish tkAppInit.o \ xotcl.o xotclError.o xotclMetaData.o xotclObjectData.o xotclProfile.o xotclTrace.o xotclUtil.o xotclShadow.o xotclCompile.o aolstub.o xotclStubInit.o \ -O3 -Wall -Wconversion -Wno-implicit-int -fno-common -L/sw/lib -ltcl8.4 \
gcc: unrecognized option `-rdynamic' ld: Undefined symbols: _Tk_Init _Tk_MainEx _Tk_SafeInit
Apparently also: ==> -ltk8.4 is missing ?
But xotclsh was successfully built.
- then, I built a very simple tkAppinit.c:
#include "tk.h" #include <xotcl.h> int main(argc, argv) int argc; /* Number of command-line arguments. */ char **argv; /* Values of command-line arguments. */ { Tk_Main(argc, argv, Tcl_AppInit); return 0; /* Needed only to prevent compiler warning. */ }
int Tcl_AppInit(interp) Tcl_Interp *interp; /* Interpreter for application. */ { if (Tcl_Init(interp) == TCL_ERROR) { return TCL_ERROR; } if (Tk_Init(interp) == TCL_ERROR) { return TCL_ERROR; } Tcl_StaticPackage(interp, "Tk", Tk_Init, Tk_SafeInit); if (Xotcl_Init(interp) == TCL_ERROR) { return TCL_ERROR; }
Tcl_Import(interp, Tcl_GetGlobalNamespace(interp), "xotcl::*", 1); if (Tcl_PkgRequire(interp, "XOTcl", XOTCLVERSION, 1) == NULL) { return TCL_ERROR; } return TCL_OK;
}
I got an executable (miniwish) built with the following compile/link commands (with some warnings):
gcc -fno-common -DXOTCLVERSION="1.3.1" -c -I/sw/include -I/sw/include -I/usr/include/X11 -I/sw/include tkAppInit.c gcc -bind_at_load -o minibiokwish tkAppInit.o -L/sw/lib -ltk8.4 -L/sw/lib -ltcl8.4 -L/usr/X11R6/lib -lX11 -lXmu -L/sw/lib/xotcl1.3.1 -lxotcl1.3.1 -lm ld: warning multiple definitions of symbol _tclPlatStubsPtr /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _tclPlatStubsPtr /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _tclPlatStubsPtr ld: warning multiple definitions of symbol _tclIntStubsPtr /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _tclIntStubsPtr /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _tclIntStubsPtr ld: warning multiple definitions of symbol _Tcl_InitStubs /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _Tcl_InitStubs /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _Tcl_InitStubs ld: warning multiple definitions of symbol _tclIntPlatStubsPtr /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _tclIntPlatStubsPtr /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _tclIntPlatStubsPtr ld: warning multiple definitions of symbol _tclStubsPtr /sw/lib/libtcl8.4.dylib(tclStubLib.o) definition of _tclStubsPtr /sw/lib/libtk8.4.dylib(tclStubLib.o) definition of _tclStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _tclPlatStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _tclIntStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _tclStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _tclIntPlatStubsPtr /sw/lib/xotcl1.3.1/libxotcl1.3.1.dylib(tclStubLib.o) definition of _Tcl_InitStubs
But this executable does not work correctly:
./minibiokwish dyld: ./minibiokwish can't open library: libxotcl1.3.1.dylib (No such file or directory, errno = 2) Trace/BPT trap
(executed from an X11 environment - not Aqua - of course).
-- Catherine Letondal -- Pasteur Institute Computing Center
Xotcl mailing list - Xotcl@alice.wu-wien.ac.at http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
On Sep 28, 2004, at 7:25 PM, Uwe Zdun wrote:
Hi Catherine,
on Unix we have moved the build system as default to the style preferred by TEA: the shells are not built anymore by default. Instead it is advisable to load XOTcl dynamically into the ordinary tclsh or wish. I propose you simply use this style of using XOTcl as well:
% wish
package require XOTcl namespace import xotcl::*
the shells, if build (what is optional) now do nothing else than this.
Understood! and thanks for the "TEA" information - I was not aware of it.
There is only one extension that I need to embed in a wish shell (it's made by a colleague to display 3D molecules cf http://www.pasteur.fr/~letondal/biok/i3DMol.html). It's because we need to create new Tcl commands and run an init function to set up the OpenGL environment at startup.
Catherine