1 Using PLane T
2 The PLane T Search Order
3 The planet Command-Line Tool
4 Utility Libraries
5 Developing Packages for PLane T
On this page:
4.1 config.ss: Client Configuration
PLANET-DIR
CACHE-DIR
UNINSTALLED-PACKAGE-CACHE
LINKAGE-FILE
LOG-FILE
USE-HTTP-DOWNLOADS?
HTTP-DOWNLOAD-SERVLET-URL
PLANET-SERVER-NAME
PLANET-SERVER-PORT
4.2 util.ss: Utilities
download/ install-pkg
current-cache-contents
current-linkage
make-planet-archive
unpack-planet-archive
remove-pkg
display-plt-file-structure
display-plt-archived-file
unlink-all
add-hard-link
remove-hard-link
resolve-planet-path
this-package-version
this-package-version-name
this-package-version-owner
this-package-version-maj
this-package-version-min
Version: 4.0.2

 

4 Utility Libraries

The planet collection provides configuration and utilities for using PLaneT.

4.1 config.ss: Client Configuration

The config.ss library provides several parameters useful for configuring how PLaneT works.

Note that while these parameters can be useful to modify programmatically, PLaneT code runs at module-expansion time and so most user programs cannot set them until PLaneT has already run. Therefore to meaningfully change these settings it is best to manually edit the config.ss file.

 (require planet/config)

(PLANET-DIR)  path-string?

(PLANET-DIR dir)  void?

  dir : path-string?

The root PLaneT directory. If the environment variable PLTPLANETDIR is set, default is its value; otherwise the default is the directory in which "config.ss" is found.

(CACHE-DIR)  path-string?

(CACHE-DIR dir)  void?

  dir : path-string?

The root of the PLaneT client’s cache directory.

(UNINSTALLED-PACKAGE-CACHE)  path-string?

(UNINSTALLED-PACKAGE-CACHE dir)  void?

  dir : path-string?

The root of the PLaneT client’s uninstalled-packages cache. PLaneT stores package distribution files in this directory, and searches for them in this directory for them if necessary. Unlike the main PLaneT cache, which contains compiled files and is specific to each particular version of PLT Scheme, the uninstalled package cache is shared by all versions of PLT Scheme that use the same package repository, and it is searched if a package is not installed in the primary cache and cannot be downloaded from the central PLaneT repository (for instance due to a loss of Internet connectivity). This behavior is intended to primarily benefit users who upgrade their PLT Scheme installations frequently.

(LINKAGE-FILE)  path-string?

(LINKAGE-FILE file)  void?

  file : path-string?

The file to use as the first place PLaneT looks to determine how a particular PLaneT dependence in a file should be satisfied. The contents of this file are used to ensure that no "magic upgrades" occur after a package is installed. The default is the file "LINKAGE" in the root PLaneT directory.

(LOG-FILE)  (or/c path-string? false?)

(LOG-FILE file)  void?

  file : (or/c path-string? false?)

If #f, indicates that no logging should take place. Otherwise specifies the file into which logging should be written. The default is the file "INSTALL-LOG" in the root PLaneT directory.

(USE-HTTP-DOWNLOADS?)  boolean?

(USE-HTTP-DOWNLOADS? bool)  void?

  bool : any/c

PLaneT can use two different protocols to retrieve packages. If #t, PLaneT will use the HTTP protocol; if #f it will use the custom-built PLaneT protocol. The default value for this parameter is #t and setting this parameter to #f is not recommended.

(HTTP-DOWNLOAD-SERVLET-URL)  string?

(HTTP-DOWNLOAD-SERVLET-URL url)  void?

  url : string?

The URL for the servlet that will provide PLaneT packages if USE-HTTP-DOWNLOADS? is #t, represented as a string. The default value is "http://planet.plt-scheme.org/servlets/planet-servlet.ss".

(PLANET-SERVER-NAME)  string?

(PLANET-SERVER-NAME host)  void?

  host : string?

The name of the PLaneT server to which the client should connect if USE-HTTP-DOWNLOADS? is #f. The default value for this parameter is "planet.plt-scheme.org".

(PLANET-SERVER-PORT)  natural-number?

