forked from mirrors/nixpkgs
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:
parent
2b5ceb285a
commit
aa385c97e5
|
@ -6,52 +6,39 @@
|
||||||
, hareThirdParty
|
, hareThirdParty
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "bonsai";
|
pname = "bonsai";
|
||||||
version = "1.0.2";
|
version = "1.0.2";
|
||||||
|
|
||||||
src = fetchFromSourcehut {
|
src = fetchFromSourcehut {
|
||||||
owner = "~stacyharper";
|
owner = "~stacyharper";
|
||||||
repo = "bonsai";
|
repo = "bonsai";
|
||||||
rev = "v${version}";
|
rev = "v${finalAttrs.version}";
|
||||||
hash = "sha256-Yosf07KUOQv4O5111tLGgI270g0KVGwzdTPtPOsTcP8=";
|
hash = "sha256-Yosf07KUOQv4O5111tLGgI270g0KVGwzdTPtPOsTcP8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace Makefile \
|
|
||||||
--replace 'hare build' 'hare build $(HARE_TARGET_FLAGS)'
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
hare
|
hare
|
||||||
|
hareThirdParty.hare-ev
|
||||||
|
hareThirdParty.hare-json
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = with hareThirdParty; [
|
makeFlags = [
|
||||||
hare-ev
|
"PREFIX=${builtins.placeholder "out"}"
|
||||||
hare-json
|
"HARECACHE=.harecache"
|
||||||
|
"HAREFLAGS=-qa${stdenv.hostPlatform.uname.processor}"
|
||||||
];
|
];
|
||||||
|
|
||||||
env.HARE_TARGET_FLAGS =
|
enableParallelBuilding = true;
|
||||||
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)" ];
|
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace Makefile \
|
||||||
|
--replace 'hare build' 'hare build $(HAREFLAGS)' \
|
||||||
|
--replace 'hare test' 'hare test $(HAREFLAGS)'
|
||||||
|
'';
|
||||||
|
|
||||||
passthru.updateScript = gitUpdater {
|
passthru.updateScript = gitUpdater {
|
||||||
rev-prefix = "v";
|
rev-prefix = "v";
|
||||||
};
|
};
|
||||||
|
@ -59,8 +46,9 @@ stdenv.mkDerivation rec {
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Finite State Machine structured as a tree";
|
description = "Finite State Machine structured as a tree";
|
||||||
homepage = "https://git.sr.ht/~stacyharper/bonsai";
|
homepage = "https://git.sr.ht/~stacyharper/bonsai";
|
||||||
license = licenses.agpl3;
|
license = licenses.agpl3Plus;
|
||||||
maintainers = with maintainers; [ colinsane ];
|
maintainers = with maintainers; [ colinsane ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
|
mainProgram = "bonsaictl";
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
|
|
Loading…
Reference in a new issue