Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 351 lines 17 kB view raw
1{ 2 cmake, 3 fetchFromGitHub, 4 fetchurl, 5 lib, 6 lighthouse, 7 nix-update-script, 8 openssl, 9 pkg-config, 10 protobuf, 11 rustPlatform, 12 rust-jemalloc-sys, 13 sqlite, 14 stdenv, 15 testers, 16}: 17 18rustPlatform.buildRustPackage rec { 19 pname = "lighthouse"; 20 version = "7.1.0"; 21 22 # lighthouse/common/deposit_contract/build.rs, `TAG` 23 depositContractSpecVersion = "0.12.1"; 24 # lighthouse/common/deposit_contract/build.rs, `UNSAFE_TAG` 25 testnetDepositContractSpecVersion = "0.9.2.1"; 26 27 src = fetchFromGitHub { 28 owner = "sigp"; 29 repo = "lighthouse"; 30 tag = "v${version}"; 31 hash = "sha256-+tLAuuinSaVIwO5wi1Cf+86pWj83Jj0p1ajnDdpHsyI="; 32 }; 33 34 patches = [ 35 ./use-system-sqlite.patch 36 ]; 37 38 cargoHash = "sha256-pb44m+iWArlIim2tqbaH+pwCSqIdqzfVZJ9yj/ne1LY="; 39 40 buildFeatures = [ 41 "modern" 42 "gnosis" 43 ]; 44 45 nativeBuildInputs = [ 46 rustPlatform.bindgenHook 47 cmake 48 pkg-config 49 protobuf 50 ]; 51 52 buildInputs = [ 53 rust-jemalloc-sys 54 sqlite 55 ] 56 ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ 57 openssl 58 ]; 59 60 depositContractSpec = fetchurl { 61 url = "https://raw.githubusercontent.com/ethereum/eth2.0-specs/v${depositContractSpecVersion}/deposit_contract/contracts/validator_registration.json"; 62 hash = "sha256-ZslAe1wkmkg8Tua/AmmEfBmjqMVcGIiYHwi+WssEwa8="; 63 }; 64 65 testnetDepositContractSpec = fetchurl { 66 url = "https://raw.githubusercontent.com/sigp/unsafe-eth2-deposit-contract/v${testnetDepositContractSpecVersion}/unsafe_validator_registration.json"; 67 hash = "sha256-aeTeHRT3QtxBRSNMCITIWmx89vGtox2OzSff8vZ+RYY="; 68 }; 69 70 LIGHTHOUSE_DEPOSIT_CONTRACT_SPEC_URL = "file://${depositContractSpec}"; 71 LIGHTHOUSE_DEPOSIT_CONTRACT_TESTNET_URL = "file://${testnetDepositContractSpec}"; 72 73 OPENSSL_NO_VENDOR = true; 74 75 cargoBuildFlags = [ 76 "--package lighthouse" 77 ]; 78 79 __darwinAllowLocalNetworking = true; 80 81 checkFeatures = [ ]; 82 83 # All of these tests require network access and/or docker 84 cargoTestFlags = [ 85 "--workspace" 86 "--exclude beacon_chain" 87 "--exclude beacon_node" 88 "--exclude http_api" 89 "--exclude lighthouse" 90 "--exclude lighthouse_network" 91 "--exclude network" 92 "--exclude slashing_protection" 93 "--exclude watch" 94 "--exclude web3signer_tests" 95 ]; 96 97 # All of these tests require network access 98 checkFlags = [ 99 "--skip tests::broadcast_should_send_to_all_bns" 100 "--skip tests::check_candidate_order" 101 "--skip tests::first_success_should_try_nodes_in_order" 102 "--skip tests::update_all_candidates_should_update_sync_status" 103 "--skip engine_api::http::test::forkchoice_updated_v1_request" 104 "--skip engine_api::http::test::forkchoice_updated_v1_with_payload_attributes_request" 105 "--skip engine_api::http::test::get_block_by_hash_request" 106 "--skip engine_api::http::test::get_block_by_number_request" 107 "--skip engine_api::http::test::get_payload_v1_request" 108 "--skip engine_api::http::test::geth_test_vectors" 109 "--skip engine_api::http::test::new_payload_v1_request" 110 "--skip test::finds_valid_terminal_block_hash" 111 "--skip test::produce_three_valid_pos_execution_blocks" 112 "--skip test::rejects_invalid_terminal_block_hash" 113 "--skip test::rejects_terminal_block_with_equal_timestamp" 114 "--skip test::rejects_unknown_terminal_block_hash" 115 "--skip test::test_forked_terminal_block" 116 "--skip test::verifies_valid_terminal_block_hash" 117 "--skip deposit_tree::cache_consistency" 118 "--skip deposit_tree::double_update" 119 "--skip deposit_tree::updating" 120 "--skip eth1_cache::big_skip" 121 "--skip eth1_cache::double_update" 122 "--skip eth1_cache::pruning" 123 "--skip eth1_cache::simple_scenario" 124 "--skip fast::deposit_cache_query" 125 "--skip http::incrementing_deposits" 126 "--skip persist::test_persist_caches" 127 "--skip can_read_finalized_block" 128 "--skip invalid_attestation_delayed_slot" 129 "--skip invalid_attestation_empty_bitfield" 130 "--skip invalid_attestation_future_block" 131 "--skip invalid_attestation_future_epoch" 132 "--skip invalid_attestation_inconsistent_ffg_vote" 133 "--skip invalid_attestation_past_epoch" 134 "--skip invalid_attestation_target_epoch" 135 "--skip invalid_attestation_unknown_beacon_block_root" 136 "--skip invalid_attestation_unknown_target_root" 137 "--skip invalid_block_finalized_descendant" 138 "--skip invalid_block_finalized_slot" 139 "--skip invalid_block_future_slot" 140 "--skip invalid_block_unknown_parent" 141 "--skip justified_and_finalized_blocks" 142 "--skip justified_balances" 143 "--skip justified_checkpoint_updates_with_descendent" 144 "--skip justified_checkpoint_updates_with_descendent_first_justification" 145 "--skip justified_checkpoint_updates_with_non_descendent" 146 "--skip progressive_balances_cache_attester_slashing" 147 "--skip progressive_balances_cache_proposer_slashing" 148 "--skip valid_attestation" 149 "--skip valid_attestation_skip_across_epoch" 150 "--skip weak_subjectivity_check_epoch_boundary_is_skip_slot" 151 "--skip weak_subjectivity_check_epoch_boundary_is_skip_slot_failure" 152 "--skip weak_subjectivity_check_fails_early_epoch" 153 "--skip weak_subjectivity_check_fails_incorrect_root" 154 "--skip weak_subjectivity_check_fails_late_epoch" 155 "--skip weak_subjectivity_check_passes" 156 "--skip weak_subjectivity_pass_on_startup" 157 "--skip basic" 158 "--skip returns_200_ok" 159 "--skip release_tests::attestation_aggregation_insert_get_prune" 160 "--skip release_tests::attestation_duplicate" 161 "--skip release_tests::attestation_get_max" 162 "--skip release_tests::attestation_pairwise_overlapping" 163 "--skip release_tests::attestation_rewards" 164 "--skip release_tests::cross_fork_attester_slashings" 165 "--skip release_tests::cross_fork_exits" 166 "--skip release_tests::cross_fork_proposer_slashings" 167 "--skip release_tests::duplicate_proposer_slashing" 168 "--skip release_tests::max_coverage_attester_proposer_slashings" 169 "--skip release_tests::max_coverage_different_indices_set" 170 "--skip release_tests::max_coverage_effective_balances" 171 "--skip release_tests::overlapping_max_cover_attester_slashing" 172 "--skip release_tests::prune_attester_slashing_noop" 173 "--skip release_tests::prune_proposer_slashing_noop" 174 "--skip release_tests::simple_max_cover_attester_slashing" 175 "--skip release_tests::sync_contribution_aggregation_insert_get_prune" 176 "--skip release_tests::sync_contribution_duplicate" 177 "--skip release_tests::sync_contribution_with_fewer_bits" 178 "--skip release_tests::sync_contribution_with_more_bits" 179 "--skip release_tests::test_earliest_attestation" 180 "--skip per_block_processing::tests::block_replayer_peeking_state_roots" 181 "--skip per_block_processing::tests::fork_spanning_exit" 182 "--skip per_block_processing::tests::invalid_attester_slashing_1_invalid" 183 "--skip per_block_processing::tests::invalid_attester_slashing_2_invalid" 184 "--skip per_block_processing::tests::invalid_attester_slashing_not_slashable" 185 "--skip per_block_processing::tests::invalid_bad_proposal_1_signature" 186 "--skip per_block_processing::tests::invalid_bad_proposal_2_signature" 187 "--skip per_block_processing::tests::invalid_block_header_state_slot" 188 "--skip per_block_processing::tests::invalid_block_signature" 189 "--skip per_block_processing::tests::invalid_deposit_bad_merkle_proof" 190 "--skip per_block_processing::tests::invalid_deposit_count_too_small" 191 "--skip per_block_processing::tests::invalid_deposit_deposit_count_too_big" 192 "--skip per_block_processing::tests::invalid_deposit_invalid_pub_key" 193 "--skip per_block_processing::tests::invalid_deposit_wrong_sig" 194 "--skip per_block_processing::tests::invalid_parent_block_root" 195 "--skip per_block_processing::tests::invalid_proposer_slashing_duplicate_slashing" 196 "--skip per_block_processing::tests::invalid_proposer_slashing_proposal_epoch_mismatch" 197 "--skip per_block_processing::tests::invalid_proposer_slashing_proposals_identical" 198 "--skip per_block_processing::tests::invalid_proposer_slashing_proposer_unknown" 199 "--skip per_block_processing::tests::invalid_randao_reveal_signature" 200 "--skip per_block_processing::tests::valid_4_deposits" 201 "--skip per_block_processing::tests::valid_block_ok" 202 "--skip per_block_processing::tests::valid_insert_attester_slashing" 203 "--skip per_block_processing::tests::valid_insert_proposer_slashing" 204 "--skip per_epoch_processing::tests::release_tests::altair_state_on_base_fork" 205 "--skip per_epoch_processing::tests::release_tests::base_state_on_altair_fork" 206 "--skip per_epoch_processing::tests::runs_without_error" 207 "--skip exit::custom_tests::valid" 208 "--skip exit::custom_tests::valid_three" 209 "--skip exit::tests::invalid_bad_signature" 210 "--skip exit::tests::invalid_duplicate" 211 "--skip exit::tests::invalid_exit_already_initiated" 212 "--skip exit::tests::invalid_future_exit_epoch" 213 "--skip exit::tests::invalid_not_active_after_exit_epoch" 214 "--skip exit::tests::invalid_not_active_before_activation_epoch" 215 "--skip exit::tests::invalid_too_young_by_a_lot" 216 "--skip exit::tests::invalid_too_young_by_one_epoch" 217 "--skip exit::tests::invalid_validator_unknown" 218 "--skip exit::tests::valid_genesis_epoch" 219 "--skip exit::tests::valid_previous_epoch" 220 "--skip exit::tests::valid_single_exit" 221 "--skip exit::tests::valid_three_exits" 222 "--skip iter::test::block_root_iter" 223 "--skip iter::test::state_root_iter" 224 "--skip beacon_state::committee_cache::tests::initializes_with_the_right_epoch" 225 "--skip beacon_state::committee_cache::tests::min_randao_epoch_correct" 226 "--skip beacon_state::committee_cache::tests::shuffles_for_the_right_epoch" 227 "--skip beacon_state::tests::beacon_proposer_index" 228 "--skip beacon_state::tests::cache_initialization" 229 "--skip beacon_state::tests::committees::current_epoch_committee_consistency" 230 "--skip beacon_state::tests::committees::next_epoch_committee_consistency" 231 "--skip beacon_state::tests::committees::previous_epoch_committee_consistency" 232 "--skip tests::hd_validator_creation" 233 "--skip tests::invalid_pubkey" 234 "--skip tests::keystore_validator_creation" 235 "--skip tests::keystores::check_get_set_fee_recipient" 236 "--skip tests::keystores::check_get_set_gas_limit" 237 "--skip tests::keystores::delete_concurrent_with_signing" 238 "--skip tests::keystores::delete_keystores_twice" 239 "--skip tests::keystores::delete_nonexistent_keystores" 240 "--skip tests::keystores::delete_nonexistent_remotekey" 241 "--skip tests::keystores::delete_remotekey_then_reimport_different_url" 242 "--skip tests::keystores::delete_remotekeys_twice" 243 "--skip tests::keystores::delete_then_reimport" 244 "--skip tests::keystores::delete_then_reimport_remotekeys" 245 "--skip tests::keystores::get_auth_no_token" 246 "--skip tests::keystores::get_empty_keystores" 247 "--skip tests::keystores::get_empty_remotekeys" 248 "--skip tests::keystores::get_web3_signer_keystores" 249 "--skip tests::keystores::import_and_delete_conflicting_web3_signer_keystores" 250 "--skip tests::keystores::import_invalid_slashing_protection" 251 "--skip tests::keystores::import_keystores_wrong_password" 252 "--skip tests::keystores::import_new_keystores" 253 "--skip tests::keystores::import_new_remotekeys" 254 "--skip tests::keystores::import_only_duplicate_keystores" 255 "--skip tests::keystores::import_only_duplicate_remotekeys" 256 "--skip tests::keystores::import_remote_and_local_keys" 257 "--skip tests::keystores::import_remotekey_web3signer" 258 "--skip tests::keystores::import_remotekey_web3signer_disabled" 259 "--skip tests::keystores::import_remotekey_web3signer_enabled" 260 "--skip tests::keystores::import_same_local_and_remote_keys" 261 "--skip tests::keystores::import_same_remote_and_local_keys" 262 "--skip tests::keystores::import_same_remotekey_different_url" 263 "--skip tests::keystores::import_some_duplicate_keystores" 264 "--skip tests::keystores::import_some_duplicate_remotekeys" 265 "--skip tests::keystores::import_wrong_number_of_passwords" 266 "--skip tests::keystores::migrate_all_with_slashing_protection" 267 "--skip tests::keystores::migrate_some_extra_slashing_protection" 268 "--skip tests::keystores::migrate_some_missing_slashing_protection" 269 "--skip tests::keystores::migrate_some_with_slashing_protection" 270 "--skip tests::prefer_builder_proposals_validator" 271 "--skip tests::routes_with_invalid_auth" 272 "--skip tests::simple_getters" 273 "--skip tests::validator_builder_boost_factor" 274 "--skip tests::validator_builder_boost_factor_global_builder_proposals_false" 275 "--skip tests::validator_builder_boost_factor_global_builder_proposals_true" 276 "--skip tests::validator_builder_boost_factor_global_prefer_builder_proposals_true" 277 "--skip tests::validator_builder_boost_factor_global_prefer_builder_proposals_true_override" 278 "--skip tests::validator_builder_proposals" 279 "--skip tests::validator_derived_builder_boost_factor_with_process_defaults" 280 "--skip tests::validator_enabling" 281 "--skip tests::validator_exit" 282 "--skip tests::validator_gas_limit" 283 "--skip tests::validator_graffiti" 284 "--skip tests::validator_graffiti_api" 285 "--skip tests::web3signer_validator_creation" 286 "--skip create_validators::tests::bogus_bn_url" 287 "--skip delete_validators::test::delete_multiple_validators" 288 "--skip import_validators::tests::create_one_validator" 289 "--skip import_validators::tests::create_one_validator_keystore_format" 290 "--skip import_validators::tests::create_one_validator_with_offset" 291 "--skip import_validators::tests::create_one_validator_with_offset_keystore_format" 292 "--skip import_validators::tests::create_three_validators" 293 "--skip import_validators::tests::create_three_validators_with_offset" 294 "--skip import_validators::tests::import_duplicates_when_allowed" 295 "--skip import_validators::tests::import_duplicates_when_allowed_keystore_format" 296 "--skip import_validators::tests::import_duplicates_when_disallowed" 297 "--skip import_validators::tests::import_duplicates_when_disallowed_keystore_format" 298 "--skip list_validators::test::list_all_validators" 299 "--skip move_validators::test::no_validators" 300 "--skip move_validators::test::one_validator_move_all" 301 "--skip move_validators::test::one_validator_move_all_with_password_files" 302 "--skip move_validators::test::one_validator_move_one" 303 "--skip move_validators::test::one_validator_to_non_empty_dest" 304 "--skip move_validators::test::one_validators_move_two_by_count" 305 "--skip move_validators::test::three_validators_move_all" 306 "--skip move_validators::test::three_validators_move_one" 307 "--skip move_validators::test::three_validators_move_one_by_count" 308 "--skip move_validators::test::three_validators_move_three" 309 "--skip move_validators::test::three_validators_move_two" 310 "--skip move_validators::test::three_validators_move_two_by_count" 311 "--skip move_validators::test::two_validator_move_all_and_back_again" 312 "--skip move_validators::test::two_validator_move_all_passwords_removed" 313 "--skip move_validators::test::two_validator_move_all_passwords_removed_failed_password_attempt" 314 "--skip move_validators::test::two_validators_move_all_where_one_is_a_duplicate" 315 "--skip move_validators::test::two_validators_move_one_where_one_is_a_duplicate" 316 "--skip move_validators::test::two_validators_move_one_with_identical_password_files" 317 ] 318 ++ lib.optionals (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isDarwin) [ 319 "--skip subnet_service::tests::attestation_service::test_subscribe_same_subnet_several_slots_apart" 320 "--skip subnet_service::tests::sync_committee_service::same_subscription_with_lower_until_epoch" 321 "--skip subnet_service::tests::sync_committee_service::subscribe_and_unsubscribe" 322 ]; 323 324 passthru = { 325 tests.version = testers.testVersion { 326 package = lighthouse; 327 command = "lighthouse --version"; 328 version = "v${lighthouse.version}"; 329 }; 330 updateScript = nix-update-script { }; 331 }; 332 333 enableParallelBuilding = true; 334 335 # This is needed by the unit tests. 336 FORK_NAME = "capella"; 337 338 meta = with lib; { 339 description = "Ethereum consensus client in Rust"; 340 homepage = "https://lighthouse.sigmaprime.io/"; 341 license = licenses.asl20; 342 maintainers = with maintainers; [ 343 centromere 344 pmw 345 ]; 346 mainProgram = "lighthouse"; 347 # can't compile build script with host libraries 348 broken = 349 stdenv.hostPlatform.isDarwin || !lib.systems.equals stdenv.buildPlatform stdenv.hostPlatform; 350 }; 351}