(PLANET-SERVER-PORT port)  void?

  port : natural-number?

The port on the server the client should connect to if USE-HTTP-DOWNLOADS? is #f. The default value for this parameter is 270.

4.2 util.ss: Utilities

The "util.ss" library supports examination of the pieces of PLaneT. It is meant primarily to support debugging and to allow easier development of higher-level package-management tools. The functionality exposed by the planet command-line tool is also available programmatically through this library.

 (require planet/util)

(download/install-pkg owner pkg maj min)  (or/c pkg? false/c)

  owner : string?

  pkg : string?

  maj : natural-number/c

  min : natural-number/c

Downloads and installs the package specifed by the given owner name, package name, major and minor version number. Returns false if no such package is available; otherwise returns a package structure for the installed package.

(current-cache-contents)

  ((string? ((string? ((natural-number/c (natural-number/c ...)) ...)) ...)) ...)

(current-cache-contents contents)  void?

  contents : ((string? ((string? ((natural-number/c (natural-number/c ...)) ...)) ...)) ...)

Holds a listing of all package names and versions installed in the local cache.

(current-linkage)

  ((path-string? (string? (string?) natural-number/c natural-number/c) ...) ...)

Returns the current linkage table.

The linkage table is an association between file locations (encoded as path strings) and concrete planet package versions. If a require line in the associated file requests a package, this table is consulted to determine a particular concrete package to satisfy the request.

(make-planet-archive directory [output-file])  path-string?

  directory : path-string?

  

output-file

 

:

 

(or/c path? path-string?)

 

 

 

=

 

(string-append (path->string name) ".plt")

Makes a .plt archive file suitable for PLaneT whose contents are all files in the given directory and returns that file’s name. If the optional filename argument is provided, that filename will be used as the output file’s name.

(unpack-planet-archive plt-file output-dir)  any

  plt-file : (or/c path? path-string?)

  output-dir : (or/c path? path-string?)

Unpacks the PLaneT archive with the given filename, placing its contents into the given directory (creating that path if necessary).

(remove-pkg owner pkg maj min)  any

  owner : string?

  pkg : string?

  maj : natural-number/c

  min : natural-number/c

Removes the specified package from the local planet cache.

(display-plt-file-structure plt-file)  any

  plt-file : (or/c path-string? path?)

Print a tree representing the file and directory structure of the PLaneT archive .plt file named by plt-file to (current-output-port).

(display-plt-archived-file

 

plt-file

 

 

 

 

 

 

file-to-print)

 

 

any

  plt-file : (or/c path-string? path?)

  file-to-print : string?

Print the contents of the file named file-to-print within the PLaneT archive .plt file named by plt-file to (current-output-port).

(unlink-all)  any

Removes the entire linkage table from the system, which will force all modules to relink themselves to PLaneT modules the next time they run.

(add-hard-link owner pkg maj min dir)  any

  owner : string?

  pkg : string?

  maj : natural-number/c

  min : natural-number/c

  dir : path?

Adds a development link between the specified package and the given directory; once a link is established, PLaneT will treat the cache as having a package with the given owner, name, and version whose files are located in the given path. This is intended for package development; users only interested in using PLaneT packages available online should not need to create any development links.

If the specified package already has a development link, this function first removes the old link and then adds the new one.

(remove-hard-link owner pkg maj min)  any

  owner : string?

  pkg : string?

  maj : natural-number/c

  min : natural-number/c

Removes any hard link that may be associated with the given package.

(resolve-planet-path spec)  path?

  spec : quoted-planet-require-spec?

Returns the file system path to the file specified by the given quoted planet require specification. This function downloads and installs the specified package if necessary, but does not verify that the actual file within it actually exists.

(this-package-version)

(this-package-version-name)

(this-package-version-owner)

(this-package-version-maj)

(this-package-version-min)

Macros that expand into expressions that evaluate to information about the name, owner, and version number of the package in which they appear. this-package-version returns a list consisting of a string naming the package’s owner, a string naming the package, a number indicating the package major version and a number indicating the package minor version, or #f if the expression appears outside the context of a package. The others are convenience macros that select out the relevant field, or return #f if the expression appears outside the context of a PLaneT package.