bmake: add setupHook
With this change, nativeBuildInputs = [ bmake ]; will cause bmake to be used instead of GNU make, but with the usual stdenv API. Packages using bmake will no longer need to implement their own {build,check,dist}Phase.
This commit is contained in:
parent
262b73f8af
commit
53b88f966e
@ -18,6 +18,8 @@ stdenv.mkDerivation rec {
|
|||||||
./fix-unexport-env-test.patch
|
./fix-unexport-env-test.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
|
setupHook = ./setup-hook.sh;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Portable version of NetBSD 'make'";
|
description = "Portable version of NetBSD 'make'";
|
||||||
homepage = "http://www.crufty.net/help/sjg/bmake.html";
|
homepage = "http://www.crufty.net/help/sjg/bmake.html";
|
||||||
|
117
pkgs/development/tools/build-managers/bmake/setup-hook.sh
Normal file
117
pkgs/development/tools/build-managers/bmake/setup-hook.sh
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
bmakeBuildPhase() {
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
local flagsArray=(
|
||||||
|
${enableParallelBuilding:+-j${NIX_BUILD_CORES}}
|
||||||
|
SHELL=$SHELL
|
||||||
|
$makeFlags ${makeFlagsArray+"${makeFlagsArray[@]}"}
|
||||||
|
$buildFlags ${buildFlagsArray+"${buildFlagsArray[@]}"}
|
||||||
|
)
|
||||||
|
|
||||||
|
echoCmd 'build flags' "${flagsArray[@]}"
|
||||||
|
bmake ${makefile:+-f $makefile} "${flagsArray[@]}"
|
||||||
|
unset flagsArray
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "${dontUseBmakeBuild-}" -a -z "${buildPhase-}" ]; then
|
||||||
|
buildPhase=bmakeBuildPhase
|
||||||
|
fi
|
||||||
|
|
||||||
|
bmakeCheckPhase() {
|
||||||
|
runHook preCheck
|
||||||
|
|
||||||
|
if [ -z "${checkTarget:-}" ]; then
|
||||||
|
#TODO(@oxij): should flagsArray influence make -n?
|
||||||
|
if bmake -n ${makefile:+-f $makefile} check >/dev/null 2>&1; then
|
||||||
|
checkTarget=check
|
||||||
|
elif bmake -n ${makefile:+-f $makefile} test >/dev/null 2>&1; then
|
||||||
|
checkTarget=test
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${checkTarget:-}" ]; then
|
||||||
|
echo "no test target found in bmake, doing nothing"
|
||||||
|
else
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
local flagsArray=(
|
||||||
|
${enableParallelChecking:+-j${NIX_BUILD_CORES}}
|
||||||
|
SHELL=$SHELL
|
||||||
|
# Old bash empty array hack
|
||||||
|
$makeFlags ${makeFlagsArray+"${makeFlagsArray[@]}"}
|
||||||
|
${checkFlags:-VERBOSE=y} ${checkFlagsArray+"${checkFlagsArray[@]}"}
|
||||||
|
${checkTarget}
|
||||||
|
)
|
||||||
|
|
||||||
|
echoCmd 'check flags' "${flagsArray[@]}"
|
||||||
|
bmake ${makefile:+-f $makefile} "${flagsArray[@]}"
|
||||||
|
|
||||||
|
unset flagsArray
|
||||||
|
fi
|
||||||
|
|
||||||
|
runHook postCheck
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "${dontUseBmakeCheck-}" -a -z "${checkPhase-}" ]; then
|
||||||
|
checkPhase=bmakeCheckPhase
|
||||||
|
fi
|
||||||
|
|
||||||
|
bmakeInstallPhase() {
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
if [ -n "$prefix" ]; then
|
||||||
|
mkdir -p "$prefix"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
local flagsArray=(
|
||||||
|
SHELL=$SHELL
|
||||||
|
# Old bash empty array hack
|
||||||
|
$makeFlags ${makeFlagsArray+"${makeFlagsArray[@]}"}
|
||||||
|
$installFlags ${installFlagsArray+"${installFlagsArray[@]}"}
|
||||||
|
${installTargets:-install}
|
||||||
|
)
|
||||||
|
|
||||||
|
echoCmd 'install flags' "${flagsArray[@]}"
|
||||||
|
bmake ${makefile:+-f $makefile} "${flagsArray[@]}"
|
||||||
|
unset flagsArray
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "${dontUseBmakeInstall-}" -a -z "${installPhase-}" ]; then
|
||||||
|
installPhase=bmakeInstallPhase
|
||||||
|
fi
|
||||||
|
|
||||||
|
bmakeDistPhase() {
|
||||||
|
runHook preDist
|
||||||
|
|
||||||
|
if [ -n "$prefix" ]; then
|
||||||
|
mkdir -p "$prefix"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Old bash empty array hack
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
local flagsArray=(
|
||||||
|
$distFlags ${distFlagsArray+"${distFlagsArray[@]}"} ${distTarget:-dist}
|
||||||
|
)
|
||||||
|
|
||||||
|
echo 'dist flags: %q' "${flagsArray[@]}"
|
||||||
|
bmake ${makefile:+-f $makefile} "${flagsArray[@]}"
|
||||||
|
|
||||||
|
if [ "${dontCopyDist:-0}" != 1 ]; then
|
||||||
|
mkdir -p "$out/tarballs"
|
||||||
|
|
||||||
|
# Note: don't quote $tarballs, since we explicitly permit
|
||||||
|
# wildcards in there.
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
cp -pvd ${tarballs:-*.tar.gz} "$out/tarballs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
runHook postDist
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "${dontUseBmakeDist-}" -a -z "${distPhase-}" ]; then
|
||||||
|
distPhase=bmakeDistPhase
|
||||||
|
fi
|
Loading…
x
Reference in New Issue
Block a user