From: Alan W. I. <ir...@be...> - 2002-07-03 15:02:50
|
Vince, Sorry for another negative message, but it is part of my job to test your changes to make sure all the details are right so that we present a polished product for our next release. I am certainly willing to continue the Linux testing of your changes, but you might be able to eliminate a lot of these little problems (and achieve a lot better turnaround than when two of us are involved) if you tested your changes on a Linux box (which I understand you have access to) before committing them. With your latest change I am still getting exactly the same error message for the installed version: application-specific initialization failed: Can't find a usable plplot.tcl in the following directories: /usr/plplot5.1/library As I have said before, I believe the problem is one of your libDir changes below (perhaps even initializing it to NULL?) is severely limiting the directories that are being searched. For your latest change, I noticed you switched to the "5.1.0/tcl" style which worked for me in the past, but the point is no amount of fiddling with initScript or initScriptExtended is going to work if your libDir changes makes sure those lines are completely ignored. The error message above shows only one directory is being searched. That never happened to me before your libDir changes. So I suspect if you look carefully at everything you did with libDir, you will find the reason why the directory search is now so limited. I am going to quote my previous post on this (especially the diff) to help you get to the bottom of this. Alan On Tue, 2 Jul 2002, Alan W. Irwin wrote: > I didn't do anything particularly sophisticated. 3 versions ago (i.e., for > version 1.32), this worked > fine for install (but not for built version in plplot/tmp). > > static char initScript[] = > "tcl_findLibrary plplot 5.1.0/tcl \"\" plplot.tcl PL_LIBRARY pllibrary"; > > i.e., I just replaced 5.1 by 5.1.0/tcl for just this line in 1.32. So I was > essentially just doing what you are now doing with initScriptExtended, and I > therefore think your current approach should work fine except for some > additional changes you made to libDir. Here is the diff I am talking about > between version 1.32 and version 1.35. I may have it wrong, but I think I > understand the initScriptExtended stuff so by elimination I think it is the > changed libDir stuff that is causing the trouble. > > Alan > > ******************* > Index: tclAPI.c > =================================================================== > RCS file: /cvsroot/plplot/plplot/bindings/tcl/tclAPI.c,v > retrieving revision 1.32 > retrieving revision 1.35 > diff -u -3 -p -r1.32 -r1.35 > --- tclAPI.c 2 Jul 2002 11:30:36 -0000 1.32 > +++ tclAPI.c 2 Jul 2002 16:44:25 -0000 1.35 > @@ -1,4 +1,4 @@ > -/* $Id: tclAPI.c,v 1.32 2002/07/02 11:30:36 vincentdarley Exp $ > +/* $Id: tclAPI.c,v 1.35 2002/07/02 16:44:25 vincentdarley Exp $ > > Copyright 1994, 1995 > Maurice LeBrun mj...@di... > @@ -313,6 +313,15 @@ loopbackCmd(ClientData clientData, Tcl_I > static char defaultLibraryDir[200] = PL_LIBRARY; > extern char* plplotLibDir; > > +#if (!defined(MAC_TCL) && !defined(__WIN32__)) > +/* > + * Use an extended search for installations on Unix where we > + * have very likely installed plplot so that plplot.tcl is > + * in /usr/local/plplot/lib/plplot5.1.0/tcl > + */ > +#define PLPLOT_EXTENDED_SEARCH > +#endif > + > /* > * PlbasicInit > * > @@ -326,7 +335,11 @@ PlbasicInit( Tcl_Interp *interp ) > { > static char initScript[] = > "tcl_findLibrary plplot 5.1 \"\" plplot.tcl PL_LIBRARY pllibrary"; > - char *libDir; > +#ifdef PLPLOT_EXTENDED_SEARCH > + static char initScriptExtended[] = > + "tcl_findLibrary plplot 5.1.0 \"\" tcl/plplot.tcl PL_LIBRARY pllibrary"; > +#endif > + char *libDir = NULL; > #ifdef USE_TCL_STUBS > /* > * We hard-wire 8.1 here, rather than TCL_VERSION, TK_VERSION because > @@ -359,16 +372,48 @@ PlbasicInit( Tcl_Interp *interp ) > #endif > > Tcl_SetVar(interp, "plversion", "5.1", TCL_GLOBAL_ONLY); > - if(Tcl_Eval(interp, initScript)) > + if (Tcl_Eval(interp, initScript) != TCL_OK) { > +#ifdef PLPLOT_EXTENDED_SEARCH > + if (Tcl_Eval(interp, initScriptExtended) != TCL_OK) { > + /* Last chance, look in '.' */ > + Tcl_DString ds; > + if (Tcl_Access("plplot.tcl", 0) != 0) { > + return TCL_ERROR; > + } > + if (Tcl_EvalFile(interp, "plplot.tcl") != TCL_OK) { > + return TCL_ERROR; > + } > + /* It is in the current directory */ > + libDir = Tcl_GetCwd(interp, &ds); > + if (libDir == NULL) { > + return TCL_ERROR; > + } > + libDir = strdup(libDir); > + Tcl_DStringFree(&ds); > + } > + /* > + * Clear the result so the user isn't confused by an error > + * message from the previous failed search > + */ > + Tcl_ResetResult(interp); > +#else > return TCL_ERROR; > +#endif > + } > > - libDir = Tcl_GetVar(interp, "pllibrary", TCL_GLOBAL_ONLY); > if (libDir == NULL) { > - Tcl_SetVar(interp, "pllibrary", defaultLibraryDir, TCL_GLOBAL_ONLY); > + libDir = Tcl_GetVar(interp, "pllibrary", TCL_GLOBAL_ONLY); > + if (libDir == NULL) { > + /* I don't believe this path can ever be reached now */ > + Tcl_SetVar(interp, "pllibrary", defaultLibraryDir, TCL_GLOBAL_ONLY); > + libDir = defaultLibraryDir; > + } > } else { > - /* Used by init code in plctrl.c */ > - plplotLibDir = strdup(libDir); > + Tcl_SetVar(interp, "pllibrary", libDir, TCL_GLOBAL_ONLY); > } > + > + /* Used by init code in plctrl.c */ > + plplotLibDir = strdup(libDir); > > #ifdef TCL_DIR > if (libDir == NULL) { > ******************* > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Plplot-devel mailing list > Plp...@li... > https://lists.sourceforge.net/lists/listinfo/plplot-devel > |