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
|
||||
would be challenging to review, difficult to test, and will cause unnecessary
|
||||
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
|
||||
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
|
||||
addEnvHooks "$targetOffset" addOCamlPath
|
||||
|
@ -51,6 +60,10 @@ stdenv.mkDerivation rec {
|
|||
preInstallHooks+=(createOcamlDestDir)
|
||||
# run even in nix-shell, and even without buildInputs
|
||||
addEnvHooks "$hostOffset" exportOcamlDestDir
|
||||
# runs after all calls to addOCamlPath
|
||||
if [[ -z "''${dontDetectOcamlConflicts-}" ]]; then
|
||||
postHooks+=("detectOcamlConflicts")
|
||||
fi
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
|
Loading…
Reference in a new issue