My personal project and infrastructure archive
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nomicon/pkgs/applications/science/logic/monosat/default.nix

70 lines
2.0 KiB

{ stdenv, fetchFromGitHub, cmake, zlib, gmp, jdk8,
# The JDK we use on Darwin currenly makes extensive use of rpaths which are
# annoying and break the python library, so let's not bother for now
includeJava ? !stdenv.hostPlatform.isDarwin, includeGplCode ? true }:
with stdenv.lib;
let
boolToCmake = x: if x then "ON" else "OFF";
rev = "1.8.0";
sha256 = "0q3a8x3iih25xkp2bm842sm2hxlb8hxlls4qmvj7vzwrh4lvsl7b";
pname = "monosat";
version = rev;
src = fetchFromGitHub {
owner = "sambayless";
repo = pname;
inherit rev sha256;
};
core = stdenv.mkDerivation {
name = "${pname}-${version}";
inherit src;
buildInputs = [ cmake zlib gmp jdk8 ];
cmakeFlags = [
"-DBUILD_STATIC=OFF"
"-DJAVA=${boolToCmake includeJava}"
"-DGPL=${boolToCmake includeGplCode}"
];
postInstall = optionalString includeJava ''
mkdir -p $out/share/java
cp monosat.jar $out/share/java
'';
passthru = { inherit python; };
meta = {
description = "SMT solver for Monotonic Theories";
platforms = platforms.unix;
license = if includeGplCode then licenses.gpl2 else licenses.mit;
homepage = https://github.com/sambayless/monosat;
maintainers = [ maintainers.acairncross ];
};
};
python = { buildPythonPackage, cython }: buildPythonPackage {
inherit pname version src;
# The top-level "source" is what fetchFromGitHub gives us. The rest is inside the repo
sourceRoot = "source/src/monosat/api/python/";
propagatedBuildInputs = [ core cython ];
# This tells setup.py to use cython, which should produce faster bindings
MONOSAT_CYTHON = true;
# The relative paths here don't make sense for our Nix build
# TODO: do we want to just reference the core monosat library rather than copying the
# shared lib? The current setup.py copies the .dylib/.so...
postPatch = ''
substituteInPlace setup.py \
--replace 'library_dir = "../../../../"' 'library_dir = "${core}/lib/"'
'';
};
in core