diff options
Diffstat (limited to 'pkgs/build-support/build-bazel-package/default.nix')
-rw-r--r-- | pkgs/build-support/build-bazel-package/default.nix | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index 07d37451ddf9..28247bac1021 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -25,7 +25,13 @@ in stdenv.mkDerivation (fBuildAttrs // { buildPhase = fFetchAttrs.buildPhase or '' runHook preBuild - bazel --output_base="$bazelOut" --output_user_root="$bazelUserRoot" fetch $bazelFlags $bazelTarget + # Bazel computes the default value of output_user_root before parsing the + # flag. The computation of the default value involves getting the $USER + # from the environment. I don't have that variable when building with + # sandbox enabled. Code here + # https://github.com/bazelbuild/bazel/blob/9323c57607d37f9c949b60e293b573584906da46/src/main/cpp/startup_options.cc#L123-L124 + # + USER=homeless-shelter bazel --output_base="$bazelOut" --output_user_root="$bazelUserRoot" fetch $bazelFlags $bazelTarget runHook postBuild ''; @@ -33,10 +39,19 @@ in stdenv.mkDerivation (fBuildAttrs // { installPhase = fFetchAttrs.installPhase or '' runHook preInstall + # 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_*} + # Patching markers to make them deterministic - for i in $bazelOut/external/\@*.marker; do - sed -i 's, -\?[0-9][0-9]*$, 1,' "$i" - done + sed -i 's, -\?[0-9][0-9]*$, 1,' $bazelOut/external/\@*.marker + + # Remove all vcs files + rm -rf $(find $bazelOut/external -type d -name .git) + rm -rf $(find $bazelOut/external -type d -name .svn) + rm -rf $(find $bazelOut/external -type d -name .hg) + # Patching symlinks to remove build directory reference find $bazelOut/external -type l | while read symlink; do ln -sf $(readlink "$symlink" | sed "s,$NIX_BUILD_TOP,NIX_BUILD_TOP,") "$symlink" |