diff options
Diffstat (limited to 'pkgs/build-support/build-bazel-package')
-rw-r--r-- | pkgs/build-support/build-bazel-package/default.nix | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index a1a38484386..be256b8e591 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -4,10 +4,30 @@ , lib }: -args@{ name, bazelFlags ? [], bazelBuildFlags ? [], bazelFetchFlags ? [], bazelTarget, buildAttrs, fetchAttrs, ... }: +args@{ + name +, bazelFlags ? [] +, bazelBuildFlags ? [] +, bazelFetchFlags ? [] +, bazelTarget +, buildAttrs +, fetchAttrs + +# Newer versions of Bazel are moving away from built-in rules_cc and instead +# allow fetching it as an external dependency in a WORKSPACE file[1]. If +# removed in the fixed-output fetch phase, building will fail to download it. +# This can be seen e.g. in #73097 +# +# This option allows configuring the removal of rules_cc in cases where a +# project depends on it via an external dependency. +# +# [1]: https://github.com/bazelbuild/rules_cc +, removeRulesCC ? true +, ... +}: let - fArgs = removeAttrs args [ "buildAttrs" "fetchAttrs" ]; + fArgs = removeAttrs args [ "buildAttrs" "fetchAttrs" "removeRulesCC" ]; fBuildAttrs = fArgs // buildAttrs; fFetchAttrs = fArgs // removeAttrs fetchAttrs [ "sha256" ]; @@ -60,7 +80,7 @@ in stdenv.mkDerivation (fBuildAttrs // { # Remove all built in external workspaces, Bazel will recreate them when building rm -rf $bazelOut/external/{bazel_tools,\@bazel_tools.marker} - rm -rf $bazelOut/external/{rules_cc,\@rules_cc.marker} + ${if removeRulesCC then "rm -rf $bazelOut/external/{rules_cc,\\@rules_cc.marker}" else ""} rm -rf $bazelOut/external/{embedded_jdk,\@embedded_jdk.marker} rm -rf $bazelOut/external/{local_*,\@local_*.marker} |