Skip to content
Top-level build/aggregation package for building Wire Cell packages.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
apps @ 740dfc6
cfg @ 8787a7a
dfp @ 888d72a
gen @ 4809bc1
iface @ 0273682
img @ 9059ed7
pgraph @ 6746099
python @ e83ff90
ress @ 6c35e0f
root @ f3f94dd
sigproc @ feaeee1
sio @ 10b8537
tbb @ f1d91e7
util @ a30af2a
waftools @ c94f2ac
.dumbjump
.gitignore
.gitmodules
Doxyfile
README.org
run_test.sh
sourceme-external-prefix.sh
sourceme-prefix-has-deps.sh
switch-git-urls
wcb
wscript

README.org

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/.

Installation

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 tar file form at:

https://lar.bnl.gov/software/releases/

External software dependencies

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:

Developer Source

Developers check out master branch via SSH.

$ git clone --recursive git@github.com:WireCell/wire-cell-build.git wct

User Source

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.

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 --with-root=false.

Building

To build the code but not run the tests do

$ ./wcb -p --notests

Installing

To install the code but not run the tests do:

$ ./wcb -p --notests install

Testing

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.

Release management

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.

Meta

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
You can’t perform that action at this time.