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/.
See below for how to use git
to get the full source history and any
particular release. Select releases are archived and available in tar
file form at:
https://lar.bnl.gov/software/releases/
The core of WCT depends on:
- Boost
- JsonCPP
- Jsonnet
- Eigen
- FFTW
Optional dependencies include
- ROOT
- TBB
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
wirecell
. - Exploit the above with a Singularity container and CVMFS (currently recommended)
Developers check out master
branch via SSH.
$ git clone --recursive [email protected]: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
easier:
$ 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.
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 --with-root=false
.
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
both data
and cfg
directories.
$ export LD_LIBRARY_PATH=/path/to/install/lib:$LD_LIBRARY_PATH $ export WIRECELL_PATH=/path/to/data:/path/to/cfg
Then,
$ ./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.
A new wcb
build script is made from waf source via:
$ ./waf-light --tools=compat15,doxygen,boost,bjam $ cp waf /path/to/wire-cell/source/wcb