diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
commit | 99fcaeccb89621dd492203ce1f2d551c06f228ed (patch) | |
tree | 41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/applications/blockchains/solana-validator | |
parent | 59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff) | |
parent | 75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff) | |
download | nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2 nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip |
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts: nixpkgs/nixos/modules/config/console.nix nixpkgs/nixos/modules/services/mail/mailman.nix nixpkgs/nixos/modules/services/mail/public-inbox.nix nixpkgs/nixos/modules/services/mail/rss2email.nix nixpkgs/nixos/modules/services/networking/ssh/sshd.nix nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix nixpkgs/pkgs/applications/networking/irc/weechat/default.nix nixpkgs/pkgs/applications/window-managers/sway/default.nix nixpkgs/pkgs/build-support/go/module.nix nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix nixpkgs/pkgs/development/interpreters/python/default.nix nixpkgs/pkgs/development/node-packages/overrides.nix nixpkgs/pkgs/development/tools/b4/default.nix nixpkgs/pkgs/servers/dict/dictd-db.nix nixpkgs/pkgs/servers/mail/public-inbox/default.nix nixpkgs/pkgs/tools/security/pinentry/default.nix nixpkgs/pkgs/tools/text/unoconv/default.nix nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/applications/blockchains/solana-validator')
3 files changed, 122 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/blockchains/solana-validator/default.nix b/nixpkgs/pkgs/applications/blockchains/solana-validator/default.nix new file mode 100644 index 000000000000..897968e25063 --- /dev/null +++ b/nixpkgs/pkgs/applications/blockchains/solana-validator/default.nix @@ -0,0 +1,84 @@ +# largely inspired from https://github.com/saber-hq/saber-overlay/blob/master/packages/solana/solana.nix + +{ stdenv +, fetchFromGitHub +, lib +, rustPlatform +, pkg-config +, udev +, zlib +, protobuf +, openssl +, libclang +, rustfmt +, perl +, hidapi +, solanaPkgs ? [ + "solana" + "solana-bench-tps" + "solana-faucet" + "solana-gossip" + "solana-install" + "solana-keygen" + "solana-ledger-tool" + "solana-log-analyzer" + "solana-net-shaper" + "solana-sys-tuner" + "solana-validator" + "cargo-build-bpf" + "cargo-test-bpf" + "solana-dos" + "solana-install-init" + "solana-stake-accounts" + "solana-test-validator" + "solana-tokens" + "solana-watchtower" + ] ++ [ + # XXX: Ensure `solana-genesis` is built LAST! + # See https://github.com/solana-labs/solana/issues/5826 + "solana-genesis" + ] +}: +let + pinData = lib.importJSON ./pin.json; + version = pinData.version; + sha256 = pinData.sha256; + cargoSha256 = pinData.cargoSha256; +in +rustPlatform.buildRustPackage rec { + pname = "solana-validator"; + inherit version; + + src = fetchFromGitHub { + owner = "solana-labs"; + repo = "solana"; + rev = "v${version}"; + inherit sha256; + }; + + # partly inspired by https://github.com/obsidiansystems/solana-bridges/blob/develop/default.nix#L29 + inherit cargoSha256; + + cargoBuildFlags = builtins.map (n: "--bin=${n}") solanaPkgs; + + # weird errors. see https://github.com/NixOS/nixpkgs/issues/52447#issuecomment-852079285 + # LLVM_CONFIG_PATH = "${llvm}/bin/llvm-config"; + + nativeBuildInputs = [ pkg-config protobuf rustfmt perl rustPlatform.bindgenHook ]; + buildInputs = + [ openssl zlib libclang hidapi ] ++ (lib.optionals stdenv.isLinux [ udev ]); + strictDeps = true; + + doCheck = false; + + 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; +} diff --git a/nixpkgs/pkgs/applications/blockchains/solana-validator/pin.json b/nixpkgs/pkgs/applications/blockchains/solana-validator/pin.json new file mode 100644 index 000000000000..175cd79ad1bc --- /dev/null +++ b/nixpkgs/pkgs/applications/blockchains/solana-validator/pin.json @@ -0,0 +1,5 @@ +{ + "version": "1.10.35", + "sha256": "sha256-y7+ogMJ5E9E/+ZaTCHWOQWG7iR+BGuVqvlNUDT++Ghc=", + "cargoSha256": "sha256-idlu9qkh2mrF6MxstRcvemKrtTGNY/InBnIDqRvDQPs" +} diff --git a/nixpkgs/pkgs/applications/blockchains/solana-validator/update.sh b/nixpkgs/pkgs/applications/blockchains/solana-validator/update.sh new file mode 100644 index 000000000000..ffd8b0010cc2 --- /dev/null +++ b/nixpkgs/pkgs/applications/blockchains/solana-validator/update.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i oil -p jq sd nix-prefetch-github ripgrep + +# TODO set to `verbose` or `extdebug` once implemented in oil +shopt --set xtrace +# we need failures inside of command subs to get the correct cargoSha256 +shopt --unset inherit_errexit + +const directory = $(dirname $0 | xargs realpath) +const owner = "solana-labs" +const repo = "solana" +const latest_rev = $(curl -q https://api.github.com/repos/${owner}/${repo}/releases/latest | \ + jq -r '.tag_name') +const latest_version = $(echo $latest_rev | sd 'v' '') +const current_version = $(jq -r '.version' $directory/pin.json) +if ("$latest_version" === "$current_version") { + echo "solana is already up-to-date" + return 0 +} else { + const tarball_meta = $(nix-prefetch-github $owner $repo --rev "$latest_rev") + const tarball_hash = "sha256-$(echo $tarball_meta | jq -r '.sha256')" + + jq ".version = \"$latest_version\" | \ + .\"sha256\" = \"$tarball_hash\" | \ + .\"cargoSha256\" = \"\"" $directory/pin.json | sponge $directory/pin.json + + const new_cargo_sha256 = $(nix-build -A solana-testnet 2>&1 | \ + tail -n 2 | \ + head -n 1 | \ + sd '\s+got:\s+' '') + + jq ".cargoSha256 = \"$new_cargo_sha256\"" $directory/pin.json | sponge $directory/pin.json +} |