All installed packages should be known to the package manager.
When a package is installed, the package file is copied to the .\project\OGPM\_repository dir. Additionally, its spec file and icon are copied into the .\project\OGPM\_db dir. Package queries will perform thier search for information by looking at the spec files within .\project\OGPM\_db. A package is considered "installed" if there is a spec file located in the .\project\OGPM\_db dir. For specific queries, such as dependancy and conflict information, the package's spec file will be read from this location.
Any VI that is going to be installed on a development system must be known, by name. This will allow one to make sure that no VI names are duplicated. If names are duplicated potential problems will result. A development system namespace database should be maintained and verified after changes to installed non-OpenG VIs (vi.lib, examples, user.lib, project, help, etc.) so that they are included in this namespace database.
One possible solution is to have a text file such as namespace.txt which is located in .\project\OGPM\_db. Before a package is installed, the namespace is checked for duplicate names. When the OGPM is installed the namespace can be generated by recursively listinging the VIs within .\vi.lib and several other known locations.
Package directories and repositories are used to locate and provide packges. For example, when installing a package a dependent package is often needed. A package directory on the Internet could be queried for the URL of the package. The package could then be downloaded and installed. A package repository would be similar to a directory, except that the packages would also be hosted by the directory.
The package directory database is simple a text file called directories.txt. It will have one package directory URL per line.
The package directories should be searched in the order that they are located in the database; however the local repository (.\project\OGPM\_repository) is always checked first, for a package that was, perhaps, previously installed.
A package directory might be a cgi query based protocol.
For example, http://OpenG.org/pkg-directory.cgi?pkg=ogtkstring-2.3-1.lvi
The returned web page would be a specially formatted to include information about the package and its location. This would be programatically parsed and the package would be downloaded from its location on the web.