| 14 Dec 2024 |
GGG | In reply to @6pak:matrix.org wouldn't it make more sense to run (auto)patchcil as part of nuget overrides though? Well, thinking about it, I don't think the tools in a nuget package use the native libraries in the runtime dir, they're probably packaged as a normal command line tool | 01:46:27 |
GGG | Or there would be something in the `.deps.json` file pointing at it, so we shouldn't need any other special logic other than handling that file. | 01:47:03 |
GGG | In reply to @6pak:matrix.org it would be nice if people annotated those with SupportedOSPlatformAttribute, but they probably don't They'd probably only annotate the methods that call those pinvoke shims instead of the shims themselves, so worst case it'd need some blackbox control flow analysis which would most likely fail due to reflection, so I don't think it's possible | 01:48:11 |
GGG | Best that can be done is exclude some extensions based on the target RID most likely | 01:48:26 |
GGG | Like, if it's `linux-x64` we know it won't be needing any `.dll`s nor `.dylib`s | 01:49:05 |
6pak | you don't need to include the extension in dllimport library name though | 01:49:28 |
GGG | True, but a few do, so we could save some headache by excluding those beforehand | 01:49:55 |
GGG | I saw a dllimport with kernel32.dll in avalonia, so if we auto excluded those it'd already save the need to manually specify the exclude globs based on the target platform on the nix side | 01:50:55 |
GGG | It was all fine and dandy when I was only targeting the Avalonia.X11 assembly, but once I targeted the whole directory avalonia-ilspy outputs then it became a huge mess | 01:53:22 |
6pak | actually, can .deps.json take absolute paths for managed dlls? | 01:56:43 |
GGG | I'm not sure, I never even looked into what's in it properly | 01:57:04 |
GGG | This is my first time actually caring about them | 01:57:18 |
6pak | wouldn't it mean we can easily share .net deps? | 01:57:45 |
6pak | instead of duplicating the dlls in every .net app in nix store | 01:57:54 |
GGG | Maybe, that's an interesting idea | 01:58:02 |
GGG | Though instead of that we could just symlink them there if we can't | 01:58:15 |
GGG | Not too hard either | 01:58:21 |
6pak | oh, riht | 01:58:23 |
6pak | * oh, right | 01:58:25 |
6pak | because running autopatchelf for avalonia dlls for every single .net app is kinda stupid | 01:58:46 |
GGG | Definitely | 01:58:53 |
6pak | when you can just do it once in the nuget overrides | 01:58:54 |
6pak | and by nuget overrides I mean https://github.com/NixOS/nixpkgs/blob/e0464e47880a69896f0fb1810f00e0de469f770a/pkgs/build-support/dotnet/fetch-nupkg/overrides.nix#L56 | 01:59:26 |
GGG | Though if we can use the avalonia being built in nixpkgs, then we wouldn't need to patchcil it | 01:59:27 |
6pak | Redacted or Malformed Event | 01:59:30 |
6pak | * and by nuget overrides I mean https://github.com/NixOS/nixpkgs/blob/e0464e47880a69896f0fb1810f00e0de469f770a/pkgs/build-support/dotnet/fetch-nupkg/overrides.nix | 01:59:38 |
6pak | * and by nuget overrides I mean https://github.com/NixOS/nixpkgs/blob/e0464e47880a69896f0fb1810f00e0de469f770a/pkgs/build-support/dotnet/fetch-nupkg/overrides.nix, which I assume you know exists | 01:59:50 |
GGG | In reply to @6pak:matrix.org which I assume you know exists Yeah, I do, I wanted to make it possible for people to provide their own overrides actually | 01:59:59 |
GGG | The way it is right now is kinda too carved in stone | 02:00:16 |
GGG | But yeah, we could put it in the overrides for widely used packages, but adding some default excludes based on RID wouldn't harm anyone I think | 02:04:40 |