70 lines
1.8 KiB
Nix
70 lines
1.8 KiB
Nix
{ stdenv, fetchFromGitHub, coq, ncurses, which
|
|
, graphviz, withDoc ? false
|
|
}:
|
|
|
|
let param =
|
|
|
|
if stdenv.lib.versionAtLeast coq.coq-version "8.7" then
|
|
{
|
|
version = "1.8.0";
|
|
sha256 = "07l40is389ih8bi525gpqs3qp4yb2kl11r9c8ynk1ifpjzpnabwp";
|
|
}
|
|
else if stdenv.lib.versionAtLeast coq.coq-version "8.6" then
|
|
{
|
|
version = "1.7.0";
|
|
sha256 = "0wnhj9nqpx2bw6n1l4i8jgrw3pjajvckvj3lr4vzjb3my2lbxdd1";
|
|
}
|
|
else if stdenv.lib.versionAtLeast coq.coq-version "8.5" then
|
|
{
|
|
version = "1.6.1";
|
|
sha256 = "1ilw6vm4dlsdv9cd7kmf0vfrh2kkzr45wrqr8m37miy0byzr4p9i";
|
|
}
|
|
else throw "No version of math-comp is available for Coq ${coq.coq-version}";
|
|
|
|
in
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "coq${coq.coq-version}-mathcomp-${version}";
|
|
|
|
# used in ssreflect
|
|
inherit (param) version;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "math-comp";
|
|
repo = "math-comp";
|
|
rev = "mathcomp-${param.version}";
|
|
inherit (param) sha256;
|
|
};
|
|
|
|
nativeBuildInputs = stdenv.lib.optionals withDoc [ graphviz ];
|
|
buildInputs = [ coq ncurses which ] ++ (with coq.ocamlPackages; [ ocaml findlib camlp5 ]);
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
buildFlags = stdenv.lib.optionalString withDoc "doc";
|
|
|
|
COQBIN = "${coq}/bin/";
|
|
|
|
preBuild = ''
|
|
patchShebangs etc/utils/ssrcoqdep || true
|
|
cd mathcomp
|
|
'';
|
|
|
|
installPhase = ''
|
|
make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
|
|
'' + stdenv.lib.optionalString withDoc ''
|
|
make -f Makefile.coq install-doc DOCDIR=$out/share/coq/${coq.coq-version}/
|
|
'';
|
|
|
|
meta = with stdenv.lib; {
|
|
homepage = http://ssr.msr-inria.inria.fr/;
|
|
license = licenses.cecill-b;
|
|
maintainers = [ maintainers.vbgl maintainers.jwiegley ];
|
|
platforms = coq.meta.platforms;
|
|
};
|
|
|
|
passthru = {
|
|
compatibleCoqVersions = v: builtins.elem v [ "8.5" "8.6" "8.7" "8.8" "8.9" ];
|
|
};
|
|
|
|
}
|