Skip to content

Top-level build/aggregation package for building Wire Cell packages.

Notifications You must be signed in to change notification settings

WireCell/wire-cell-build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

https://api.travis-ci.org/WireCell/wire-cell-build.svg?branch=master

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