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
|
||||
}:
|
||||
|
||||
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";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue