Commit 6d2033e2 authored by Alyssa Ross's avatar Alyssa Ross
Browse files

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.
parent 5d74a825
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -72,6 +72,8 @@ rustPlatform.buildRustPackage rec {
      --zsh completions/just.zsh
  '';

  setupHook = ./setup-hook.sh;

  passthru.updateScript = nix-update-script { };

  meta = with lib; {
+58 −0
Original line number Diff line number Diff line
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
+4 −0
Original line number Diff line number Diff line
@@ -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