mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 21:50:33 +03:00
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.
This commit is contained in:
parent
1771d468c4
commit
2a8d05627b
8 changed files with 16 additions and 16 deletions
|
@ -76,7 +76,7 @@ in buildBazelPackage rec {
|
||||||
rm -f "$bazelOut"/java.log "$bazelOut"/java.log.*
|
rm -f "$bazelOut"/java.log "$bazelOut"/java.log.*
|
||||||
'';
|
'';
|
||||||
|
|
||||||
sha256 = "1bn7nhv5pag8fdm8l8nvgg3fzvhpy2yv9yl2slrb16lckxzha3v6";
|
sha256 = "0r11kbyp1ambgcj35gvjjmxrsrdg7b9jb9sq3kih4lik7zyljp25";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildAttrs = {
|
buildAttrs = {
|
||||||
|
|
|
@ -42,7 +42,7 @@ in stdenv.mkDerivation (fBuildAttrs // {
|
||||||
inherit name bazelFlags bazelBuildFlags bazelFetchFlags bazelTarget;
|
inherit name bazelFlags bazelBuildFlags bazelFetchFlags bazelTarget;
|
||||||
|
|
||||||
deps = stdenv.mkDerivation (fFetchAttrs // {
|
deps = stdenv.mkDerivation (fFetchAttrs // {
|
||||||
name = "${name}-deps";
|
name = "${name}-deps.tar.gz";
|
||||||
inherit bazelFlags bazelBuildFlags bazelFetchFlags bazelTarget;
|
inherit bazelFlags bazelBuildFlags bazelFetchFlags bazelTarget;
|
||||||
|
|
||||||
nativeBuildInputs = fFetchAttrs.nativeBuildInputs or [] ++ [ bazel ];
|
nativeBuildInputs = fFetchAttrs.nativeBuildInputs or [] ++ [ bazel ];
|
||||||
|
@ -120,9 +120,9 @@ in stdenv.mkDerivation (fBuildAttrs // {
|
||||||
ln -sf "$new_target" "$symlink"
|
ln -sf "$new_target" "$symlink"
|
||||||
done
|
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
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
@ -130,7 +130,6 @@ in stdenv.mkDerivation (fBuildAttrs // {
|
||||||
dontFixup = true;
|
dontFixup = true;
|
||||||
allowedRequisites = [];
|
allowedRequisites = [];
|
||||||
|
|
||||||
outputHashMode = "recursive";
|
|
||||||
outputHashAlgo = "sha256";
|
outputHashAlgo = "sha256";
|
||||||
outputHash = fetchAttrs.sha256;
|
outputHash = fetchAttrs.sha256;
|
||||||
});
|
});
|
||||||
|
@ -146,14 +145,15 @@ in stdenv.mkDerivation (fBuildAttrs // {
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
mkdir -p "$bazelOut"
|
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 "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
|
echo "expected: ${bazel.name}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
cp -r $deps $bazelOut/external
|
|
||||||
chmod -R +w $bazelOut
|
chmod -R +w $bazelOut
|
||||||
find $bazelOut -type l | while read symlink; do
|
find $bazelOut -type l | while read symlink; do
|
||||||
ln -sf $(readlink "$symlink" | sed "s,NIX_BUILD_TOP,$NIX_BUILD_TOP,") "$symlink"
|
ln -sf $(readlink "$symlink" | sed "s,NIX_BUILD_TOP,$NIX_BUILD_TOP,") "$symlink"
|
||||||
|
|
|
@ -36,7 +36,7 @@ let
|
||||||
bazelTarget = ":install";
|
bazelTarget = ":install";
|
||||||
|
|
||||||
fetchAttrs = {
|
fetchAttrs = {
|
||||||
sha256 = "0wb2gh9ji8bgq4s9ci9x017dybxqzjhncpw33b1wjksm2yhbkvlz";
|
sha256 = "0jlgmwcanfkhkwvh4vxibpi0zyyl6xkjzcz2xqn7raympqscq81a";
|
||||||
};
|
};
|
||||||
|
|
||||||
bazelFlags = [
|
bazelFlags = [
|
||||||
|
|
|
@ -61,7 +61,7 @@ let
|
||||||
bazelTarget = ":pip_pkg";
|
bazelTarget = ":pip_pkg";
|
||||||
|
|
||||||
fetchAttrs = {
|
fetchAttrs = {
|
||||||
sha256 = "0135nxxvkmjzpd80r1g9fdkk9h62g0xlvp32g5zgk0hkma5kq0bx";
|
sha256 = "0nmk7sbgl1ag20333v9r7l5cka6wapbskikfhi3y5a8l9f6hxkl3";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildAttrs = {
|
buildAttrs = {
|
||||||
|
|
|
@ -300,9 +300,9 @@ let
|
||||||
|
|
||||||
# cudaSupport causes fetch of ncclArchive, resulting in different hashes
|
# cudaSupport causes fetch of ncclArchive, resulting in different hashes
|
||||||
sha256 = if cudaSupport then
|
sha256 = if cudaSupport then
|
||||||
"1qygfcvvn9vysap9nk6xccxi9mgmzyxiywz6k456f811l1v70p2c"
|
"09j57w6kc0vkfcdwr0qggy3qgrgq82kfa2jrwvvcnij4bl3wj40j"
|
||||||
else
|
else
|
||||||
"0kfjanw0mfbh30vi1ms2xlg8yp429cbyfriik6yxd5cla2pncg2j";
|
"14g8z49qz7d8n1c2mcsfhr7yqpcy7mhmpm6hgmqvpgb8vm7yvwrc";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildAttrs = {
|
buildAttrs = {
|
||||||
|
|
|
@ -294,9 +294,9 @@ let
|
||||||
|
|
||||||
# cudaSupport causes fetch of ncclArchive, resulting in different hashes
|
# cudaSupport causes fetch of ncclArchive, resulting in different hashes
|
||||||
sha256 = if cudaSupport then
|
sha256 = if cudaSupport then
|
||||||
"0hg3ysy644950a34j28hrb317cz8gcbb9n84d36wdailvnlshghb"
|
"1kqk1gx5g63kb2zdj392x6mnpbrmgqghrdv597aipn7s23xzj8pd"
|
||||||
else
|
else
|
||||||
"1gy4pz9kn30wb9c4a9584fibb88c3h38y3dqa99yw1lbsbyyi28c";
|
"1plpcm2ydpajsrxdvmmpfy7l0gfdir78hap72w4k7ddm6d3rm2fv";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildAttrs = {
|
buildAttrs = {
|
||||||
|
|
|
@ -60,7 +60,7 @@ buildBazelPackage rec {
|
||||||
sed -e '/^FILE:@bazel_gazelle_go_repository_tools.*/d' -i $bazelOut/external/\@*.marker
|
sed -e '/^FILE:@bazel_gazelle_go_repository_tools.*/d' -i $bazelOut/external/\@*.marker
|
||||||
'';
|
'';
|
||||||
|
|
||||||
sha256 = "0wj573dcirssr2cmq90b4yl57mv3gsxaj1s26afvkz1dvyxmq7sz";
|
sha256 = "0ili0123xcl0mjcrn4r1r1q9d7a8a3bbh9r3zhlshl39awfm4r2d";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildAttrs = {
|
buildAttrs = {
|
||||||
|
|
|
@ -64,7 +64,7 @@ buildBazelPackage rec {
|
||||||
sed -e '/^FILE:@bazel_gazelle_go_repository_tools.*/d' -i $bazelOut/external/\@*.marker
|
sed -e '/^FILE:@bazel_gazelle_go_repository_tools.*/d' -i $bazelOut/external/\@*.marker
|
||||||
'';
|
'';
|
||||||
|
|
||||||
sha256 = "141kw2zpr612xdcrg6x9kslg4d5b3fbpzx0vgp3lqwdihfj3sc1l";
|
sha256 = "1hzb84zxav68ysdwkimaaz0b9rq95k3bgifw01m644v7idabrz50";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildAttrs = {
|
buildAttrs = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue