-
Notifications
You must be signed in to change notification settings - Fork 245
Build
Soufflé has pre-built packages for Debian and MAC OS X. You find the pre-built packages here.
To build and install Souffle, the following software must be installed:
- Make, Autoconf tools, GNU G++ supporting C++11 and OpenMP (from version 4.8), Bison (from version 3.0.2), Flex, DoxyGen, Java JDK
CLANG++ with OpenMP support can be used as an alternative for G++.
On a Ubuntu/Debian system, following command installs the necessary developer tools to compile and build Soufflé:
sudo apt-get install autoconf automake bison build-essential doxygen flex g++ git libsqlite3-dev libtool make openjdk-8-jdk pkg-config python zlib1g-dev
If clang++ is used to build Soufflé, then the libomp-dev package may also be required if support of parallel execution is needed.
sudo apt-get install libomp-dev
Note that the Ubuntu/Debian version needs to be recent such that G++ 4.8 is part of the standard distribution.
The Soufflé project follows automake/autoconf conventions for configuring, installing and building software. To configure, build, test, and install the project, type:
cd souffle
sh ./bootstrap
./configure
make
MAC OS X does not have OpenMP/C++ nor a bison version 3.0.2 or higher installed. We recommend brew to install the required tools to build Soufflé. Run the following commands prior to executing ./configure:
brew update
brew install autoconf automake bison libtool pkg-config
brew reinstall gcc --without-multilib
brew link bison --force
Note: Be careful with the search path for bison, so it points to the correct one. By default, macOS includes bison 2.3 at /usr/bin/bison, however brew installs the newer version to /usr/local/bin/bison. This can be done by prepending this directory to the path, however, this can break other systems - PATH=/usr/local/bin:$PATH.
In addition, Java JDK is necessary for the Java Natural Interface (JNI) extension of Soufflé.
Soufflé is built by
cd souffle
export CXX=/usr/local/bin/g++-7 # use the version of g++ installed by brew
export CXXFLAGS=-fopenmp
export SOUFFLECPP=/usr/local/bin/cpp-7 # use the version of cpp installed by brew
sh ./bootstrap
./configure
make
With
make check
numerous unit tests and regression tests are performed. This may take up to 45min. However, this may be sped up with, for instance:
TESTSUITEFLAGS=-j8 make check
which will run 8 jobs at a time.
If you would like to install Soufflé in your system, specify an installation directory with ./configure --prefix=<install-dir>. The executable, scripts, and header files will be stored in the directory <install-dir>. Use an absolute path for <install-dir>. Type
make install
to install Soufflé. By setting the path variable
PATH=$PATH:<install-dir>/bin
the Soufflé commands souffle and souffle-profile are available to the users.
Create the following Datalog program and save it to reachable.dl.
// Type Node
.type Node
//
// Edge
//
.decl Edge (n:Node, m:Node)
Edge("0","1").
Edge("1","2").
Edge("2","3").
Edge("1","4").
//
// Reachable
//
.decl Reachable (n:Node, m:Node)
.output Reachable
Reachable(x,y) :- Edge(x,y).
Reachable(x,y) :- Edge(x,z), Reachable(z,y).
This program computes a transitive closure of the input graph that is given by the set of edges (facts for relation Edge). The following command evaluates the program and prints the output via option -D-.
souffle -D- reachable.dl
The command-line options for the tool are shown via command:
souffle -h
More Datalog examples can be found in the directory tests/evaluation/ of the repository.
The next topic is how to compile/execute Datalog programs with Soufflé.