diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2020-05-08 20:48:30 -0500 |
---|---|---|
committer | Matthew Bauer <mjbauer95@gmail.com> | 2020-05-09 13:33:26 -0500 |
commit | 2a8d05627bc98b25d65244bb208583ac0b5c3007 (patch) | |
tree | 5803d2306f8f6289a71294bb426fb9372e3a3032 /pkgs/build-support/build-bazel-package | |
parent | 1771d468c499722ba6e10384c52da4fe7ebb31d2 (diff) | |
download | nixpkgs-2a8d05627bc98b25d65244bb208583ac0b5c3007.tar nixpkgs-2a8d05627bc98b25d65244bb208583ac0b5c3007.tar.gz nixpkgs-2a8d05627bc98b25d65244bb208583ac0b5c3007.tar.bz2 nixpkgs-2a8d05627bc98b25d65244bb208583ac0b5c3007.tar.lz nixpkgs-2a8d05627bc98b25d65244bb208583ac0b5c3007.tar.xz nixpkgs-2a8d05627bc98b25d65244bb208583ac0b5c3007.tar.zst nixpkgs-2a8d05627bc98b25d65244bb208583ac0b5c3007.zip |
build-bazel-package: switch hash mode to “flat”
flat hashes can be substituted through hashed-mirrors, while recursive hashes can’t. This is especially important for Bazel since the bazel fetch dependencies can come from multiple different methods (git, http, ftp, etc.). To do this, we create tar archives from the output/external directory, which is then extracted to build. All of the Bazel hashes are all updated.
Diffstat (limited to 'pkgs/build-support/build-bazel-package')
-rw-r--r-- | pkgs/build-support/build-bazel-package/default.nix | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index 9a64b84f076..61befff3eaa 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -42,7 +42,7 @@ in stdenv.mkDerivation (fBuildAttrs // { inherit name bazelFlags bazelBuildFlags bazelFetchFlags bazelTarget; deps = stdenv.mkDerivation (fFetchAttrs // { - name = "${name}-deps"; + name = "${name}-deps.tar.gz"; inherit bazelFlags bazelBuildFlags bazelFetchFlags bazelTarget; nativeBuildInputs = fFetchAttrs.nativeBuildInputs or [] ++ [ bazel ]; @@ -120,9 +120,9 @@ in stdenv.mkDerivation (fBuildAttrs // { ln -sf "$new_target" "$symlink" done - cp -r $bazelOut/external $out + echo '${bazel.name}' > $bazelOut/external/.nix-bazel-version - echo '${bazel.name}' > $out/.nix-bazel-version + (cd $bazelOut/ && tar czf $out --sort=name --mtime='@1' --owner=0 --group=0 --numeric-owner external/) runHook postInstall ''; @@ -130,7 +130,6 @@ in stdenv.mkDerivation (fBuildAttrs // { dontFixup = true; allowedRequisites = []; - outputHashMode = "recursive"; outputHashAlgo = "sha256"; outputHash = fetchAttrs.sha256; }); @@ -146,14 +145,15 @@ in stdenv.mkDerivation (fBuildAttrs // { preConfigure = '' mkdir -p "$bazelOut" - test "${bazel.name}" = "$(<$deps/.nix-bazel-version)" || { + (cd $bazelOut && tar xfz $deps) + + test "${bazel.name}" = "$(<$bazelOut/external/.nix-bazel-version)" || { echo "fixed output derivation was built for a different bazel version" >&2 - echo " got: $(<$deps/.nix-bazel-version)" >&2 + echo " got: $(<$bazelOut/external/.nix-bazel-version)" >&2 echo "expected: ${bazel.name}" >&2 exit 1 } - cp -r $deps $bazelOut/external chmod -R +w $bazelOut find $bazelOut -type l | while read symlink; do ln -sf $(readlink "$symlink" | sed "s,NIX_BUILD_TOP,$NIX_BUILD_TOP,") "$symlink" |