Merge pull request #205646 from symphorien/ocamlconflict
ocamlPackages.findlib: detect conflicts of version early
This commit is contained in:
commit
b55a8d3ad6
2 changed files with 18 additions and 0 deletions
|
@ -129,3 +129,8 @@ packaged libraries may still use the old spelling: maintainers are invited to
|
||||||
fix this when updating packages. Massive renaming is strongly discouraged as it
|
fix this when updating packages. Massive renaming is strongly discouraged as it
|
||||||
would be challenging to review, difficult to test, and will cause unnecessary
|
would be challenging to review, difficult to test, and will cause unnecessary
|
||||||
rebuild.
|
rebuild.
|
||||||
|
|
||||||
|
The build will automatically fail if two distinct versions of the same library
|
||||||
|
are added to `buildInputs` (which usually happens transitively because of
|
||||||
|
`propagatedBuildInputs`). Set `dontDetectOcamlConflicts` to true to disable this
|
||||||
|
behavior.
|
||||||
|
|
|
@ -44,6 +44,15 @@ stdenv.mkDerivation rec {
|
||||||
mkdir -p $OCAMLFIND_DESTDIR
|
mkdir -p $OCAMLFIND_DESTDIR
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
detectOcamlConflicts () {
|
||||||
|
local conflict
|
||||||
|
conflict="$(ocamlfind list |& grep "has multiple definitions" || true)"
|
||||||
|
if [[ -n "$conflict" ]]; then
|
||||||
|
echo "Conflicting ocaml packages detected";
|
||||||
|
echo "$conflict"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# run for every buildInput
|
# run for every buildInput
|
||||||
addEnvHooks "$targetOffset" addOCamlPath
|
addEnvHooks "$targetOffset" addOCamlPath
|
||||||
|
@ -51,6 +60,10 @@ stdenv.mkDerivation rec {
|
||||||
preInstallHooks+=(createOcamlDestDir)
|
preInstallHooks+=(createOcamlDestDir)
|
||||||
# run even in nix-shell, and even without buildInputs
|
# run even in nix-shell, and even without buildInputs
|
||||||
addEnvHooks "$hostOffset" exportOcamlDestDir
|
addEnvHooks "$hostOffset" exportOcamlDestDir
|
||||||
|
# runs after all calls to addOCamlPath
|
||||||
|
if [[ -z "''${dontDetectOcamlConflicts-}" ]]; then
|
||||||
|
postHooks+=("detectOcamlConflicts")
|
||||||
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
Loading…
Reference in a new issue