Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

User's Guide

For an abridged version (but not a replacement) of this guide see The Impatient's Guide to DESDM EUPS installation, which contains specific information about installing on OSX (10.7-10.11).

This is the user manual for DESDM's new package management system. It targets both package authors and users that would like to use this package manager to install software on their systems.

This package management system should run on any Linux machine. Due to the differences of the various Linux distributions (and versions of them) we cannot guarantee that all the packages will build without errors on every possible machine. We do however automatically test all packages on a set of test machines running CentOS. In the future additional test systems will be provided. 

The DESDM package management system is based on EUPS 1.2.30. EUPS was not modified for DESDM, instead some additional scripts were written to support some of the use-cases.

Table of Contents
maxLevel4
minLevel2
outlinetrue

Nomenclature

Term

Description

Product

A product is a name for a software component. Typical products are 'cfitsio', 'atlas', 'sextractor' and so on.

Package

A package is specific version of a product, compiled in a specific way, possibly linking to a specific set of libraries (other packages).
Are are typically several packages for the same product.

Installing EUPS

Before any packages can be installed, EUPS must be installed. It its highly recommended to use our install script to do this, as it sets some additional environment variables which will be assumed to be present while working with the package manager. We do not support alternative installation methods.

...

It turns out to be quite hard to provide an accurate list of prerequisites (for example: How to reliably detect the minimum version of libc needed by sextractor?). The following list is updated with the current state of our knowledge.

Dependency

Used by

RHEL / centOS package (if known)

OSX

python (some old version will do)

Package management system itself

python

-

wget

Package management system itself

wget

wget (install wget from source)

curl

Package management system itself

curlcurl (install instructions soon)

unzip

oracleclient 11.1.0.7

unzip

-

zlib

libpng 1.2.38, python 2.7.3

zlib zlib-devel

zlib

bzip2

python 2.7.3

bzip2 bzip2-devel

bzip2

libfreetype

plplot 5.8.0

freetype freetype-devel

freetype (install freetype from source)

libX11

plplot 5.9.9

libX11 libX11-devel

 

libXau

plplot 5.9.9

libXau libXau-devel

 

libxcb

plplot 5.9.9

 

 

libXext

plplot 5.9.9

libXext libXext-devel

 

libxpm

root 5.26.00

libXpm libXpm-devel

 

libXft

root 5.26.00

libXft libXft-devel

 

libcrypt

python 2.7.3

openssl openssl-devel glibc-devel

 

libaio

oracleclient 11.1.0.7

libaio libaio-devel

 

libfreebl3

python 2.7.3

nss-softokn-freebl nss-softokn-freebl-devel

 

libnsl

python 2.7.3

glibc-devel

 

gcc

various packages

gcc gcc-c++ make autoconf patch

Apple Xcode 5.1.1 (dmg)

gfortran

atlas 3.8.4, netlib-lapack 3.4.1

gcc-gfortran

version >= 4.8.2 (gfortran dmg)

pkg-config

glib 2.29.2

pkgconfig

install from source instructions

subversion

Package management system itself

svn (subversion on rhel5)

-

rsync

unitRunning 0.0.11

rsync

rsync

tardesdm_eupsinstall.pytar 

We optionally support Intel's ICC and MKL (see the next section)

...

The following table lists the minimum versions required. Note that gcc and gfortran are still required since not all packages might support ICC and MKL (earlier versions of sextractor for example).

Dependency

Used by

icc (>=11.1)

sextractor (icc&mkl build only)

mkl (>=10.3)

sextractor (icc&mkl build only)

ICC and MKL can only be used in combination.

...

Lets look at a few examples:

 

Product Name

Configset

Product Version

Package Version

cfitsio 3.300+0

cfitsio

 

3.300

0

libjpeg 6b+1

libjpeg

 

6b

1

altas_netlib 3.8.4+2

atlas

netlib

3.8.4

2

Product Name

The product name is an non-empty string that may contain the following characters:

...

There are some environment variables that can be assumed to be present in every build script:

