lol
1{ lib, stdenv, fetchFromGitHub
2, bash-completion, perl, ncurses, zlib, sqlite, libffi
3, mcpp, cmake, bison, flex, doxygen, graphviz
4, makeWrapper
5}:
6
7
8let
9 toolsPath = lib.makeBinPath [ mcpp ];
10in
11stdenv.mkDerivation rec {
12 pname = "souffle";
13 version = "2.3";
14
15 src = fetchFromGitHub {
16 owner = "souffle-lang";
17 repo = "souffle";
18 rev = version;
19 sha256 = "sha256-wdTBSmyA2I+gaSV577NNKA2oY2fdVTGmvV7h15NY1tU=";
20 };
21
22 nativeBuildInputs = [ bison cmake flex mcpp doxygen graphviz makeWrapper perl ];
23 buildInputs = [ bash-completion ncurses zlib sqlite libffi ];
24 # these propagated inputs are needed for the compiled Souffle mode to work,
25 # since generated compiler code uses them. TODO: maybe write a g++ wrapper
26 # that adds these so we can keep the propagated inputs clean?
27 propagatedBuildInputs = [ ncurses zlib sqlite libffi ];
28
29 cmakeFlags = [ "-DSOUFFLE_GIT=OFF" ];
30
31 postInstall = ''
32 wrapProgram "$out/bin/souffle" --prefix PATH : "${toolsPath}"
33 '';
34
35 outputs = [ "out" ];
36
37 meta = with lib; {
38 broken = stdenv.isDarwin;
39 description = "A translator of declarative Datalog programs into the C++ language";
40 homepage = "https://souffle-lang.github.io/";
41 platforms = platforms.unix;
42 maintainers = with maintainers; [ thoughtpolice copumpkin wchresta ];
43 license = licenses.upl;
44 };
45}