Skip to content
This repository has been archived by the owner on Dec 20, 2017. It is now read-only.
Bernhard Scholz edited this page Mar 16, 2016 · 6 revisions

Building and Installation of Soufflé

Software Requirements

For building and installing Souffle, 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++.

Ubuntu/Debian Build

On a Ubuntu/Debian system, following command installs the necessary developer tools to compile and build Soufflé:

sudo apt-get install build-essential g++ automake autoconf bison flex doxygen openjdk-7-jdk

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 Build

On a MAC OS X system, following command installs the necessary packages:

brew update
brew reinstall gcc --without-multilib
brew install bison

and Soufflé is built by

cd souffle
export CXX=/usr/local/bin/g++-5
export CXXFLAGS=-fopenmp
export SOUFFLECPP=/usr/local/bin/cpp-5
sh ./bootstrap
./configure
make

Testing Soufflé

With

 make check

numerous unit tests and regression tests are performed. This may take up to 45min.

Installing Soufflé

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.

Running a Simple Example

Create the following Datalog program and save it to reachable.dl.

// Type Node
.type Node

//
// Edge
//
.decl Edge        (n:Node, n:Node)

Edge("0","1").
Edge("1","2").
Edge("2","3").
Edge("1","4").

//
// Reachable 
//

.decl Reachable   (n:Node, n:Node) output

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