diff options
author | Gaetan Lepage <gaetan@glepage.com> | 2023-06-14 10:18:15 +0200 |
---|---|---|
committer | Nick Cao <nickcao@nichi.co> | 2023-08-02 16:05:55 +0800 |
commit | e754f2946b9d101b94d8fea49cb545c17aa3846f (patch) | |
tree | 42ee3e10edddd38c4165dc70e52812009fcf468b | |
parent | 60eecf3cde5943546c56233fe5c24de5d5c7dd2c (diff) | |
download | nixpkgs-e754f2946b9d101b94d8fea49cb545c17aa3846f.tar nixpkgs-e754f2946b9d101b94d8fea49cb545c17aa3846f.tar.gz nixpkgs-e754f2946b9d101b94d8fea49cb545c17aa3846f.tar.bz2 nixpkgs-e754f2946b9d101b94d8fea49cb545c17aa3846f.tar.lz nixpkgs-e754f2946b9d101b94d8fea49cb545c17aa3846f.tar.xz nixpkgs-e754f2946b9d101b94d8fea49cb545c17aa3846f.tar.zst nixpkgs-e754f2946b9d101b94d8fea49cb545c17aa3846f.zip |
buildBazelPackage: add support for bazel run targets
-rw-r--r-- | pkgs/build-support/build-bazel-package/default.nix | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index f9de0ad468b..3ffff74f70e 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -10,9 +10,12 @@ args@{ , bazelFlags ? [] , bazelBuildFlags ? [] , bazelTestFlags ? [] +, bazelRunFlags ? [] +, runTargetFlags ? [] , bazelFetchFlags ? [] -, bazelTargets +, bazelTargets ? [] , bazelTestTargets ? [] +, bazelRunTarget ? null , buildAttrs , fetchAttrs @@ -46,17 +49,23 @@ args@{ let fArgs = removeAttrs args [ "buildAttrs" "fetchAttrs" "removeRulesCC" ] // { - name = name; - bazelFlags = bazelFlags; - bazelBuildFlags = bazelBuildFlags; - bazelTestFlags = bazelTestFlags; - bazelFetchFlags = bazelFetchFlags; - bazelTestTargets = bazelTestTargets; - dontAddBazelOpts = dontAddBazelOpts; + inherit + name + bazelFlags + bazelBuildFlags + bazelTestFlags + bazelRunFlags + runTargetFlags + bazelFetchFlags + bazelTargets + bazelTestTargets + bazelRunTarget + dontAddBazelOpts + ; }; fBuildAttrs = fArgs // buildAttrs; fFetchAttrs = fArgs // removeAttrs fetchAttrs [ "sha256" ]; - bazelCmd = { cmd, additionalFlags, targets }: + bazelCmd = { cmd, additionalFlags, targets, targetRunFlags ? [ ] }: lib.optionalString (targets != [ ]) '' # See footnote called [USER and BAZEL_USE_CPP_ONLY_TOOLCHAIN variables] BAZEL_USE_CPP_ONLY_TOOLCHAIN=1 \ @@ -73,7 +82,8 @@ let "''${host_linkopts[@]}" \ $bazelFlags \ ${lib.strings.concatStringsSep " " additionalFlags} \ - ${lib.strings.concatStringsSep " " targets} + ${lib.strings.concatStringsSep " " targets} \ + ${lib.optionalString (targetRunFlags != []) " -- " + lib.strings.concatStringsSep " " targetRunFlags} ''; # we need this to chmod dangling symlinks on darwin, gnu coreutils refuses to do so: # chmod: cannot operate on dangling symlink '$symlink' @@ -262,6 +272,15 @@ stdenv.mkDerivation (fBuildAttrs // { targets = fBuildAttrs.bazelTargets; } } + ${ + bazelCmd { + cmd = "run"; + additionalFlags = fBuildAttrs.bazelRunFlags ++ [ "--jobs" "$NIX_BUILD_CORES" ]; + # Bazel run only accepts a single target, but `bazelCmd` expects `targets` to be a list. + targets = lib.optionals (fBuildAttrs.bazelRunTarget != null) [ fBuildAttrs.bazelRunTarget ]; + targetRunFlags = fBuildAttrs.runTargetFlags; + } + } runHook postBuild ''; }) |