|
43 | 43 |
|
44 | 44 | isLinux = pkgs.stdenv.isLinux; |
45 | 45 | isDarwin = pkgs.stdenv.isDarwin; |
| 46 | + customRustPlatform = pkgs.makeRustPlatform { |
| 47 | + cargo = rustToolchain; |
| 48 | + rustc = rustToolchain; |
| 49 | + }; |
46 | 50 | in |
47 | 51 | { |
| 52 | + packages.partner-chains = customRustPlatform.buildRustPackage rec { |
| 53 | + pname = "partner-chains"; |
| 54 | + version = "1.7"; |
| 55 | + src = ./.; |
| 56 | + # preBuild = '' |
| 57 | + # export SUBSTRATE_CLI_GIT_COMMIT_HASH=${dirtyShortRev or shortRev} |
| 58 | + # ''; |
| 59 | + |
| 60 | + useFetchCargoVendor = true; |
| 61 | + cargoHash = "sha256-evSP89WBwPl2jL43/ddZWyt+CgxRR9Xst1mGn8bKKgo="; |
| 62 | + buildType = "production"; |
| 63 | + #buildAndTestSubdir = dir; |
| 64 | + doCheck = false; |
| 65 | + patches = []; |
| 66 | + |
| 67 | + nativeBuildInputs = [ |
| 68 | + pkgs.pkg-config |
| 69 | + pkgs.protobuf |
| 70 | + |
| 71 | + pkgs.llvmPackages.lld |
| 72 | + customRustPlatform.bindgenHook |
| 73 | + ]; |
| 74 | + buildInputs = [ |
| 75 | + pkgs.rocksdb |
| 76 | + pkgs.openssl |
| 77 | + pkgs.libclang.lib |
| 78 | + ] ++ pkgs.lib.optionals pkgs.stdenv.hostPlatform.isLinux [ |
| 79 | + pkgs.rust-jemalloc-sys-unprefixed |
| 80 | + ] ++ pkgs.lib.optionals pkgs.stdenv.hostPlatform.isDarwin [ |
| 81 | + pkgs.darwin.apple_sdk.frameworks.SystemConfiguration |
| 82 | + pkgs.darwin.apple_sdk.frameworks.Security |
| 83 | + ]; |
| 84 | + |
| 85 | + postFixup = pkgs.lib.optionalString pkgs.stdenv.hostPlatform.isLinux '' |
| 86 | + patchelf --set-rpath "${pkgs.rocksdb}/lib:${pkgs.stdenv.cc.cc.lib}/lib" $out/bin/partner-chains-demo-node |
| 87 | + ''; |
| 88 | + |
| 89 | + # Force skip support check in CC crate |
| 90 | + #CRATE_CC_NO_DEFAULTS = "1"; |
| 91 | + |
| 92 | + # Platform-specific features |
| 93 | + RUSTFLAGS = pkgs.lib.optionalString pkgs.stdenv.hostPlatform.isDarwin |
| 94 | + "--cfg unwinding_backport --cfg unwinding_apple"; |
| 95 | + |
| 96 | + # Existing environment variables |
| 97 | + CC_ENABLE_DEBUG_OUTPUT = "1"; |
| 98 | + #CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_LINKER = "${pkgs.llvmPackages.lld}/bin/lld"; |
| 99 | + #RUST_SRC_PATH = "${customRustPlatform.rustLibSrc}"; |
| 100 | + LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; |
| 101 | + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ |
| 102 | + rustToolchain |
| 103 | + pkgs.stdenv.cc.cc |
| 104 | + pkgs.libz |
| 105 | + pkgs.clang |
| 106 | + ]; |
| 107 | + |
| 108 | + # Platform-specific flags |
| 109 | + CFLAGS = |
| 110 | + if pkgs.lib.hasSuffix "linux" system then |
| 111 | + "-DJEMALLOC_STRERROR_R_RETURNS_CHAR_WITH_GNU_SOURCE" |
| 112 | + else |
| 113 | + ""; |
| 114 | + |
| 115 | + PROTOC = "${pkgs.protobuf}/bin/protoc"; |
| 116 | + ROCKSDB_LIB_DIR = "${pkgs.rocksdb}/lib/"; |
| 117 | + OPENSSL_NO_VENDOR = 1; |
| 118 | + OPENSSL_DIR = "${pkgs.openssl.dev}"; |
| 119 | + OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include"; |
| 120 | + OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib"; |
| 121 | + BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.stdenv.cc.cc}/include -std=c++17"; |
| 122 | + |
| 123 | + }; |
48 | 124 | devShells.default = pkgs.mkShell { |
49 | 125 | packages = |
50 | 126 | with pkgs; |
|
0 commit comments