Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 111 lines 2.6 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchurl, 5 ocaml, 6 zlib, 7 which, 8 eprover, 9 makeWrapper, 10 coq, 11}: 12stdenv.mkDerivation rec { 13 pname = "satallax"; 14 version = "2.7"; 15 16 strictDeps = true; 17 18 nativeBuildInputs = [ 19 makeWrapper 20 ocaml 21 which 22 eprover 23 coq 24 ]; 25 buildInputs = [ zlib ]; 26 27 src = fetchurl { 28 url = "https://www.ps.uni-saarland.de/~cebrown/satallax/downloads/${pname}-${version}.tar.gz"; 29 sha256 = "1kvxn8mc35igk4vigi5cp7w3wpxk2z3bgwllfm4n3h2jfs0vkpib"; 30 }; 31 32 patches = [ 33 # GCC9 doesn't allow default value in friend declaration. 34 ./fix-declaration-gcc9.patch 35 ]; 36 37 prePatch = '' 38 patch -p1 -i ${../avy/minisat-fenv.patch} -d minisat 39 ''; 40 41 preConfigure = '' 42 mkdir fake-tools 43 echo "echo 'Nix-build-host.localdomain'" > fake-tools/hostname 44 chmod a+x fake-tools/hostname 45 export PATH="$PATH:$PWD/fake-tools" 46 47 ( 48 cd picosat-* 49 ./configure 50 make 51 ) 52 export PATH="$PATH:$PWD/libexec/satallax" 53 54 mkdir -p "$out/libexec/satallax" 55 cp picosat-*/picosat picosat-*/picomus "$out/libexec/satallax" 56 57 ( 58 cd minisat 59 export MROOT=$PWD 60 cd core 61 make 62 cd ../simp 63 make 64 ) 65 ''; 66 67 # error: invalid suffix on literal; C++11 requires a space between literal and identifier 68 env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-Wno-reserved-user-defined-literal"; 69 70 installPhase = '' 71 mkdir -p "$out/share/doc/satallax" "$out/bin" "$out/lib" "$out/lib/satallax" 72 cp bin/satallax.opt "$out/bin/satallax" 73 wrapProgram "$out/bin/satallax" \ 74 --suffix PATH : "${ 75 lib.makeBinPath [ 76 coq 77 eprover 78 ] 79 }:$out/libexec/satallax" \ 80 --add-flags "-M" --add-flags "$out/lib/satallax/modes" 81 82 cp LICENSE README "$out/share/doc/satallax" 83 84 cp bin/*.so "$out/lib" 85 86 cp -r modes "$out/lib/satallax/" 87 cp -r problems "$out/lib/satallax/" 88 cp -r coq* "$out/lib/satallax/" 89 ''; 90 91 doCheck = stdenv.hostPlatform.isLinux; 92 93 checkPhase = '' 94 runHook preCheck 95 if bash ./test | grep ERROR; then 96 echo "Tests failed" 97 exit 1 98 fi 99 runHook postCheck 100 ''; 101 102 meta = { 103 description = "Automated theorem prover for higher-order logic"; 104 mainProgram = "satallax"; 105 license = lib.licenses.mit; 106 maintainers = [ lib.maintainers.raskin ]; 107 platforms = lib.platforms.unix; 108 downloadPage = "http://www.ps.uni-saarland.de/~cebrown/satallax/downloads.php"; 109 homepage = "http://www.ps.uni-saarland.de/~cebrown/satallax/index.php"; 110 }; 111}