Variable

Description

Example Value
w/o configset

Example Value
w. configset

EXTERNAL

URL to the place were the tarballs
of external dependencies are stored.

http://desbuild.cosmology.illinois.edu/eeups/webservice/resources/

http://desbuild.cosmology.illinois.edu/eeups/webservice/resources/

SVNROOT

URL to the subversion repository.

https://dessvn.cosmology.illinois.edu/svn/desdm/devel/

https://dessvn.cosmology.illinois.edu/svn/desdm/devel/

SVN_PATH

Relative path to the root folder of
the source inside the product's SVN
directory.

tags/3.8.4+0

tags/3.8.4+0

PRODUCT

Name of the product. For historical
reasons the configset is appended.

atlas

atlas_netlib

VERSION

Version of the product.

3.8.4

3.8.4

PKG_VERSION

'+' part of the package version.

1

1

FULL_VERSION

The complete package version

3.8.4+1

3.8.4+1

FLAVOR

The flavor of the system where the
package is installed.

Linux64

Linux64

PRODUCT_DIR

The base directory into which the
package must be installed.

[...]/Linux64/altas/3.8.4+1

[...]/Linux64/altas_netlib/3.8.4+1

[DEPENDENCY]_DIR
(for example
 CFITSIO_DIR)

For every package this package
depends on, there is at least this
environment variable. It points
to the directory that was the
PRODUCT_DIR of that package.

[...]/Linux64/cfitsio/3.300+0

[...]/Linux64/cfitsio/3.300+0

If your package as dependencies (listed in the table file, see below), then all those packages will be installed and set-up before the script is executed. You can assume that all environment variables set by the table files of the dependencies are available.

...

Note that even if the table file looks a bit like a bash script on first sight, they are not. Regular bash commands will not work.

Command

Description

Examples

setupRequired

Declares a dependency.
Only direct dependencies need to
be listed. EUPS will traverse
them recursively.

setupRequired(libpng 1.2.38+0)
setupRequired(libjpeg 6b+0)

envPrepend

Adds a path in front of an environment
variable. If the variable is not yet set
it is set to the given path.

envPrepend(PATH, ${PRODUCT_DIR}/bin)

envAppend

Adds a path to the end of an environment
variable. If the variable is not yet set
it is set to the given path.

endAppend(LD_LIBRARY_PATH, ${PRODUCT_DIR}/lib))

Rules for table files

  • DO NOT USE version ranges. EUPS has some support to specify version ranges with setupRequirement. DESDM does not support this. Always specify the exact version. This ensures that we build packages exactly the same way everywhere, making installations reproducible.
  • Always use curly brackets around variables. EUPS will not work without them.
  • Use envPrepend instead of envAppend. This is important as it ensures that we really ending up using the software in the package and not some other installation that happens to be installed on the machine.

...

Further command line options available for the pkg_propagator:

Parameter 
--workdirAllows you to specify a working directory where the old package versions are checked out from SVN and new package versions will be created. Defaults to the current directory.
--operationalOnce set new 'operational' package versions are proposed (without 'E' appended to the package version).
--webservice

URL to the webservice from where the information on new package versions can be obtained. Defaults to http://desbuild.cosmology.illinois.edu/eeups/webservice/propagator . Note that this service can be called directly from a web browser. By entering a URL of the form 

No Format
<webservice>/E/<replace>/<by>/<reference> 

or

No Format
<webservice>/O/<replace>/<by>/<reference> 

for 'experimental' or 'operational' package versions, respectively. In the angular brackets <replace>, <by>, <reference> you need to specify package versions such as python-2.7.6+1. As a result, you will see a json file with all the old ('orig') packages and the corresponding new ('prop') packages to be created.

Example:

No Format
http://desbuild.cosmology.illinois.edu/eeups/webservice/propagator/E/atlas_netlib-3.8.4+6/atlas_netlib-3.8.4+7/eeups-1.4.3+2

 

As usual, use

No Format
$ pkg_propagator --help

...