...
No Format |
---|
make # execute standard build targets in order make cvs # checkout from cvs make packageclean # removes the current build make download # download a tarball of the package make config # execute configure script or commands make compile # compile the libraries or binary make install # install the package |
Most packages support Each package supports either a cvs or a download command, depending on whether they are accessible it is contained in the SLAC cvs repository. Those External packages that are not in a SLAC cvs are most likely only accessible via wget downloadare retrieved using the wget program.
Package System
SimDist operates on a loose system of package configuration, which sets a number of standard build variables in the configuration stage for each package in the packages directory. A configure script in the base directory generates the actual Make file fragments for the packages, depending on the configuration selected and on the properties of the local host. Following the Autoconf build system's conventions, there are .in files in the package directories that are used by the configure script to generate these Make fragments.
Each package also has a file called package.gmk where it may override or add build settings, where the default settings for packages are overridden or additional settings can be added.
For instance, sometimes it is useful to enable verbose compilation and linking when building slic (the final package to be built by an in-order build).
To do this, you can manually add an option to its package.gmk file in packages/slic/package.gmk.
...
Each package has different possible options for this particular variable. The above examples will not work on other packages with SimDist, only the slic package.
...
The core of the SimDist build system is in build/package.gmk where a standard set of build procedures is defined for each a generic software package. This includes automation of the normal procedure of getting sources, configuring them, executing the build command (usually 'make'), and installing the binaries or These procedures include automation of fetching package source codes, configuration, execution of build commands, and installing binaries and headers.
Each package may have some or all of the following defined . The Make fragment is pretty flexible about working around missing informationwithin its package.gmk file generated by SimDist's global configure script. Most of these variables are given reasonable defaults and do not need to be specifically defined by a given package.
Variable | Meaning |
---|---|
PACKAGE_NAME | short name of package |
PACKAGE_BASEDIR | base directory of package sources |
PACKAGE_BUILDDIR | build directory |
PACKAGE_CONFIG | configure command if not standard |
PACKAGE_CONFIG_OPTS | extra options supplied to the configure command |
PACKAGE_CVSMODULE | name of the package's cvs module |
PACKAGE_CVSROOT | the CVSROOT for the package's cvs repository |
PACKAGE_DIR | SimDist package directory containing package.gmk and env.gmk |
PACKAGE_DIR_ORIG | original directory name, e.g. if downloaded and unzipped from a tarball |
PACKAGE_DOWNLOAD | URL of the package tarball |
PACKAGE_TGZ_LOCAL | name of the tarball locally |
PACKAGE_VERSION | version tag of the package or HEAD for to use its cvs head |
PACKAGE_DIST_TGZ | name of tarball if distributing this package |
PACKAGE_DIST_FILES | list of files to be included in distribution of this package |
...
Both the package.gmk and env.gmk files are rewritten when a global configure command is executed from the SimDist base directory. This is by design, following the convention of Autoconf. If you really want changes to stay, the .in files can be edited. But only a few of the variables are likely going to be useful, such as PACKAGE_CONFIG_OPTS, for passing options to the package's configure script.
Package Versions
The version of each package is specified in the file VERSION within each package's directory. For example, the slic version is at packages/slic/VERSION. The format of this file is as follows.
No Format |
---|
[package_name] [package_version]
|
For example, this is used to specify slic's CVS head.
No Format |
---|
slic HEAD
|
Not all packages will support the HEAD argument, mostly just SLAC cvs packages like slic, lcdd, gdml, and lcio.
Specific tags should generally be in this format.
No Format |
---|
v[version]r[release]p[patch]
|
For instance, to use slic version 1.2.3 (a made-up example), the version file should contain this.
No Format |
---|
v1r2p3
|
SimDist can usually figure out how to manipulate these version tags into the format required for accessing the package's sources via cvs or download.