solana-validator: 1.10 -> 1.16

* solana-validator: move env under env attr
 * fix build on darwin
 * fix build with rust 1.7x
 * solana-validator: use patch from github

Co-authored-by: a-n-n-a-l-e-e <150648636+a-n-n-a-l-e-e@users.noreply.github.com>
This commit is contained in:
Alexander Polakov 2024-01-11 00:51:55 +04:00
parent 4f4420dfc3
commit 5c5c0fba21
3 changed files with 8938 additions and 10 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2,14 +2,18 @@
{ stdenv
, fetchFromGitHub
, fetchpatch
, lib
, rustPlatform
, pkg-config
, darwin
, udev
, zlib
, protobuf
, openssl
, libclang
, libcxx
, rocksdb
, rustfmt
, perl
, hidapi
@ -23,7 +27,6 @@
"solana-ledger-tool"
"solana-log-analyzer"
"solana-net-shaper"
"solana-sys-tuner"
"solana-validator"
"cargo-build-bpf"
"cargo-test-bpf"
@ -43,7 +46,8 @@ let
pinData = lib.importJSON ./pin.json;
version = pinData.version;
hash = pinData.hash;
cargoHash = pinData.cargoHash;
inherit (darwin.apple_sdk_11_0) Libsystem;
inherit (darwin.apple_sdk_11_0.frameworks) System IOKit AppKit Security;
in
rustPlatform.buildRustPackage rec {
pname = "solana-validator";
@ -56,8 +60,22 @@ rustPlatform.buildRustPackage rec {
inherit hash;
};
# partly inspired by https://github.com/obsidiansystems/solana-bridges/blob/develop/default.nix#L29
inherit cargoHash;
# fix build with rust 1.70+
patches = [
(fetchpatch {
url = "https://github.com/solana-labs/solana/commit/9e703f85de4184f577f22a1c72a0d33612f2feb1.patch";
hash = "sha256-bAKTIQ6FhTk6bIddYULwLfdH5kzNPw1ltXJEfawtAXg=";
includes = [ "sdk/program/src/account_info.rs" ];
})
];
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"crossbeam-epoch-0.9.5" = "sha256-Jf0RarsgJiXiZ+ddy0vp4jQ59J9m0k3sgXhWhCdhgws=";
"ntapi-0.3.7" = "sha256-G6ZCsa3GWiI/FeGKiK9TWkmTxen7nwpXvm5FtjNtjWU=";
};
};
cargoBuildFlags = builtins.map (n: "--bin=${n}") solanaPkgs;
@ -66,19 +84,32 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [ pkg-config protobuf rustfmt perl rustPlatform.bindgenHook ];
buildInputs =
[ openssl zlib libclang hidapi ] ++ (lib.optionals stdenv.isLinux [ udev ]);
[ openssl zlib libclang hidapi ] ++ (lib.optionals stdenv.isLinux [ udev ])
++ lib.optionals stdenv.isDarwin [ Security System Libsystem libcxx ];
strictDeps = true;
doCheck = false;
env = {
# Used by build.rs in the rocksdb-sys crate. If we don't set these, it would
# try to build RocksDB from source.
ROCKSDB_LIB_DIR = "${lib.getLib rocksdb}/lib";
# If set, always finds OpenSSL in the system, even if the vendored feature is enabled.
OPENSSL_NO_VENDOR = "1";
} // lib.optionalAttrs stdenv.isDarwin {
# Require this on darwin otherwise the compiler starts rambling about missing
# cmath functions
CPPFLAGS = "-isystem ${lib.getDev libcxx}/include/c++/v1";
LDFLAGS = "-L${lib.getLib libcxx}/lib";
};
meta = with lib; {
description = "Web-Scale Blockchain for fast, secure, scalable, decentralized apps and marketplaces. ";
homepage = "https://solana.com";
license = licenses.asl20;
maintainers = with maintainers; [ adjacentresearch ];
platforms = platforms.unix;
# never built on aarch64-darwin, x86_64-darwin since first introduction in nixpkgs
broken = stdenv.isDarwin;
};
passthru.updateScript = ./update.sh;
}

View File

@ -1,5 +1,4 @@
{
"version": "1.10.35",
"hash": "sha256-y7+ogMJ5E9E/+ZaTCHWOQWG7iR+BGuVqvlNUDT++Ghc=",
"cargoHash": "sha256-idlu9qkh2mrF6MxstRcvemKrtTGNY/InBnIDqRvDQPs"
"version": "1.16.26",
"hash": "sha256-0OMZO2aKoaeRCkswXDXV9Y6HnYLzpkqqFPVIW2P5TwE="
}