summary refs log tree commit diff
path: root/pkgs/build-support/build-bazel-package
diff options
context:
space:
mode:
authorAndrew Dunham <andrew@du.nham.ca>2019-11-23 20:25:02 -0800
committerProfpatsch <mail@profpatsch.de>2019-11-27 10:43:34 +0100
commit3f86f2120717c33792fc3f8a7cef8dffc9e73c2b (patch)
treec616d92ff61420d24dc0a1473c0453dee2253e66 /pkgs/build-support/build-bazel-package
parentd1cf28291483247c210c4536f35f5a151377e477 (diff)
downloadnixpkgs-3f86f2120717c33792fc3f8a7cef8dffc9e73c2b.tar
nixpkgs-3f86f2120717c33792fc3f8a7cef8dffc9e73c2b.tar.gz
nixpkgs-3f86f2120717c33792fc3f8a7cef8dffc9e73c2b.tar.bz2
nixpkgs-3f86f2120717c33792fc3f8a7cef8dffc9e73c2b.tar.lz
nixpkgs-3f86f2120717c33792fc3f8a7cef8dffc9e73c2b.tar.xz
nixpkgs-3f86f2120717c33792fc3f8a7cef8dffc9e73c2b.tar.zst
nixpkgs-3f86f2120717c33792fc3f8a7cef8dffc9e73c2b.zip
buildBazelPackage: allow specifying whether to remove rules_cc
Diffstat (limited to 'pkgs/build-support/build-bazel-package')
-rw-r--r--pkgs/build-support/build-bazel-package/default.nix26
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}