diff options
Diffstat (limited to 'pkgs/build-support/coq/default.nix')
-rw-r--r-- | pkgs/build-support/coq/default.nix | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/pkgs/build-support/coq/default.nix b/pkgs/build-support/coq/default.nix index a681bbda557..52ef17f05c0 100644 --- a/pkgs/build-support/coq/default.nix +++ b/pkgs/build-support/coq/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, coqPackages, coq, fetchzip }@args: +{ lib, stdenv, coqPackages, coq, which, fetchzip }@args: let lib = import ./extra-lib.nix {inherit (args) lib;}; in with builtins; with lib; let @@ -15,8 +15,12 @@ in releaseRev ? (v: v), displayVersion ? {}, release ? {}, + buildInputs ? [], + nativeBuildInputs ? [], extraBuildInputs ? [], extraNativeBuildInputs ? [], + overrideBuildInputs ? [], + overrideNativeBuildInputs ? [], namePrefix ? [ "coq" ], enableParallelBuilding ? true, extraInstallFlags ? [], @@ -35,7 +39,11 @@ let args-to-remove = foldl (flip remove) ([ "version" "fetcher" "repo" "owner" "domain" "releaseRev" "displayVersion" "defaultVersion" "useMelquiondRemake" - "release" "extraBuildInputs" "extraNativeBuildInputs" "extraPropagatedBuildInputs" "namePrefix" + "release" + "buildInputs" "nativeBuildInputs" + "extraBuildInputs" "extraNativeBuildInputs" + "overrideBuildInputs" "overrideNativeBuildInputs" + "namePrefix" "meta" "useDune2ifVersion" "useDune2" "opam-name" "extraInstallFlags" "setCOQBIN" "mlPlugin" "dropAttrs" "dropDerivationAttrs" "keepAttrs" ] ++ dropAttrs) keepAttrs; @@ -57,9 +65,16 @@ let ] "") + optionalString (v == null) "-broken"; append-version = p: n: p + display-pkg n "" coqPackages.${n}.version + "-"; prefix-name = foldl append-version "" namePrefix; - var-coqlib-install = - (optionalString (versions.isGe "8.7" coq.coq-version || coq.coq-version == "dev") "COQMF_") + "COQLIB"; useDune2 = args.useDune2 or (useDune2ifVersion fetched.version); + coqlib-flags = switch coq.coq-version [ + { case = v: versions.isLe "8.6" v && v != "dev" ; + out = [ "COQLIB=$(out)/lib/coq/${coq.coq-version}/" ]; } + ] [ "COQLIBINSTALL=$(out)/lib/coq/${coq.coq-version}/user-contrib" + "COQPLUGININSTALL=$(OCAMLFIND_DESTDIR)" ]; + docdir-flags = switch coq.coq-version [ + { case = v: versions.isLe "8.6" v && v != "dev"; + out = [ "DOCDIR=$(out)/share/coq/${coq.coq-version}/" ]; } + ] [ "COQDOCINSTALL=$(out)/share/coq/${coq.coq-version}/user-contrib" ]; in stdenv.mkDerivation (removeAttrs ({ @@ -68,12 +83,13 @@ stdenv.mkDerivation (removeAttrs ({ inherit (fetched) version src; - nativeBuildInputs = [ coq ] - ++ optionals useDune2 [coq.ocaml coq.ocamlPackages.dune_2] - ++ optionals mlPlugin coq.ocamlNativeBuildInputs - ++ extraNativeBuildInputs; - buildInputs = optionals mlPlugin coq.ocamlBuildInputs - ++ extraBuildInputs; + nativeBuildInputs = args.overrideNativeBuildInputs + or ([ which coq.ocamlPackages.findlib ] + ++ optional useDune2 coq.ocamlPackages.dune_2 + ++ optional (useDune2 || mlPlugin) coq.ocaml + ++ (args.nativeBuildInputs or []) ++ extraNativeBuildInputs); + buildInputs = args.overrideBuildInputs + or ([ coq ] ++ (args.buildInputs or []) ++ extraBuildInputs); inherit enableParallelBuilding; meta = ({ platforms = coq.meta.platforms; } // @@ -88,9 +104,7 @@ stdenv.mkDerivation (removeAttrs ({ // (optionalAttrs setCOQBIN { COQBIN = "${coq}/bin/"; }) // (optionalAttrs (!args?installPhase && !args?useMelquiondRemake) { installFlags = - [ "${var-coqlib-install}=$(out)/lib/coq/${coq.coq-version}/" ] ++ - optional (match ".*doc$" (args.installTargets or "") != null) - "DOCDIR=$(out)/share/coq/${coq.coq-version}/" ++ + [ "DESTDIR=$(out)" ] ++ coqlib-flags ++ docdir-flags ++ extraInstallFlags; }) // (optionalAttrs useDune2 { |