Commit 1b92d2f2 authored by Benjamin Sparks's avatar Benjamin Sparks
Browse files

versionCheckHook: consider `NIX_MAIN_PROGRAM` as a fallback for `versionCheckProgram`

Should `versionCheckProgram` not be specified, the hook now first defaults to
`$outputBin/bin/$NIX_MAIN_PROGRAM` before considering `$outputBin/bin/$pname`.
Falling back to $pname will also emit a warning now, similar to that of
`lib.getExe`.
parent 98380fcf
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -38,18 +38,19 @@ versionCheckHook(){
    : "${versionCheckKeepEnvironment:=}"

    local cmdProgram cmdArg echoPrefix
    if [[ -z "${versionCheckProgram-}" ]]; then
        if [[ -z "${pname-}" ]]; then
            echo "both \$pname and \$versionCheckProgram are empty, so" \
                "we don't know which program to run the versionCheckPhase" \
                "upon" >&2
            exit 2
        else
            cmdProgram="${!outputBin}/bin/$pname"
        fi
    else
    if [[ ! -z "${versionCheckProgram-}" ]]; then
        cmdProgram="$versionCheckProgram"
    elif [[ ! -z "${NIX_MAIN_PROGRAM-}" ]]; then
        cmdProgram="${!outputBin}/bin/${NIX_MAIN_PROGRAM}"
    elif [[ ! -z "${pname-}" ]]; then
        cmdProgram="${!outputBin}/bin/${pname}"
    else
        echo "versionCheckHook: \$NIX_MAIN_PROGRAM, \$versionCheckProgram and \$pname are all empty, so" \
            "we don't know how to run the versionCheckPhase." \
            "To fix this, set one of \`meta.mainProgram\` or \`versionCheckProgram\`." >&2
        exit 2
    fi

    if [[ ! -x "$cmdProgram" ]]; then
        echo "versionCheckHook: $cmdProgram was not found, or is not an executable" >&2
        exit 2