Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / src / nas,5.n2.os.2 / lib / python / man / mann / package.n
CommitLineData
86530b38
AT
1'\"
2'\" Copyright (c) 1996 Sun Microsystems, Inc.
3'\"
4'\" See the file "license.terms" for information on usage and redistribution
5'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
6'\"
7'\" RCS: @(#) $Id: package.n,v 1.6.2.1 2004/10/27 14:23:57 dkf Exp $
8'\"
9'\" The definitions below are for supplemental macros used in Tcl/Tk
10'\" manual entries.
11'\"
12'\" .AP type name in/out ?indent?
13'\" Start paragraph describing an argument to a library procedure.
14'\" type is type of argument (int, etc.), in/out is either "in", "out",
15'\" or "in/out" to describe whether procedure reads or modifies arg,
16'\" and indent is equivalent to second arg of .IP (shouldn't ever be
17'\" needed; use .AS below instead)
18'\"
19'\" .AS ?type? ?name?
20'\" Give maximum sizes of arguments for setting tab stops. Type and
21'\" name are examples of largest possible arguments that will be passed
22'\" to .AP later. If args are omitted, default tab stops are used.
23'\"
24'\" .BS
25'\" Start box enclosure. From here until next .BE, everything will be
26'\" enclosed in one large box.
27'\"
28'\" .BE
29'\" End of box enclosure.
30'\"
31'\" .CS
32'\" Begin code excerpt.
33'\"
34'\" .CE
35'\" End code excerpt.
36'\"
37'\" .VS ?version? ?br?
38'\" Begin vertical sidebar, for use in marking newly-changed parts
39'\" of man pages. The first argument is ignored and used for recording
40'\" the version when the .VS was added, so that the sidebars can be
41'\" found and removed when they reach a certain age. If another argument
42'\" is present, then a line break is forced before starting the sidebar.
43'\"
44'\" .VE
45'\" End of vertical sidebar.
46'\"
47'\" .DS
48'\" Begin an indented unfilled display.
49'\"
50'\" .DE
51'\" End of indented unfilled display.
52'\"
53'\" .SO
54'\" Start of list of standard options for a Tk widget. The
55'\" options follow on successive lines, in four columns separated
56'\" by tabs.
57'\"
58'\" .SE
59'\" End of list of standard options for a Tk widget.
60'\"
61'\" .OP cmdName dbName dbClass
62'\" Start of description of a specific option. cmdName gives the
63'\" option's name as specified in the class command, dbName gives
64'\" the option's name in the option database, and dbClass gives
65'\" the option's class in the option database.
66'\"
67'\" .UL arg1 arg2
68'\" Print arg1 underlined, then print arg2 normally.
69'\"
70'\" RCS: @(#) $Id: man.macros,v 1.4 2000/08/25 06:18:32 ericm Exp $
71'\"
72'\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
73.if t .wh -1.3i ^B
74.nr ^l \n(.l
75.ad b
76'\" # Start an argument description
77.de AP
78.ie !"\\$4"" .TP \\$4
79.el \{\
80. ie !"\\$2"" .TP \\n()Cu
81. el .TP 15
82.\}
83.ta \\n()Au \\n()Bu
84.ie !"\\$3"" \{\
85\&\\$1 \\fI\\$2\\fP (\\$3)
86.\".b
87.\}
88.el \{\
89.br
90.ie !"\\$2"" \{\
91\&\\$1 \\fI\\$2\\fP
92.\}
93.el \{\
94\&\\fI\\$1\\fP
95.\}
96.\}
97..
98'\" # define tabbing values for .AP
99.de AS
100.nr )A 10n
101.if !"\\$1"" .nr )A \\w'\\$1'u+3n
102.nr )B \\n()Au+15n
103.\"
104.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
105.nr )C \\n()Bu+\\w'(in/out)'u+2n
106..
107.AS Tcl_Interp Tcl_CreateInterp in/out
108'\" # BS - start boxed text
109'\" # ^y = starting y location
110'\" # ^b = 1
111.de BS
112.br
113.mk ^y
114.nr ^b 1u
115.if n .nf
116.if n .ti 0
117.if n \l'\\n(.lu\(ul'
118.if n .fi
119..
120'\" # BE - end boxed text (draw box now)
121.de BE
122.nf
123.ti 0
124.mk ^t
125.ie n \l'\\n(^lu\(ul'
126.el \{\
127.\" Draw four-sided box normally, but don't draw top of
128.\" box if the box started on an earlier page.
129.ie !\\n(^b-1 \{\
130\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
131.\}
132.el \}\
133\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
134.\}
135.\}
136.fi
137.br
138.nr ^b 0
139..
140'\" # VS - start vertical sidebar
141'\" # ^Y = starting y location
142'\" # ^v = 1 (for troff; for nroff this doesn't matter)
143.de VS
144.if !"\\$2"" .br
145.mk ^Y
146.ie n 'mc \s12\(br\s0
147.el .nr ^v 1u
148..
149'\" # VE - end of vertical sidebar
150.de VE
151.ie n 'mc
152.el \{\
153.ev 2
154.nf
155.ti 0
156.mk ^t
157\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
158.sp -1
159.fi
160.ev
161.\}
162.nr ^v 0
163..
164'\" # Special macro to handle page bottom: finish off current
165'\" # box/sidebar if in box/sidebar mode, then invoked standard
166'\" # page bottom macro.
167.de ^B
168.ev 2
169'ti 0
170'nf
171.mk ^t
172.if \\n(^b \{\
173.\" Draw three-sided box if this is the box's first page,
174.\" draw two sides but no top otherwise.
175.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
176.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
177.\}
178.if \\n(^v \{\
179.nr ^x \\n(^tu+1v-\\n(^Yu
180\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
181.\}
182.bp
183'fi
184.ev
185.if \\n(^b \{\
186.mk ^y
187.nr ^b 2
188.\}
189.if \\n(^v \{\
190.mk ^Y
191.\}
192..
193'\" # DS - begin display
194.de DS
195.RS
196.nf
197.sp
198..
199'\" # DE - end display
200.de DE
201.fi
202.RE
203.sp
204..
205'\" # SO - start of list of standard options
206.de SO
207.SH "STANDARD OPTIONS"
208.LP
209.nf
210.ta 5.5c 11c
211.ft B
212..
213'\" # SE - end of list of standard options
214.de SE
215.fi
216.ft R
217.LP
218See the \\fBoptions\\fR manual entry for details on the standard options.
219..
220'\" # OP - start of full description for a single option
221.de OP
222.LP
223.nf
224.ta 4c
225Command-Line Name: \\fB\\$1\\fR
226Database Name: \\fB\\$2\\fR
227Database Class: \\fB\\$3\\fR
228.fi
229.IP
230..
231'\" # CS - begin code excerpt
232.de CS
233.RS
234.nf
235.ta .25i .5i .75i 1i
236..
237'\" # CE - end code excerpt
238.de CE
239.fi
240.RE
241..
242.de UL
243\\$1\l'|0\(ul'\\$2
244..
245.TH package n 7.5 Tcl "Tcl Built-In Commands"
246.BS
247'\" Note: do not modify the .SH NAME line immediately below!
248.SH NAME
249package \- Facilities for package loading and version control
250.SH SYNOPSIS
251.nf
252\fBpackage forget ?\fIpackage package ...\fR?
253\fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR?
254\fBpackage names\fR
255\fBpackage present \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
256\fBpackage provide \fIpackage \fR?\fIversion\fR?
257\fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
258\fBpackage unknown \fR?\fIcommand\fR?
259\fBpackage vcompare \fIversion1 version2\fR
260\fBpackage versions \fIpackage\fR
261\fBpackage vsatisfies \fIversion1 version2\fR
262.fi
263.BE
264
265.SH DESCRIPTION
266.PP
267This command keeps a simple database of the packages available for
268use by the current interpreter and how to load them into the
269interpreter.
270It supports multiple versions of each package and arranges
271for the correct version of a package to be loaded based on what
272is needed by the application.
273This command also detects and reports version clashes.
274Typically, only the \fBpackage require\fR and \fBpackage provide\fR
275commands are invoked in normal Tcl scripts; the other commands are used
276primarily by system scripts that maintain the package database.
277.PP
278The behavior of the \fBpackage\fR command is determined by its first argument.
279The following forms are permitted:
280.TP
281\fBpackage forget ?\fIpackage package ...\fR?
282Removes all information about each specified package from this interpreter,
283including information provided by both \fBpackage ifneeded\fR and
284\fBpackage provide\fR.
285.TP
286\fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR?
287This command typically appears only in system configuration
288scripts to set up the package database.
289It indicates that a particular version of
290a particular package is available if needed, and that the package
291can be added to the interpreter by executing \fIscript\fR.
292The script is saved in a database for use by subsequent
293\fBpackage require\fR commands; typically, \fIscript\fR
294sets up auto-loading for the commands in the package (or calls
295\fBload\fR and/or \fBsource\fR directly), then invokes
296\fBpackage provide\fR to indicate that the package is present.
297There may be information in the database for several different
298versions of a single package.
299If the database already contains information for \fIpackage\fR
300and \fIversion\fR, the new \fIscript\fR replaces the existing
301one.
302If the \fIscript\fR argument is omitted, the current script for
303version \fIversion\fR of package \fIpackage\fR is returned,
304or an empty string if no \fBpackage ifneeded\fR command has
305been invoked for this \fIpackage\fR and \fIversion\fR.
306.TP
307\fBpackage names\fR
308Returns a list of the names of all packages in the
309interpreter for which a version has been provided (via
310\fBpackage provide\fR) or for which a \fBpackage ifneeded\fR
311script is available.
312The order of elements in the list is arbitrary.
313.TP
314\fBpackage present \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
315This command is equivalent to \fBpackage require\fR except that it
316does not try and load the package if it is not already loaded.
317.TP
318\fBpackage provide \fIpackage \fR?\fIversion\fR?
319This command is invoked to indicate that version \fIversion\fR
320of package \fIpackage\fR is now present in the interpreter.
321It is typically invoked once as part of an \fBifneeded\fR script,
322and again by the package itself when it is finally loaded.
323An error occurs if a different version of \fIpackage\fR has been
324provided by a previous \fBpackage provide\fR command.
325If the \fIversion\fR argument is omitted, then the command
326returns the version number that is currently provided, or an
327empty string if no \fBpackage provide\fR command has been
328invoked for \fIpackage\fR in this interpreter.
329.TP
330\fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR?
331This command is typically invoked by Tcl code that wishes to use
332a particular version of a particular package. The arguments
333indicate which package is wanted, and the command ensures that
334a suitable version of the package is loaded into the interpreter.
335If the command succeeds, it returns the version number that is
336loaded; otherwise it generates an error.
337If both the \fB\-exact\fR
338switch and the \fIversion\fR argument are specified then only the
339given version is acceptable. If \fB\-exact\fR is omitted but
340\fIversion\fR is specified, then versions later than \fIversion\fR
341are also acceptable as long as they have the same major version
342number as \fIversion\fR.
343If both \fB\-exact\fR and \fIversion\fR are omitted then any
344version whatsoever is acceptable.
345If a version of \fIpackage\fR has already been provided (by invoking
346the \fBpackage provide\fR command), then its version number must
347satisfy the criteria given by \fB\-exact\fR and \fIversion\fR and
348the command returns immediately.
349Otherwise, the command searches the database of information provided by
350previous \fBpackage ifneeded\fR commands to see if an acceptable
351version of the package is available.
352If so, the script for the highest acceptable version number is evaluated
353in the global namespace;
354it must do whatever is necessary to load the package,
355including calling \fBpackage provide\fR for the package.
356If the \fBpackage ifneeded\fR database does not contain an acceptable
357version of the package and a \fBpackage unknown\fR command has been
358specified for the interpreter then that command is evaluated in the
359global namespace; when
360it completes, Tcl checks again to see if the package is now provided
361or if there is a \fBpackage ifneeded\fR script for it.
362If all of these steps fail to provide an acceptable version of the
363package, then the command returns an error.
364.TP
365\fBpackage unknown \fR?\fIcommand\fR?
366This command supplies a ``last resort'' command to invoke during
367\fBpackage require\fR if no suitable version of a package can be found
368in the \fBpackage ifneeded\fR database.
369If the \fIcommand\fR argument is supplied, it contains the first part
370of a command; when the command is invoked during a \fBpackage require\fR
371command, Tcl appends two additional arguments giving the desired package
372name and version.
373For example, if \fIcommand\fR is \fBfoo bar\fR and later the command
374\fBpackage require test 2.4\fR is invoked, then Tcl will execute
375the command \fBfoo bar test 2.4\fR to load the package.
376If no version number is supplied to the \fBpackage require\fR command,
377then the version argument for the invoked command will be an empty string.
378If the \fBpackage unknown\fR command is invoked without a \fIcommand\fR
379argument, then the current \fBpackage unknown\fR script is returned,
380or an empty string if there is none.
381If \fIcommand\fR is specified as an empty string, then the current
382\fBpackage unknown\fR script is removed, if there is one.
383.TP
384\fBpackage vcompare \fIversion1 version2\fR
385Compares the two version numbers given by \fIversion1\fR and \fIversion2\fR.
386Returns -1 if \fIversion1\fR is an earlier version than \fIversion2\fR,
3870 if they are equal, and 1 if \fIversion1\fR is later than \fBversion2\fR.
388.TP
389\fBpackage versions \fIpackage\fR
390Returns a list of all the version numbers of \fIpackage\fR
391for which information has been provided by \fBpackage ifneeded\fR
392commands.
393.TP
394\fBpackage vsatisfies \fIversion1 version2\fR
395Returns 1 if scripts written for \fIversion2\fR will work unchanged
396with \fIversion1\fR (i.e. \fIversion1\fR is equal to or greater
397than \fIversion2\fR and they both have the same major version
398number), 0 otherwise.
399.SH "VERSION NUMBERS"
400.PP
401Version numbers consist of one or more decimal numbers separated
402by dots, such as 2 or 1.162 or 3.1.13.1.
403The first number is called the major version number.
404Larger numbers correspond to later versions of a package, with
405leftmost numbers having greater significance.
406For example, version 2.1 is later than 1.3 and version
4073.4.6 is later than 3.3.5.
408Missing fields are equivalent to zeroes: version 1.3 is the
409same as version 1.3.0 and 1.3.0.0, so it is earlier than 1.3.1 or 1.3.0.2.
410A later version number is assumed to be upwards compatible with
411an earlier version number as long as both versions have the same
412major version number.
413For example, Tcl scripts written for version 2.3 of a package should
414work unchanged under versions 2.3.2, 2.4, and 2.5.1.
415Changes in the major version number signify incompatible changes:
416if code is written to use version 2.1 of a package, it is not guaranteed
417to work unmodified with either version 1.7.3 or version 3.1.
418.SH "PACKAGE INDICES"
419.PP
420The recommended way to use packages in Tcl is to invoke \fBpackage require\fR
421and \fBpackage provide\fR commands in scripts, and use the procedure
422\fBpkg_mkIndex\fR to create package index files.
423Once you've done this, packages will be loaded automatically
424in response to \fBpackage require\fR commands.
425See the documentation for \fBpkg_mkIndex\fR for details.
426.SH EXAMPLES
427To state that a Tcl script requires the Tk and http packages, put this
428at the top of the script:
429.CS
430\fBpackage require\fR Tk
431\fBpackage require\fR http
432.CE
433.PP
434To test to see if the Snack package is available and load if it is
435(often useful for optional enhancements to programs where the loss of
436the functionality is not critical) do this:
437.CS
438if {[catch {\fBpackage require\fR Snack}]} {
439 # We have the package, configure the app to use it
440} else {
441 # Set up a dummy interface to work around the absence
442}
443.CE
444.PP
445When writing a package implementation, you should put the following at
446the \fIbottom\fR of your library script so it is only called once the
447package has been successfully set up:
448.CS
449\fBpackage provide\fR foobar 1.0
450.CE
451
452.SH "SEE ALSO"
453msgcat(n), packagens(n), pkgMkIndex(n)
454
455.SH KEYWORDS
456package, version