|
54 | 54 | # enableMetal = true;
|
55 | 55 | enableOpencl = true;
|
56 | 56 | };
|
| 57 | + cargo-audit = pkgs.rustPlatform.buildRustPackage rec { |
| 58 | + version = "0.21.0"; |
| 59 | + pname = "cargo-audit"; |
| 60 | + src = pkgs.fetchCrate { |
| 61 | + inherit pname version; |
| 62 | + sha256 = "sha256-oMXpJE49If4QKE80ZKhRpMRPh3Bl517a2Ez/1VcaQJQ="; |
| 63 | + }; |
| 64 | + cargoLock = rec { |
| 65 | + lockFile = "${src}/Cargo.lock"; |
| 66 | + }; |
| 67 | + }; |
57 | 68 | })
|
58 | 69 | ];
|
59 | 70 | };
|
60 | 71 | inherit (pkgs) lib;
|
61 | 72 |
|
62 |
| - stableToolchain = pkgs.rust-bin.stable.latest.default; |
63 |
| - nightlyToolchain = pkgs.rust-bin.nightly.latest.default.override { |
64 |
| - extensions = ["rust-src" "rust-analyzer"]; |
65 |
| - }; |
66 |
| - stableToolchainWithLLvmTools = pkgs.rust-bin.stable.latest.default.override { |
| 73 | + version = "latest"; |
| 74 | + |
| 75 | + rustToolchain = pkgs.rust-bin.stable.${version}.default; |
| 76 | + rustToolchainWithLLvmTools = pkgs.rust-bin.stable.${version}.default.override { |
67 | 77 | extensions = ["rust-src" "llvm-tools"];
|
68 | 78 | };
|
69 |
| - stableToolchainWithRustAnalyzer = pkgs.rust-bin.stable.latest.default.override { |
70 |
| - extensions = ["rust-src" "rust-analyzer"]; |
71 |
| - }; |
72 |
| - craneLib = (crane.mkLib pkgs).overrideToolchain stableToolchain; |
73 |
| - craneLibLLvmTools = (crane.mkLib pkgs).overrideToolchain stableToolchainWithLLvmTools; |
| 79 | + rustToolchainWithRustAnalyzer = pkgs.rust-bin.stable.${version}.default.override ({ |
| 80 | + extensions = ["rust-src" "rust-analyzer"]; |
| 81 | + } |
| 82 | + // (lib.optionalAttrs pkgs.stdenv.isDarwin { |
| 83 | + targets = ["aarch64-apple-darwin" "x86_64-apple-darwin"]; |
| 84 | + })); |
| 85 | + craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain; |
| 86 | + craneLibLLvmTools = (crane.mkLib pkgs).overrideToolchain rustToolchainWithLLvmTools; |
74 | 87 |
|
75 | 88 | src = lib.sources.sourceFilesBySuffices ./. [".rs" ".toml" ".patch" ".mnn" ".h" ".cpp" ".svg" "lock"];
|
76 | 89 | MNN_SRC = mnn-src;
|
77 |
| - commonArgs = |
78 |
| - { |
79 |
| - inherit src MNN_SRC; |
80 |
| - pname = "mnn"; |
81 |
| - doCheck = false; |
82 |
| - LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; |
83 |
| - nativeBuildInputs = with pkgs; [ |
84 |
| - cmake |
85 |
| - llvmPackages.libclang.lib |
86 |
| - clang |
87 |
| - ]; |
88 |
| - buildInputs = with pkgs; |
89 |
| - [] |
90 |
| - ++ (lib.optionals pkgs.stdenv.isDarwin [ |
91 |
| - darwin.apple_sdk.frameworks.OpenCL |
92 |
| - ] |
93 |
| - ++ (lib.optionals pkgs.stdenv.isAarch64 [ |
94 |
| - darwin.apple_sdk.frameworks.Metal |
95 |
| - darwin.apple_sdk.frameworks.CoreML |
96 |
| - ])); |
97 |
| - } |
98 |
| - // (lib.optionalAttrs pkgs.stdenv.isLinux { |
99 |
| - BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.llvmPackages.libclang.lib}/lib/clang/18/include"; |
100 |
| - }); |
| 90 | + commonArgs = { |
| 91 | + inherit src MNN_SRC; |
| 92 | + pname = "mnn"; |
| 93 | + doCheck = false; |
| 94 | + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; |
| 95 | + nativeBuildInputs = with pkgs; [ |
| 96 | + cmake |
| 97 | + llvmPackages.libclang.lib |
| 98 | + clang |
| 99 | + pkg-config |
| 100 | + ]; |
| 101 | + buildInputs = with pkgs; |
| 102 | + [] |
| 103 | + ++ (lib.optionals pkgs.stdenv.isLinux [ |
| 104 | + ocl-icd |
| 105 | + opencl-headers |
| 106 | + ]) |
| 107 | + ++ (lib.optionals pkgs.stdenv.isDarwin [ |
| 108 | + darwin.apple_sdk.frameworks.OpenCL |
| 109 | + ] |
| 110 | + ++ (lib.optionals pkgs.stdenv.isAarch64 [ |
| 111 | + darwin.apple_sdk.frameworks.Metal |
| 112 | + darwin.apple_sdk.frameworks.CoreML |
| 113 | + ])); |
| 114 | + }; |
101 | 115 | cargoArtifacts = craneLib.buildPackage commonArgs;
|
102 | 116 | in {
|
103 |
| - checks = { |
104 |
| - mnn-clippy = craneLib.cargoClippy (commonArgs |
105 |
| - // { |
106 |
| - inherit cargoArtifacts; |
107 |
| - cargoClippyExtraArgs = "--all-targets -- --deny warnings"; |
108 |
| - }); |
109 |
| - mnn-docs = craneLib.cargoDoc (commonArgs |
110 |
| - // { |
111 |
| - inherit cargoArtifacts; |
112 |
| - cargoDocExtraArgs = "-p mnn -p mnn-sys"; |
113 |
| - }); |
114 |
| - mnn-fmt = craneLib.cargoFmt {inherit src;}; |
115 |
| - # Audit dependencies |
116 |
| - mnn-audit = craneLib.cargoAudit { |
117 |
| - inherit src advisory-db; |
118 |
| - }; |
| 117 | + checks = |
| 118 | + { |
| 119 | + mnn-clippy = craneLib.cargoClippy (commonArgs |
| 120 | + // { |
| 121 | + inherit cargoArtifacts; |
| 122 | + cargoClippyExtraArgs = "--all-targets -- --deny warnings"; |
| 123 | + }); |
| 124 | + mnn-docs = craneLib.cargoDoc (commonArgs |
| 125 | + // { |
| 126 | + inherit cargoArtifacts; |
| 127 | + cargoDocExtraArgs = "-p mnn -p mnn-sys"; |
| 128 | + }); |
| 129 | + mnn-fmt = craneLib.cargoFmt {inherit src;}; |
| 130 | + # Audit dependencies |
| 131 | + mnn-audit = |
| 132 | + craneLib.cargoAudit.override { |
| 133 | + cargo-audit = pkgs.cargo-audit; |
| 134 | + } { |
| 135 | + inherit src advisory-db; |
| 136 | + }; |
119 | 137 |
|
120 |
| - # Audit licenses |
121 |
| - mnn-deny = craneLib.cargoDeny { |
122 |
| - inherit src; |
123 |
| - }; |
124 |
| - mnn-nextest = craneLib.cargoNextest (commonArgs |
125 |
| - // { |
126 |
| - inherit cargoArtifacts; |
127 |
| - partitions = 1; |
128 |
| - partitionType = "count"; |
129 |
| - }); |
130 |
| - mnn-sys-clippy = craneLib.cargoClippy (commonArgs |
131 |
| - // { |
132 |
| - inherit cargoArtifacts; |
133 |
| - cargoClippyExtraArgs = "-p mnn-sys --all-targets -- --deny warnings"; |
134 |
| - }); |
135 |
| - mnn-sys-nextest = craneLib.cargoNextest (commonArgs |
136 |
| - // { |
137 |
| - inherit cargoArtifacts; |
138 |
| - partitions = 1; |
139 |
| - partitionType = "count"; |
140 |
| - cargoExtraArgs = "-p mnn-sys"; |
141 |
| - }); |
142 |
| - # mnn-asan = let |
143 |
| - # rustPlatform = pkgs.makeRustPlatform { |
144 |
| - # cargo = nightlyToolchain; |
145 |
| - # rustc = nightlyToolchain; |
146 |
| - # }; |
147 |
| - # in |
148 |
| - # rustPlatform.buildRustPackage ( |
149 |
| - # commonArgs |
150 |
| - # // { |
151 |
| - # inherit src; |
152 |
| - # name = "mnn-leaks"; |
153 |
| - # cargoLock = { |
154 |
| - # lockFile = ./Cargo.lock; |
155 |
| - # outputHashes = { |
156 |
| - # "cmake-0.1.50" = "sha256-GM2D7dpb2i2S6qYVM4HYk5B40TwKCmGQnUPfXksyf0M="; |
157 |
| - # }; |
158 |
| - # }; |
159 |
| - # |
160 |
| - # buildPhase = '' |
161 |
| - # cargo test --target aarch64-apple-darwin |
162 |
| - # ''; |
163 |
| - # RUSTFLAGS = "-Zsanitizer=address"; |
164 |
| - # ASAN_OPTIONS = "detect_leaks=1"; |
165 |
| - # # MNN_COMPILE = "NO"; |
166 |
| - # # MNN_LIB_DIR = "${pkgs.mnn}/lib"; |
167 |
| - # } |
168 |
| - # ); |
169 |
| - }; |
170 |
| - packages = |
171 |
| - rec { |
172 |
| - mnn = craneLib.buildPackage (commonArgs |
| 138 | + # Audit licenses |
| 139 | + mnn-deny = craneLib.cargoDeny { |
| 140 | + inherit src; |
| 141 | + }; |
| 142 | + mnn-nextest = craneLib.cargoNextest (commonArgs |
173 | 143 | // {
|
174 | 144 | inherit cargoArtifacts;
|
| 145 | + partitions = 1; |
| 146 | + partitionType = "count"; |
175 | 147 | });
|
176 |
| - inspect = craneLib.buildPackage (commonArgs |
| 148 | + mnn-sys-clippy = craneLib.cargoClippy (commonArgs |
177 | 149 | // {
|
178 | 150 | inherit cargoArtifacts;
|
179 |
| - pname = "inspect"; |
180 |
| - cargoExtraArgs = |
181 |
| - "--example inspect" |
182 |
| - + (lib.optionalString pkgs.stdenv.isDarwin " --features opencl" + lib.optionalString pkgs.stdenv.isAarch64 ",metal,coreml"); |
| 151 | + cargoClippyExtraArgs = "-p mnn-sys --all-targets -- --deny warnings"; |
183 | 152 | });
|
184 |
| - default = mnn; |
| 153 | + mnn-sys-nextest = craneLib.cargoNextest (commonArgs |
| 154 | + // { |
| 155 | + inherit cargoArtifacts; |
| 156 | + partitions = 1; |
| 157 | + partitionType = "count"; |
| 158 | + cargoExtraArgs = "-p mnn-sys"; |
| 159 | + }); |
| 160 | + # mnn-asan = let |
| 161 | + # rustPlatform = pkgs.makeRustPlatform { |
| 162 | + # cargo = nightlyToolchain; |
| 163 | + # rustc = nightlyToolchain; |
| 164 | + # }; |
| 165 | + # in |
| 166 | + # rustPlatform.buildRustPackage ( |
| 167 | + # commonArgs |
| 168 | + # // { |
| 169 | + # inherit src; |
| 170 | + # name = "mnn-leaks"; |
| 171 | + # cargoLock = { |
| 172 | + # lockFile = ./Cargo.lock; |
| 173 | + # outputHashes = { |
| 174 | + # "cmake-0.1.50" = "sha256-GM2D7dpb2i2S6qYVM4HYk5B40TwKCmGQnUPfXksyf0M="; |
| 175 | + # }; |
| 176 | + # }; |
| 177 | + # |
| 178 | + # buildPhase = '' |
| 179 | + # cargo test --target aarch64-apple-darwin |
| 180 | + # ''; |
| 181 | + # RUSTFLAGS = "-Zsanitizer=address"; |
| 182 | + # ASAN_OPTIONS = "detect_leaks=1"; |
| 183 | + # # MNN_COMPILE = "NO"; |
| 184 | + # # MNN_LIB_DIR = "${pkgs.mnn}/lib"; |
| 185 | + # } |
| 186 | + # ); |
185 | 187 | }
|
186 | 188 | // lib.optionalAttrs (!pkgs.stdenv.isDarwin) {
|
187 | 189 | mnn-llvm-cov = craneLibLLvmTools.cargoLlvmCov (commonArgs // {inherit cargoArtifacts;});
|
188 | 190 | };
|
| 191 | + packages = rec { |
| 192 | + mnn = craneLib.buildPackage (commonArgs |
| 193 | + // { |
| 194 | + inherit cargoArtifacts; |
| 195 | + }); |
| 196 | + inspect = craneLib.buildPackage (commonArgs |
| 197 | + // { |
| 198 | + inherit cargoArtifacts; |
| 199 | + pname = "inspect"; |
| 200 | + cargoExtraArgs = |
| 201 | + "--example inspect" |
| 202 | + + (lib.optionalString pkgs.stdenv.isDarwin " --features opencl" + lib.optionalString pkgs.stdenv.isAarch64 ",metal,coreml"); |
| 203 | + }); |
| 204 | + default = mnn; |
| 205 | + }; |
189 | 206 |
|
190 | 207 | devShells = {
|
191 |
| - default = pkgs.mkShell { |
192 |
| - LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; |
193 |
| - packages = with pkgs; |
194 |
| - [ |
195 |
| - mnn |
196 |
| - nightlyToolchain |
197 |
| - zstd |
198 |
| - cargo-nextest |
199 |
| - cargo-hakari |
200 |
| - cargo-deny |
201 |
| - cargo-semver-checks |
202 |
| - rust-bindgen |
203 |
| - llvm |
204 |
| - ] |
205 |
| - ++ (lib.optionals pkgs.stdenv.isDarwin [ |
206 |
| - darwin.apple_sdk.frameworks.OpenCL |
| 208 | + default = pkgs.mkShell (commonArgs |
| 209 | + // { |
| 210 | + packages = with pkgs; |
| 211 | + [ |
| 212 | + cargo-audit |
| 213 | + cargo-deny |
| 214 | + cargo-hakari |
| 215 | + cargo-nextest |
| 216 | + cargo-semver-checks |
| 217 | + clang |
| 218 | + git |
| 219 | + git-lfs |
| 220 | + llvm |
| 221 | + mnn |
| 222 | + nushell |
| 223 | + rust-bindgen |
| 224 | + rustToolchainWithRustAnalyzer |
207 | 225 | ]
|
208 |
| - ++ (lib.optionals pkgs.stdenv.isAarch64 [ |
209 |
| - darwin.apple_sdk.frameworks.Metal |
210 |
| - darwin.apple_sdk.frameworks.CoreML |
211 |
| - ])); |
212 |
| - # RUSTFLAGS = "-Zsanitizer=address"; |
213 |
| - # ASAN_OPTIONS = "detect_leaks=1"; |
214 |
| - }; |
| 226 | + ++ (lib.optionals pkgs.stdenv.isDarwin [ |
| 227 | + darwin.apple_sdk.frameworks.OpenCL |
| 228 | + ] |
| 229 | + ++ (lib.optionals pkgs.stdenv.isAarch64 [ |
| 230 | + darwin.apple_sdk.frameworks.Metal |
| 231 | + darwin.apple_sdk.frameworks.CoreML |
| 232 | + ])) |
| 233 | + ++ (lib.optionals pkgs.stdenv.isLinux [ |
| 234 | + cargo-llvm-cov |
| 235 | + ]); |
| 236 | + }); |
215 | 237 | };
|
216 | 238 | }
|
217 | 239 | )
|
|
0 commit comments