about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/souffle/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/souffle/default.nix')
-rw-r--r--nixpkgs/pkgs/development/compilers/souffle/default.nix53
1 files changed, 53 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/souffle/default.nix b/nixpkgs/pkgs/development/compilers/souffle/default.nix
new file mode 100644
index 000000000000..87eac5418625
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/souffle/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub
+, perl, ncurses, zlib, sqlite, libffi
+, autoreconfHook, mcpp, bison, flex, doxygen, graphviz
+, makeWrapper
+}:
+
+
+let
+  toolsPath = stdenv.lib.makeBinPath [ mcpp ];
+in
+stdenv.mkDerivation rec {
+  name    = "souffle-${version}";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner  = "souffle-lang";
+    repo   = "souffle";
+    rev    = version;
+    sha256 = "06sa250z3v8hs91p6cqdzlwwaq96j6zmfrrld1fzd1b620aa5iys";
+  };
+
+  nativeBuildInputs = [ autoreconfHook bison flex mcpp doxygen graphviz makeWrapper perl ];
+  buildInputs = [ ncurses zlib sqlite libffi ];
+
+  # these propagated inputs are needed for the compiled Souffle mode to work,
+  # since generated compiler code uses them. TODO: maybe write a g++ wrapper
+  # that adds these so we can keep the propagated inputs clean?
+  propagatedBuildInputs = [ ncurses zlib sqlite libffi ];
+
+  # see 565a8e73e80a1bedbb6cc037209c39d631fc393f and parent commits upstream for
+  # Wno-error fixes
+  patchPhase = ''
+    substituteInPlace ./src/Makefile.am \
+      --replace '-Werror' '-Werror -Wno-error=deprecated -Wno-error=other'
+
+    substituteInPlace configure.ac \
+      --replace "m4_esyscmd([git describe --tags --always | tr -d '\n'])" "${version}"
+  '';
+
+  postInstall = ''
+    wrapProgram "$out/bin/souffle" --prefix PATH : "${toolsPath}"
+  '';
+
+  outputs = [ "out" ];
+
+  meta = with stdenv.lib; {
+    description = "A translator of declarative Datalog programs into the C++ language";
+    homepage    = "http://souffle-lang.github.io/";
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice copumpkin wchresta ];
+    license     = licenses.upl;
+  };
+}