I. CLIENT ========= This is a very basic implementation of a Teapot client. It will fetch all requested packages and their dependencies from a remote TEAPOT server. 1. Installing ------------- The supplied Makefile only installs the client library. A sample client that makes use of this library is included. The sample library is called "teapot-client.tcl". a. To install with all the default options and auto configuration, execute: # make install b. If you wish to install the package into a particular directory, execute: # make install TCLDIR=your_particular_directory (note that it will create a "teapotclient0.1" directory and but no "lib" or similar directory) c. If you wish to install into an alternate root directory (i.e., for packaging), execute: # make install DESTDIR=your_new_rootdir This will search for a "tclConfig.sh" in the destination directory. d. If you wish to install into an alternate prefix (default is "/usr/local"), execute: # make install PREFIX=your_new_prefix (note that this only affects the search path and where the "teapot-client" script is installed, not where the package goes directly) Note that the install directory is not encoded in the script in any way so it can be safely moved after installation. 2. Using -------- a. teapotclient: i. get_extensions SYNOPSIS package require teapotclient ::teapotclient::get_extensions <teapot_server> \ ?<os_glob_pattern>? ?<cpu_glob_pattern>? DESCRIPTION get_extensions gets the extensions that are available from a TEAPOT server, for a particular operating system and CPU tuple (which can be glob patterns). The default OS and CPU patterns are both "*" which will match all operating system and cpus. RETURN VALUE The returned value is a list in the format of: {Extension_1} {ExtensionInfo_1} {Extension_2} {ExtensionInfo_2} ... Where ExtensionInfo_N is a list in the format of: ExtensionVersion ExtensionPlatformInfo ii. download_extensions SYNOPSIS package require teapotclient ::teapotclient::download_extensions <rootdir> \ <list_of_teapot_servers> <list_of_extensions> \ <os_glob_pattern> <cpu_glob_pattern> \ ?<list_of_extensions_to_exclude>? DESCRIPTION download_extensions will download the list of extensions for a given operating system and CPU tuple, and download their dependencies recursively. It will place each downloaded extensions in its own subdirectory beneath the specified "rootdir". The latest version available for the given OS and CPU tuple of each extension will be downloaded. You may optionally specify a list of extensions that you do not wish to be downloaded. RETURN VALUE The return value is a list of extensions actually downloaded. This may contain items that were not requested (if they were needed to satisfy a dependency), and may not contain all items that were requested (if they were unavailable). The list is in the format: {Extension_1} {ExtensionInfo_1} {Extension_2} {ExtensionInfo_2} ... Where ExtensionInfo_N is a list in the format of: ExtensionVersion ExtensionPlatformInfo ExtensionServer iii. setcachedir SYNOPSIS package require teapotclient ::teapotclient::setcachedir <directory> DESCRIPTION The download_extensions and get_extensions commands use a local disk cache to improve performance. The default cache directory is a directory in the user's home directory, or a temporary directory if a home directory is not found. setcachedir specifies an alternate location to store the cache. setcachedir should be called before any other commands if it is intended to be used. RETURN VALUE Unspecified. iv. Example 1: package require teapotclient puts "The following extensions are available:" foreach {extension extensioninfo} [::teapotclient::get_extensions \ [list teapot.activestate.com] \ {*} {*}] { puts " $extension [join $extensioninfo {, }]" } v. Example 2: package require teapotclient set os $tcl_platform(os) if {$tcl_platform(platform) == "windows"} { set os $tcl_platform(platform) } puts "Downloading md5 and sha1 packages for the current system" ::teapotclient::download_extensions "." \ [list teapot.activestate.com] [list md5 sha1] $os \ $tcl_platform(machine) b. teapot-client / teapot-client.tcl: i. teapot-client get <dir> <os> <cpu> <packages...> Downloads all the requested extensions/packages for the OS+CPU pair into the "lib" directory of the directory specified. Specifying a package name that begins with a "!" (bang) will indicate that the specified package does NOT need to be fetched, even if it is depended on by some other package. ii. teapot-client list ?<os>? ?<cpu>? Lists all available extensions and their most recent versions, optionally restricted to an OS+CPU pair. II. SERVER ========== This is not yet implemented.