From 2b5ceb285a522aef1dd741d871e6ee420c09a045 Mon Sep 17 00:00:00 2001 From: Gustavo Coutinho de Souza Date: Mon, 22 Jan 2024 21:41:46 -0300 Subject: [PATCH 1/2] bonsai: move to pkgs/by-name --- .../misc/bonsai/default.nix => by-name/bo/bonsai/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{tools/misc/bonsai/default.nix => by-name/bo/bonsai/package.nix} (100%) diff --git a/pkgs/tools/misc/bonsai/default.nix b/pkgs/by-name/bo/bonsai/package.nix similarity index 100% rename from pkgs/tools/misc/bonsai/default.nix rename to pkgs/by-name/bo/bonsai/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f4315781776c..104dd87a71c5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1751,8 +1751,6 @@ with pkgs; bikeshed = python3Packages.callPackage ../applications/misc/bikeshed { }; - bonsai = callPackage ../tools/misc/bonsai { }; - cie-middleware-linux = callPackage ../tools/security/cie-middleware-linux { }; cidrgrep = callPackage ../tools/text/cidrgrep { }; From aa385c97e55ae330517ae7245081de33d1da38bf Mon Sep 17 00:00:00 2001 From: Gustavo Coutinho de Souza Date: Mon, 22 Jan 2024 21:49:12 -0300 Subject: [PATCH 2/2] 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. --- pkgs/by-name/bo/bonsai/package.nix | 48 +++++++++++------------------- 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/pkgs/by-name/bo/bonsai/package.nix b/pkgs/by-name/bo/bonsai/package.nix index 1148eb6e98d3..da5f81c928d5 100644 --- a/pkgs/by-name/bo/bonsai/package.nix +++ b/pkgs/by-name/bo/bonsai/package.nix @@ -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"; }; -} +})