Wire Cell Toolkit
This package provides the primary “build aggregation” source package for the various Wire Cell Toolkit (WCT) packages.
See http://wirecell.github.io/ for WCT manual and news “blog”.
The home page for the general Wire Cell effort is http://lar.bnl.gov/wire-cell/.
Get the source
See below for how to use
git to get the full source history and any
particular release. Select releases are archived and available in
file form at:
External software dependencies
The core of WCT depends on:
Optional dependencies include
You may provide the necessary external software dependencies as you wish. Some options include:
- Spack-based install automatically builds all (non-OS) externals and WCT itself
- Some WCT releases are built at FNAL as a UPS product named
- Exploit the above with a Singularity container and CVMFS (currently recommended)
Developers check out
master branch via SSH.
$ git clone --recursive email@example.com:WireCell/wire-cell-build.git wct
Users typically should build a release branch, either the tip or a tagged release on that branch. Tagged releases are shown on the this GitHub release page. To get the source, for example for release 0.5.0 on branch 0.5.x do:
$ git clone --recursive --branch 0.5.x https://github.com/WireCell/wire-cell-build.git $ git checkout -b 0.5.0 0.5.0 $ git submodule init $ git submodule update $ git submodule foreach git checkout -b 0.5.0 0.5.0
Anonymous users can clone the
master branch but will need to switch
the submodule urls to use HTTPS. A script is provided to make that
$ git clone https://github.com/WireCell/wire-cell-build.git $ ./swith-git-urls $ git submodule init $ git submodule update
Except when mistakes are made, the release branches default to anonymous HTTPS URLs.
Configuring the source
On well-behaved systems you can do:
$ ./wcb configure --prefix=/path/to/install
If your system is not well-behaved you can exhaustively specify where externals are found. In this contrived example, they are installed all into one directory named by the
WCT_EXTERNALS variable (such as when making a Spack “view”)
$ ./wcb --help $ ./wcb configure --prefix=/path/to/install \ --boost-includes=$WCT_EXTERNALS/include --boost-libs=$WCT_EXTERNALS/lib --boost-mt \ --with-eigen=$WCT_EXTERNALS --with-jsoncpp=$WCT_EXTERNALS --with-tbb=$WCT_EXTERNALS \ --with-root=$WCT_EXTERNALS --with-fftw=$WCT_EXTERNALS --with-root=$WCT_EXTERNALS
To force no use of ROOT, even if it is found, use
To build the code but not run the tests do
$ ./wcb -p --notests
To install the code but not run the tests do:
$ ./wcb -p --notests install
To run the tests, depending on your installation environment you may
need to set
LD_LIBRARY_PATH and will need to set
WIRECELL_PATH to find
$ export LD_LIBRARY_PATH=/path/to/install/lib:$LD_LIBRARY_PATH $ export WIRECELL_PATH=/path/to/data:/path/to/cfg
$ ./wcb -p --alltests
In principle, no tests should fail.
To make releases, the above details are baked into two test scripts make-release.sh and test-release.sh. See comments at the top of each for how to run them. These scripts can be used by others but are meant for developers to make official releases.
wcb build script is made from waf source via:
$ ./waf-light --tools=compat15,doxygen,boost,bjam $ cp waf /path/to/wire-cell/source/wcb