just.setupHook: init

Adapted from the Ninja setup hook.  This will mean that adding just to
nativeBuildInputs is enough to have a package be automatically built
with it, matching make, bmake, ninja, etc.

Currently, we have two packages in Nixpkgs that use just, dogdns and
kabeljau.  kabeljau follows the expected conventions, while dogdns
does not.  I expect there to be more packages using just in future,
following these conventions, because all of the packages in system76's
in-progress COSMIC desktop environment use just, and follow the
conventions.
This commit is contained in:
Alyssa Ross 2023-07-18 18:17:22 +00:00
parent 5d74a825b5
commit 6d2033e2b9
3 changed files with 64 additions and 0 deletions

View File

@ -72,6 +72,8 @@ rustPlatform.buildRustPackage rec {
--zsh completions/just.zsh
'';
setupHook = ./setup-hook.sh;
passthru.updateScript = nix-update-script { };
meta = with lib; {

View File

@ -0,0 +1,58 @@
justBuildPhase() {
runHook preBuild
local flagsArray=($justFlags "${justFlagsArray[@]}")
echoCmd 'build flags' "${flagsArray[@]}"
just "${flagsArray[@]}"
runHook postBuild
}
justCheckPhase() {
runHook preCheck
if [ -z "${checkTarget:-}" ]; then
if just -n test >/dev/null 2>&1; then
checkTarget=test
fi
fi
if [ -z "${checkTarget:-}" ]; then
echo "no test target found in just, doing nothing"
else
local flagsArray=(
$justFlags "${justFlagsArray[@]}"
$checkTarget
)
echoCmd 'check flags' "${flagsArray[@]}"
just "${flagsArray[@]}"
fi
runHook postCheck
}
justInstallPhase() {
runHook preInstall
# shellcheck disable=SC2086
local flagsArray=($justFlags "${justFlagsArray[@]}" ${installTargets:-install})
echoCmd 'install flags' "${flagsArray[@]}"
just "${flagsArray[@]}"
runHook postInstall
}
if [ -z "${dontUseJustBuild-}" -a -z "${buildPhase-}" ]; then
buildPhase=justBuildPhase
fi
if [ -z "${dontUseJustCheck-}" -a -z "${checkPhase-}" ]; then
checkPhase=justCheckPhase
fi
if [ -z "${dontUseJustInstall-}" -a -z "${installPhase-}" ]; then
installPhase=justInstallPhase
fi

View File

@ -41,6 +41,10 @@ rustPlatform.buildRustPackage rec {
};
};
dontUseJustBuild = true;
dontUseJustCheck = true;
dontUseJustInstall = true;
postPatch = ''
# update Cargo.lock to work with openssl 3
ln -sf ${./Cargo.lock} Cargo.lock