diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index 72725f9818c..a308eb8aaa4 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -60,13 +60,10 @@ 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/{embedded_jdk,\@embedded_jdk.marker} - rm -rf $bazelOut/external/{local_*,\@local_*} + rm -rf $bazelOut/external/{local_*,\@local_*.marker} - # Patching markers to make them deterministic - find $bazelOut/external -name '@*\.marker' -exec sed -i \ - -e 's, -\?[0-9][0-9]*$, 1,' \ - -e '/^ENV:TMP.*/d' \ - '{}' \; + # Clear markers + find $bazelOut/external -name '@*\.marker' -exec sh -c 'echo > {}' \; # Remove all vcs files rm -rf $(find $bazelOut/external -type d -name .git) diff --git a/pkgs/development/tools/build-managers/bazel/default.nix b/pkgs/development/tools/build-managers/bazel/default.nix index 8c19c0021d1..701b0c48388 100644 --- a/pkgs/development/tools/build-managers/bazel/default.nix +++ b/pkgs/development/tools/build-managers/bazel/default.nix @@ -14,8 +14,8 @@ , runtimeShell # Downstream packages for tests , bazel-watcher -# Always assume all markers valid (don't redownload dependencies). -# Also, don't clean up environment variables. +# Always assume all markers valid (this is needed because we remove markers; they are non-deterministic). +# Also, don't clean up environment variables (so that NIX_ environment variables are passed to compilers). , enableNixHacks ? false , gcc-unwrapped , autoPatchelfHook diff --git a/pkgs/development/tools/build-managers/bazel/nix-hacks.patch b/pkgs/development/tools/build-managers/bazel/nix-hacks.patch index 75b0e3743f9..95f07646802 100644 --- a/pkgs/development/tools/build-managers/bazel/nix-hacks.patch +++ b/pkgs/development/tools/build-managers/bazel/nix-hacks.patch @@ -1,7 +1,39 @@ -diff -Naur a/src/main/java/com/google/devtools/build/lib/shell/JavaSubprocessFactory.java b/src/main/java/com/google/devtools/build/lib/shell/JavaSubprocessFactory.java ---- a/src/main/java/com/google/devtools/build/lib/shell/JavaSubprocessFactory.java 2019-06-12 20:39:37.538708196 -0700 -+++ b/src/main/java/com/google/devtools/build/lib/shell/JavaSubprocessFactory.java 2019-06-12 20:44:18.863429602 -0700 -@@ -146,7 +146,6 @@ +diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java +index 8e772005cd..6ffa1c919c 100644 +--- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java ++++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java +@@ -432,25 +432,7 @@ public final class RepositoryDelegatorFunction implements SkyFunction { + String content; + try { + content = FileSystemUtils.readContent(markerPath, StandardCharsets.UTF_8); +- String markerRuleKey = readMarkerFile(content, markerData); +- boolean verified = false; +- if (Preconditions.checkNotNull(ruleKey).equals(markerRuleKey) +- && Objects.equals( +- markerData.get(MANAGED_DIRECTORIES_MARKER), +- this.markerData.get(MANAGED_DIRECTORIES_MARKER))) { +- verified = handler.verifyMarkerData(rule, markerData, env); +- if (env.valuesMissing()) { +- return null; +- } +- } +- +- if (verified) { +- return new Fingerprint().addString(content).digestAndReset(); +- } else { +- // So that we are in a consistent state if something happens while fetching the repository +- markerPath.delete(); +- return null; +- } ++ return new Fingerprint().addString(content).digestAndReset(); + } catch (IOException e) { + throw new RepositoryFunctionException(e, Transience.TRANSIENT); + } +diff --git a/src/main/java/com/google/devtools/build/lib/shell/JavaSubprocessFactory.java b/src/main/java/com/google/devtools/build/lib/shell/JavaSubprocessFactory.java +index c282d57ab6..f9b0c08627 100644 +--- a/src/main/java/com/google/devtools/build/lib/shell/JavaSubprocessFactory.java ++++ b/src/main/java/com/google/devtools/build/lib/shell/JavaSubprocessFactory.java +@@ -146,7 +146,6 @@ public class JavaSubprocessFactory implements SubprocessFactory { ProcessBuilder builder = new ProcessBuilder(); builder.command(params.getArgv()); if (params.getEnv() != null) {