Oxs package management: oxspkg
Keywords: userguide

Next: Oxs regression tests: oxsregression Up: Command Line Utilities Previous: ODT Column Extraction: odtcols

##
Oxs package management: oxspkg

The oxspkg command is used to manage optional Oxs extension packages. Each package is stored in a separate directory under `oommf/app/oxs/contrib/`. These packages can be ``installed'' and ``uninstalled'' to and from the `oommf/app/oxs/local/` directory by the oxspkg command. The install is a simple copy that does not automatically build the package or link it into the Oxs executable--a separate invocation of pimake is needed for that.

Launching
The oxspkg launch command is:

  `tclsh oommf.tcl oxspkg list`
or
  `tclsh oommf.tcl oxspkg listfiles pkg [pkg ...]`
or
  `tclsh oommf.tcl oxspkg install [-v] [-nopatch] pkg [pkg ...]`
or
  `tclsh oommf.tcl oxspkg uninstall pkg [pkg ...]`
or
  `tclsh oommf.tcl oxspkg copyout pkg [pkg ...] destination`

Glob-style wildcards (*, ?) or the keyword `all` are accepted in package specifications. (If your command shell expands wildcards, as is common on Unix systems, then you may need to escape or quote the wildcards so that they are passed unadulterated to the oxspkg program.) The first argument following the oxspkg keyword is one of the sub-commands `list`, `listfiles`, `install`, `uninstall`, or `copyout`:

`list`
  Lists all the packges available under `oommf/app/oxs/contrib/`, how many (installable) files are in each package, and the package install status.
`listfiles pkg [pkg ...]`
  List each of the ``installable'' files for the selected package. (There may be additional files for the package, e.g. `README` or files with versioning information, included in the `oommf/app/oxs/contrib/`<`pkg`>`/` directory. However, those files are ignored by the oxspkg install command.)
`install [-v] [-nopatch] pkg [pkg ...]`
  Install (copies) the installable files for the selected package from `oommf/app/oxs/contrib/` to `oommf/app/oxs/local/`. This command does not to compile the files or link them into the Oxs executable. The user is responsible for making a separate call to pimake to build and link the package.

  For third-party packages, the contents of the `oommf/app/oxs/contrib/`<`pkg`>`/` directory will mirror some release of the package from the official maintainer of the package. If those files don't compile cleanly against the current OOMMF distribution, then a patch file will be included in the parent `oommf/app/oxs/contrib/` directory. Normally that patch file (if any) is automatically applied as part of the installation procedure. The `-nopatch` option skips the patch step. Note: The patch step requires that a patch command exists on the system executable search path. patch is a standard system utility on Unix systems. Versions of patch for Windows are available, such as the one from the GnuWin project. If there are no patches for a particular package, then the message `No patches found` will be reported during the install process.

  The `-v` option requests more verbose output.

`uninstall pkg [pkg ...]`
  Deletes all files in `oommf/app/oxs/local/` associated with the selected package. Here ``associated'' means a file name match with a file in the package directory `oommf/app/oxs/contrib/`<`pkg`>`/`. There is no checking of contents or timestamps between the files.
`copyout pkg [pkg ...] destination`
  Selects files in the same manner as the `uninstall` command, but rather than deleting the files instead copies them to the `destination` directory. This is intended as a development aid for creating patches for packages.

Most of the optional packages controlled by oxspkg are from third-party contributors. However, some may originate with the OOMMF core development team, but are made optional because they require third-party libraries or are considered too experimental to be included among the standard OOMMF packages. See the `README` file in the various `oommf/app/oxs/contrib/`<`pkg`>`/` directories for details.

OOMMF Documentation Team
September 29, 2018