SAS packages
Package philosophy
The SAS is a collection of packages.
A package can contain a variety of items that are part of the SAS development:
-
libraries
-
header files
-
tasks
-
executables
-
documentation
Package template
A new SAS compliant package directory structure can be created
automatically by running the SAS package maker SAS package maker. Before doing this you
should have completed the installation of the SAS, and sourced the set
up script appropriate to your shell environment.
Type:
and answer the questions. This will create a new directory with the
name of the package and will fill out a number of templates with the
aswers you gave. pkgmaker
creates templates for Fortran,
Perl, and C++ tasks. Pick one and remove the others.
You are now ready to roll your own package.
Version numbering
The version number is written in the file VERSION in the top level
directory of the package. This file is mandatory.
During the normal development, SAS packages have a version number of
the form M.m
, where M is the major version
number and m is the minor version number.
A new package will have a version number of 0.1
. Its
description would then be circulated to the SAS developers for
approval, and at that stage the version number becomes
1.0
.
Every time a new version of the package is uploaded to the SOC, it
must have a new version number, or it'll be rejected.
Normally, new package deliveries increase the minor version number:
1.0, 1.1, 1.2 ...
.
A change in major version number is required when:
- The parameter interface changed:
- a new parameter was added to the task.
- a parameter was removed, or changed name.
- a parameter default value was changed.
- The task functionality changed significantly, and the task was
re-approved by the SAS developers.
- One of the libraries has changed interface.
This for the theory. In practice, because of the dependency check
mechanism exceptions have been and will be made in order to affect
developers as little as possible. Consult with the SAs Librarian if
you ahve questions.
Patch level
During a public release phase, when we work against a baseline
manifest, new package uploads in response to SPRs should have a third
version number: M.m.p
.
Dependencies
Packages can depend upon each other, and an incompatible change in a
low-level packages can trigger an avalanche of incompatibilities. For
this reason, a strict version numbering scheme is adopted, and the
package dependencies are made explicit. The packages are arranged in a
non-cyclic dependency tree. Each package is guaranteed to work with a
specified set of versions of the packages it depends upon. When a new
version of a package is delivered, it will only be incorporated into a
SAS release when all the packages that depend upon it are upgraded as
well.
The file DEPEND in the top level directory of the package contains a
list of all the packages that it depends upon, together with the version
number of the package that is known to be compatible.
This file cannot contain patch level version numbers.
Submission
A package is constructed by doing 'make dist' in the toplevel
directory of a package. A gzipped tar file is generated in the
parent directory of the package. This can be sent to the SOC with the
command uploadas
.
Note that you must have sent your PGP key to the SAs Librarian before
your packages can be integrated.
Updated on: August 9, 2000