polkadot: fix commit hash fetch for version string
This commit is contained in:
parent
6321c75b5f
commit
cf4e6208c1
1 changed files with 29 additions and 2 deletions
|
@ -4,6 +4,7 @@
|
||||||
, llvmPackages
|
, llvmPackages
|
||||||
, protobuf
|
, protobuf
|
||||||
, rustPlatform
|
, rustPlatform
|
||||||
|
, writeShellScriptBin
|
||||||
}:
|
}:
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "polkadot";
|
pname = "polkadot";
|
||||||
|
@ -13,12 +14,38 @@ rustPlatform.buildRustPackage rec {
|
||||||
owner = "paritytech";
|
owner = "paritytech";
|
||||||
repo = "polkadot";
|
repo = "polkadot";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-TgpQ+nRKkbyQcCwecnhgF70FI+rlDuTy7XHUNhvYy64=";
|
sha256 = "sha256-NXuYUmo80rrBZCcuISKon48SKyyJrkzCEhggxaJNfBM=";
|
||||||
|
|
||||||
|
# see the comment below on fakeGit for how this is used
|
||||||
|
leaveDotGit = true;
|
||||||
|
postFetch = ''
|
||||||
|
( cd $out; git rev-parse --short HEAD > .git_commit )
|
||||||
|
rm -rf $out/.git
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoSha256 = "sha256-PIORMTzQbMdlrKwuF4MiGrLlg2nQpgLRsaHHeiCbqrg=";
|
cargoSha256 = "sha256-PIORMTzQbMdlrKwuF4MiGrLlg2nQpgLRsaHHeiCbqrg=";
|
||||||
|
|
||||||
nativeBuildInputs = [ clang ];
|
nativeBuildInputs =
|
||||||
|
let
|
||||||
|
# the build process of polkadot requires a .git folder in order to determine
|
||||||
|
# the git commit hash that is being built and add it to the version string.
|
||||||
|
# since having a .git folder introduces reproducibility issues to the nix
|
||||||
|
# build, we check the git commit hash after fetching the source and save it
|
||||||
|
# into a .git_commit file, and then delete the .git folder. then we create a
|
||||||
|
# fake git command that will just return the contents of this file, which will
|
||||||
|
# be used when the polkadot build calls `git rev-parse` to fetch the commit
|
||||||
|
# hash.
|
||||||
|
fakeGit = writeShellScriptBin "git" ''
|
||||||
|
if [[ $@ = "rev-parse --short HEAD" ]]; then
|
||||||
|
cat /build/source/.git_commit
|
||||||
|
else
|
||||||
|
>&2 echo "Unknown command: $@"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
[ clang fakeGit ];
|
||||||
|
|
||||||
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
|
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
|
||||||
PROTOC = "${protobuf}/bin/protoc";
|
PROTOC = "${protobuf}/bin/protoc";
|
||||||
|
|
Loading…
Reference in a new issue