bonsai: refactor derivation

1. Remove `rec` keyword in favor of passing a function to
   `stdenv.mkDerivation`;
2. Reorder attributes;
3. Put build only dependencies --- Hare's third party libraries --- into
   `nativeBuildInputs`;
4. Remove `preConfigure` hook in favor of setting the `HARECACHE` make
   variable;
5. Use `stdenv.hostPlatform.uname.processor` for setting the
   architecture needed for cross-compilation;
6. Substitute in place the `HAREFLAGS` make variable instead of the `-a`
   flag directly, which is now set on the make variable (this should be
   submitted upstream, since the make variable, as of now, does
   absolutely nothing);
8. Pass the `-q` flag to `HAREFLAGS` to avoid polluting the logs when
   hare is either being called with `test` or `build`;
9. Remove deprecated `agpl3` license in favor of `agpl3Plus`;
10. Add `bonsaictl` as `meta.mainProgram`; and
11. Enable parallel building.
This commit is contained in:
Gustavo Coutinho de Souza 2024-01-22 21:49:12 -03:00
parent 2b5ceb285a
commit aa385c97e5
No known key found for this signature in database
GPG Key ID: 59081FCB8F9AABB5

View File

@ -6,52 +6,39 @@
, hareThirdParty
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "bonsai";
version = "1.0.2";
src = fetchFromSourcehut {
owner = "~stacyharper";
repo = "bonsai";
rev = "v${version}";
rev = "v${finalAttrs.version}";
hash = "sha256-Yosf07KUOQv4O5111tLGgI270g0KVGwzdTPtPOsTcP8=";
};
postPatch = ''
substituteInPlace Makefile \
--replace 'hare build' 'hare build $(HARE_TARGET_FLAGS)'
'';
nativeBuildInputs = [
hare
hareThirdParty.hare-ev
hareThirdParty.hare-json
];
buildInputs = with hareThirdParty; [
hare-ev
hare-json
makeFlags = [
"PREFIX=${builtins.placeholder "out"}"
"HARECACHE=.harecache"
"HAREFLAGS=-qa${stdenv.hostPlatform.uname.processor}"
];
env.HARE_TARGET_FLAGS =
if stdenv.hostPlatform.isAarch64 then
"-a aarch64"
else if stdenv.hostPlatform.isRiscV64 then
"-a riscv64"
else if stdenv.hostPlatform.isx86_64 then
"-a x86_64"
else
"";
# TODO: hare setup-hook is supposed to do this for us.
# It does it correctly for native compilation, but not cross compilation: wrong offset?
env.HAREPATH = with hareThirdParty; "${hare-json}/src/hare/third-party:${hare-ev}/src/hare/third-party";
preConfigure = ''
export HARECACHE=$(mktemp -d)
'';
installFlags = [ "PREFIX=$(out)" ];
enableParallelBuilding = true;
doCheck = true;
postPatch = ''
substituteInPlace Makefile \
--replace 'hare build' 'hare build $(HAREFLAGS)' \
--replace 'hare test' 'hare test $(HAREFLAGS)'
'';
passthru.updateScript = gitUpdater {
rev-prefix = "v";
};
@ -59,8 +46,9 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "Finite State Machine structured as a tree";
homepage = "https://git.sr.ht/~stacyharper/bonsai";
license = licenses.agpl3;
license = licenses.agpl3Plus;
maintainers = with maintainers; [ colinsane ];
platforms = platforms.linux;
mainProgram = "bonsaictl";
};
}
})