Skip to content

Commit

Permalink
build-bazel-package: switch hash mode to “flat”
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
matthewbauer committed May 9, 2020
1 parent 1771d46 commit 9b8ed3b
Show file tree
Hide file tree
Showing 8 changed files with 17 additions and 16 deletions.
2 changes: 1 addition & 1 deletion pkgs/applications/virtualization/gvisor/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ in buildBazelPackage rec {
rm -f "$bazelOut"/java.log "$bazelOut"/java.log.*
'';

sha256 = "1bn7nhv5pag8fdm8l8nvgg3fzvhpy2yv9yl2slrb16lckxzha3v6";
sha256 = "0r11kbyp1ambgcj35gvjjmxrsrdg7b9jb9sq3kih4lik7zyljp25";
};

buildAttrs = {
Expand Down
15 changes: 8 additions & 7 deletions pkgs/build-support/build-bazel-package/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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 ];
Expand Down Expand Up @@ -120,17 +120,17 @@ 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
'';

dontFixup = true;
allowedRequisites = [];

outputHashMode = "recursive";
outputHashMode = "flat";
outputHashAlgo = "sha256";
outputHash = fetchAttrs.sha256;
});
Expand All @@ -146,14 +146,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"
Expand Down
2 changes: 1 addition & 1 deletion pkgs/development/python-modules/dm-sonnet/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ let
bazelTarget = ":install";

fetchAttrs = {
sha256 = "0wb2gh9ji8bgq4s9ci9x017dybxqzjhncpw33b1wjksm2yhbkvlz";
sha256 = "0jlgmwcanfkhkwvh4vxibpi0zyyl6xkjzcz2xqn7raympqscq81a";
};

bazelFlags = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ let
bazelTarget = ":pip_pkg";

fetchAttrs = {
sha256 = "0135nxxvkmjzpd80r1g9fdkk9h62g0xlvp32g5zgk0hkma5kq0bx";
sha256 = "0000000000000000000000000000000000000000000000000000";
};

buildAttrs = {
Expand Down
4 changes: 2 additions & 2 deletions pkgs/development/python-modules/tensorflow/1/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -300,9 +300,9 @@ let

# cudaSupport causes fetch of ncclArchive, resulting in different hashes
sha256 = if cudaSupport then
"1qygfcvvn9vysap9nk6xccxi9mgmzyxiywz6k456f811l1v70p2c"
"09j57w6kc0vkfcdwr0qggy3qgrgq82kfa2jrwvvcnij4bl3wj40j"
else
"0kfjanw0mfbh30vi1ms2xlg8yp429cbyfriik6yxd5cla2pncg2j";
"14g8z49qz7d8n1c2mcsfhr7yqpcy7mhmpm6hgmqvpgb8vm7yvwrc";
};

buildAttrs = {
Expand Down
4 changes: 2 additions & 2 deletions pkgs/development/python-modules/tensorflow/2/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -294,9 +294,9 @@ let

# cudaSupport causes fetch of ncclArchive, resulting in different hashes
sha256 = if cudaSupport then
"0hg3ysy644950a34j28hrb317cz8gcbb9n84d36wdailvnlshghb"
"1kqk1gx5g63kb2zdj392x6mnpbrmgqghrdv597aipn7s23xzj8pd"
else
"1gy4pz9kn30wb9c4a9584fibb88c3h38y3dqa99yw1lbsbyyi28c";
"1plpcm2ydpajsrxdvmmpfy7l0gfdir78hap72w4k7ddm6d3rm2fv";
};

buildAttrs = {
Expand Down
2 changes: 1 addition & 1 deletion pkgs/development/tools/bazel-watcher/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ buildBazelPackage rec {
sed -e '/^FILE:@bazel_gazelle_go_repository_tools.*/d' -i $bazelOut/external/\@*.marker
'';

sha256 = "0wj573dcirssr2cmq90b4yl57mv3gsxaj1s26afvkz1dvyxmq7sz";
sha256 = "0ili0123xcl0mjcrn4r1r1q9d7a8a3bbh9r3zhlshl39awfm4r2d";
};

buildAttrs = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ buildBazelPackage rec {
sed -e '/^FILE:@bazel_gazelle_go_repository_tools.*/d' -i $bazelOut/external/\@*.marker
'';

sha256 = "141kw2zpr612xdcrg6x9kslg4d5b3fbpzx0vgp3lqwdihfj3sc1l";
sha256 = "1hzb84zxav68ysdwkimaaz0b9rq95k3bgifw01m644v7idabrz50";
};

buildAttrs = {
Expand Down

0 comments on commit 9b8ed3b

Please sign in to comment.