From: Andreas K. <and...@ac...> - 2012-11-22 18:13:22
|
On Thu, Nov 22, 2012 at 1:18 AM, Trevor Davel (Twylite) <tw...@cr...> wrote: > There are two ways to load an extension in Tcl, and they affect how the > extension may be able to locate its init script: > (1) Using [load]. In this case the path of the init script can be supplied > via a Tcl variable, for example one set up by pkgIndex.tcl. There should be > no need to guess paths or search - script-level package location mechanisms > can provide the information. Actually it is much easier in that circumstance: package ifneeded foo 1 [list apply {{dir} { load $dir/whichever.dll source $dir/helper.tcl }} $dir] > If you want to [load] a DLL from an arbitrary location outside the > auto_path, then the DLL could fall back to looking adjacent to the DLL for > the init script. > (2) Statically compiled. In this case the builder can control where the > init script is installed relative to $tcl_library. No need for searching. > > On *nix platforms developers seem fond of using environment variables to > override library locations (usually for testing). There's no reason that > this cannot be accommodated. > > So tcl_findLibrary can do the following: > (1) If not on Windows: check for an override environment variable > (2) Check for a global var ::tcl::libpath($pkg). Could be set up e.g. by > pkgIndex.tcl. > (3) Check in a specified path (absolute, or relative to tcl_library). > Statically compiled extensions provide a relative path; DLLs provide the > absolute path of the directory containing the DLL. > > > > On 2012/11/21 10:49 PM, Clifford Yapp wrote: >> >> Hmm... How about this - instead of exposing that information at the >> command prompt, have tclsh support some command line flag that prints out >> config information upon request? e.g.: >> >> tclsh --info LIBTCL_PATH > > Interesting idea. Then one could embed the information (or dynamically > determine it) but not make it accessible to scripts (preventing abuse). > > Regards, > Twylite > -- Andreas Kupries Senior Tcl Developer Code to Cloud: Smarter, Safer, Faster™ P: 778.786.1122 F: 778.786.1133 and...@ac... http://www.activestate.com Learn about Stackato for Private PaaS: http://www.activestate.com/stackato Tcl'2013, Sep 23-27, New Orleans, LA, USA. |