Unverified Commit 21ed0237 authored by Peder Bergebakken Sundt's avatar Peder Bergebakken Sundt Committed by GitHub
Browse files

Merge pull request #269767 from onemoresuza/haredo

haredo: init at 1.0.5
parents 80bac0f6 68fee72c
Loading
Loading
Loading
Loading
+71 −0
Original line number Diff line number Diff line
{ stdenv
, lib
, fetchFromSourcehut
, hare
, scdoc
, nix-update-script
}:
stdenv.mkDerivation (finalAttrs: {
  pname = "haredo";
  version = "1.0.5";

  outputs = [ "out" "man" ];

  src = fetchFromSourcehut {
    owner = "~autumnull";
    repo = "haredo";
    rev = finalAttrs.version;
    hash = "sha256-gpui5FVRw3NKyx0AB/4kqdolrl5vkDudPOgjHc/IE4U=";
  };

  nativeBuildInputs = [
    hare
    scdoc
  ];

  preBuild = ''
    HARECACHE="$(mktemp -d --tmpdir harecache.XXXXXXXX)"
    export HARECACHE
    export PREFIX=${builtins.placeholder "out"}
  '';

  buildPhase = ''
    runHook preBuild

    ./bootstrap.sh

    runHook postBuild
  '';

  checkPhase = ''
    runHook preCheck

    ./bin/haredo test

    runHook postCheck
  '';

  installPhase = ''
    runHook preInstall

    ./bootstrap.sh install

    runHook postInstall
  '';

  dontConfigure = true;
  doCheck = true;

  setupHook = ./setup-hook.sh;

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

  meta = {
    description = "A simple and unix-idiomatic build automator";
    homepage = "https://sr.ht/~autumnull/haredo/";
    license = lib.licenses.wtfpl;
    maintainers = with lib.maintainers; [ onemoresuza ];
    mainProgram = "haredo";
    inherit (hare.meta) platforms badPlatforms;
  };
})
+69 −0
Original line number Diff line number Diff line
haredoBuildPhase() {
    runHook preBuild

    local buildTargets jobs
    read -ra buildTargets <<<"${haredoBuildTargets-}"
    echoCmd "haredo build targets" "${buildTargets[@]}"
    if [[ ! -v enableParallelBuilding || -n "${enableParallelBuilding-}" ]]; then
        jobs="${NIX_BUILD_CORES}"
    fi
    haredo ${jobs:+"-j${jobs}"} "${buildTargets[@]}"

    runHook postBuild
}

haredoCheckPhase() {
    runHook preCheck

    local checkTargets jobs

    if [[ -n "${haredoCheckTargets:-}" ]]; then
        read -ra checkTargets <<<"${haredoCheckTargets}"
    else
        for dofile in "check.do" "test.do"; do
            [[ -r "${dofile}" ]] && {
                checkTargets=("${dofile%".do"}")
                break
            }
        done
    fi

    if [[ -z "${checkTargets:-}" ]]; then
        printf -- 'haredoCheckPhase ERROR: no check targets were found' 1>&2
        exit 1
    else
        echoCmd "haredo check targets" "${checkTargets[@]}"
        if [[ ! -v enableParallelChecking || -n "${enableParallelChecking-}" ]]; then
            jobs="${NIX_BUILD_CORES}"
        fi
        haredo ${jobs:+"-j${jobs}"} "${checkTargets[@]}"
    fi

    runHook postCheck
}

haredoInstallPhase() {
    runHook preInstall

    local installTargets jobs
    read -ra installTargets <<<"${haredoInstallTargets:-"install"}"
    echoCmd "haredo install targets" "${installTargets[@]}"
    if [[ ! -v enableParallelInstalling || -n "${enableParallelInstalling-}" ]]; then
        jobs="${NIX_BUILD_CORES}"
    fi
    haredo ${jobs:+"-j${jobs}"} "${installTargets[@]}"

    runHook postInstall
}

if [[ -z "${dontUseHaredoBuild-}" && -z "${buildPhase-}" ]]; then
    buildPhase="haredoBuildPhase"
fi

if [[ -z "${dontUseHaredoCheck-}" && -z "${checkPhase-}" ]]; then
    checkPhase="haredoCheckPhase"
fi

if [[ -z "${dontUseHaredoInstall-}" && -z "${installPhase-}" ]]; then
    installPhase="haredoInstallPhase"
fi