diff options
Diffstat (limited to 'doc/pkgMkIndex.n')
-rw-r--r-- | doc/pkgMkIndex.n | 60 |
1 files changed, 24 insertions, 36 deletions
diff --git a/doc/pkgMkIndex.n b/doc/pkgMkIndex.n index d0ea771..5895407 100644 --- a/doc/pkgMkIndex.n +++ b/doc/pkgMkIndex.n @@ -12,12 +12,9 @@ pkg_mkIndex \- Build an index for automatic loading of packages .SH SYNOPSIS .nf -.VS 8.3.0 \fBpkg_mkIndex ?\fI\-direct\fR? ?\fI\-lazy\fR? ?\fI\-load pkgPat\fR? ?\fI\-verbose\fR? \fIdir\fR ?\fIpattern pattern ...\fR? -.VE .fi .BE - .SH DESCRIPTION .PP \fBPkg_mkIndex\fR is a utility procedure that is part of the standard @@ -39,10 +36,9 @@ Create the index by invoking \fBpkg_mkIndex\fR. The \fIdir\fR argument gives the name of a directory and each \fIpattern\fR argument is a \fBglob\fR-style pattern that selects script or binary files in \fIdir\fR. -.VS 8.0.3 The default pattern is \fB*.tcl\fR and \fB*.[info sharedlibextension]\fR. -.VE -.br +.RS +.PP \fBPkg_mkIndex\fR will create a file \fBpkgIndex.tcl\fR in \fIdir\fR with package information about all the files given by the \fIpattern\fR arguments. @@ -53,10 +49,10 @@ and new commands appear (this is why it is essential to have in the files, as described above). If you have a package split among scripts and binary files, or if you have dependencies among files, -you may have to use the \fB\-load\fP option +you may have to use the \fB\-load\fR option or adjust the order in which \fBpkg_mkIndex\fR processes -the files. See COMPLEX CASES below. - +the files. See \fBCOMPLEX CASES\fR below. +.RE .IP [3] Install the package as a subdirectory of one of the directories given by the \fBtcl_pkgPath\fR variable. If \fB$tcl_pkgPath\fR contains more @@ -70,7 +66,8 @@ the package's script and/or binary files as well as the \fBpkgIndex.tcl\fR file. As long as the package is installed as a subdirectory of a directory in \fB$tcl_pkgPath\fR it will automatically be found during \fBpackage require\fR commands. -.br +.RS +.PP If you install the package anywhere else, then you must ensure that the directory containing the package is in the \fBauto_path\fR global variable or an immediate subdirectory of one of the directories in \fBauto_path\fR. @@ -83,6 +80,7 @@ You can add a directory to \fBauto_path\fR explicitly in your application, or you can add the directory to your \fBTCLLIBPATH\fR environment variable: if this environment variable is present, Tcl initializes \fBauto_path\fR from it during application startup. +.RE .IP [4] Once the above steps have been taken, all you need to do to use a package is to invoke \fBpackage require\fR. @@ -96,7 +94,6 @@ in \fBauto_path\fR, but only one will actually be loaded in a given interpreter, based on the first call to \fBpackage require\fR. Different versions of a package may be loaded in different interpreters. - .SH OPTIONS The optional switches are: .TP 15 @@ -107,22 +104,22 @@ upon \fBpackage require\fR. This is the default. \fB\-lazy\fR The generated index will manage to delay loading the package until the use of one of the commands provided by the package, instead of loading -it immediately upon \fBpackage require\fR. +it immediately upon \fBpackage require\fR. This is not compatible with +the use of \fIauto_reset\fR, and therefore its use is discouraged. .TP 15 \fB\-load \fIpkgPat\fR The index process will pre-load any packages that exist in the -current interpreter and match \fIpkgPat\fP into the slave interpreter used to +current interpreter and match \fIpkgPat\fR into the slave interpreter used to generate the index. The pattern match uses string match rules, but without making case distinctions. See COMPLEX CASES below. .TP 15 \fB\-verbose\fR Generate output during the indexing process. Output is via -the \fBtclLog\fP procedure, which by default prints to stderr. +the \fBtclLog\fR procedure, which by default prints to stderr. .TP 15 \fB\-\-\fR -End of the flags, in case \fIdir\fP begins with a dash. - +End of the flags, in case \fIdir\fR begins with a dash. .SH "PACKAGES AND THE AUTO-LOADER" .PP The package management facilities overlap somewhat with the auto-loader, @@ -142,7 +139,6 @@ If you use \fBpkg_mkIndex\fR to index a package, its commands cannot be invoked until \fBpackage require\fR has been used to select a version; in contrast, packages indexed with \fBauto_mkindex\fR can be used immediately since there is no version control. - .SH "HOW IT WORKS" .PP \fBPkg_mkIndex\fR depends on the \fBpackage unknown\fR command, @@ -157,18 +153,14 @@ commands for each version of each available package; these commands invoke \fBpackage provide\fR commands to announce the availability of the package, and they setup auto-loader information to load the files of the package. -.VS 8.3 If the \fI\-lazy\fR flag was provided when the \fBpkgIndex.tcl\fR was generated, -.VE -a given file of a given version of a given package isn't +a given file of a given version of a given package is not actually loaded until the first time one of its commands is invoked. Thus, after invoking \fBpackage require\fR you may not see the package's commands in the interpreter, but you will be able to invoke the commands and they will be auto-loaded. - -.VS 8.3 .SH "DIRECT LOADING" .PP Some packages, for instance packages which use namespaces and export @@ -177,8 +169,6 @@ that their package files be loaded immediately upon \fBpackage require\fR instead of delaying the actual loading to the first use of one of the package's command. This is the default mode when generating the package index. It can be overridden by specifying the \fI\-lazy\fR argument. -.VE - .SH "COMPLEX CASES" Most complex cases of dependencies among scripts and binary files, and packages being split among scripts and @@ -193,28 +183,28 @@ with some glob patterns. .PP In general, it is OK for scripts to have dependencies on other packages. -If scripts contain \fBpackage require\fP commands, these are +If scripts contain \fBpackage require\fR commands, these are stubbed out in the interpreter used to process the scripts, so these do not cause problems. If scripts call into other packages in global code, -these calls are handled by a stub \fBunknown\fP command. +these calls are handled by a stub \fBunknown\fR command. However, if scripts make variable references to other package's variables in global code, these will cause errors. That is also bad coding style. .PP If binary files have dependencies on other packages, things can become tricky because it is not possible to stub out -C-level APIs such as \fBTcl_PkgRequire\fP API +C-level APIs such as \fBTcl_PkgRequire\fR API when loading a binary file. For example, suppose the BLT package requires Tk, and expresses -this with a call to \fBTcl_PkgRequire\fP in its \fBBlt_Init\fP routine. +this with a call to \fBTcl_PkgRequire\fR in its \fBBlt_Init\fR routine. To support this, you must run \fBpkg_mkIndex\fR in an interpreter that has Tk loaded. You can achieve this with the \fB\-load \fIpkgPat\fR option. If you specify this option, \fBpkg_mkIndex\fR will load any packages listed by -\fBinfo loaded\fP and that match \fIpkgPat\fP +\fBinfo loaded\fR and that match \fIpkgPat\fR into the interpreter used to process files. -In most cases this will satisfy the \fBTcl_PkgRequire\fP calls +In most cases this will satisfy the \fBTcl_PkgRequire\fR calls made by binary files. .PP If you are indexing two binary files and one depends on the other, @@ -224,19 +214,17 @@ and then the package it provides will be available when the second file is processed. You may also need to load the first package into the temporary interpreter used to create the index by using -the \fB\-load\fP flag; -it won't hurt to specify package patterns that are not yet loaded. +the \fB\-load\fR flag; +it will not hurt to specify package patterns that are not yet loaded. .PP If you have a package that is split across scripts and a binary file, -then you should avoid the \fB\-load\fP flag. The problem is that +then you should avoid the \fB\-load\fR flag. The problem is that if you load a package before computing the index it masks any other files that provide part of the same package. -If you must use \fB\-load\fP, +If you must use \fB\-load\fR, then you must specify the scripts first; otherwise the package loaded from the binary file may mask the package defined by the scripts. - .SH "SEE ALSO" package(n) - .SH KEYWORDS auto-load, index, package, version |