Nix + dotnet | 118 Members | |
| 23 Servers |
| Sender | Message | Time |
|---|---|---|
| 10 Dec 2024 | ||
| but it's annoying and only works for executables | 15:41:37 | |
has anyone ever looked into making fetch-deps use GenerateRestoreGraphFile instead doing a full restore? | 16:32:32 | |
* has anyone ever looked into making fetch-deps use GenerateRestoreGraphFile instead of doing a full restore? | 16:32:39 | |
In reply to @6pak:matrix.org I haven't. There are a lot of nuances to finding the actual dependencies: dotnet tools, paket, etc. It might still be useful if it can be used for a subset of packages, either opt-in or out. | 16:50:30 | |
| 11 Dec 2024 | ||
| OK, leaving aside the runtime behavior, can anyone think of a way to modify my C# project with native dependency to make it fail building under Nix if that dependency is not declared in Nix? | 23:15:44 | |
| 12 Dec 2024 | ||
Simply not possible. Nix currently has no resources for determining which native libraries your project uses so it cannot make the build fail. Even if your project is being built from source using buildDotnetModule, .NET has no builtin facilities to block a build if said native libraries aren't found either. | 00:00:52 | |
And we add the required libraries in LD_PRELOAD_PATH instead of at build time, so even if there was a tool to block the build if the native library isn't found, it'd have to be very nix specific as we'd have to have an env-var or MSBuild property to indicate where it should search for said libraries on. | 00:02:14 | |
* And we add the required libraries in LD_PRELOAD_PATH in makeWrapper (after the project has been built) instead of at build time, so even if there was a tool to block the build if the native library isn't found, it'd have to be very nix specific as we'd have to have an env-var or MSBuild property to indicate where it should search for said libraries on. | 00:02:32 | |
| cant you fail the build with an msbuild target? | 00:03:29 | |
* And we add the required libraries in LD_LIBRARY_PATH in makeWrapper (after the project has been built) instead of at build time, so even if there was a tool to block the build if the native library isn't found, it'd have to be very nix specific as we'd have to have an env-var or MSBuild property to indicate where it should search for said libraries on. | 00:04:21 | |
| no, because we'd need to have something to:
| 00:05:50 | |
| it'd be as much work as making something like a tool to patch those after the fact | 00:06:08 | |
| so it's just easier to make a tool to patch it since it'll work with both source builds and prebuilt binaries | 00:06:28 | |
| * not easily, because we'd need to have something to:
| 00:06:37 | |
| actually this made me think, GGG how would patchcil handle nativeaot builds? | 00:08:31 | |
| it can't, out of scope | 00:08:41 | |
we'd just have to use LD_LIBRARY_PATH instead | 00:08:51 | |
In reply to @gggkiller:matrix.orgpatchcil would solve 1. here, but for 2. and 3. would be in the nix script | 00:08:55 | |
* we'd just have to use LD_LIBRARY_PATH instead like we do currently | 00:08:56 | |
In reply to @gggkiller:matrix.org* for what I was thinking, patchcil would solve 1. here, but for 2. and 3. would be in the nix script | 00:09:09 | |
it'd actually solve the whole process when running in autoPatchcilHook mode | 00:09:15 | |
| which is the more "useful" mode I think | 00:09:31 | |
In reply to @gggkiller:matrix.orgit can for source builds | 00:09:51 | |
| just run patchcil before naot | 00:09:58 | |
| with a msbuild target | 00:10:03 | |
| the issue is how you pass in what libraries you want from nix | 00:10:15 | |
| it'd be quite a bit of work though, I wouldn't put it in as a requirement for the MVP | 00:10:29 | |
| maybe a 1.1 release or something | 00:10:38 | |
| no work would be needed in patchcil itself | 00:10:57 | |
| it doesn't care about what you do with the dlls after the fact | 00:11:06 | |