-
Notifications
You must be signed in to change notification settings - Fork 228
DNX does not select a runtime or resolve runtime assets #2387
Comments
Going to capture some of the results of our previous design discussions on this:
|
After chatting with @ericstj, @davidfowl and @Eilon we decided we can move this to beta8 |
Ok, the final design I'm going with is as follows:
/cc @davidfowl @lodejard This sounds like the vague conversations we had, but we never landed on a concrete design here so let me know if I'm way off base. |
/cc @nguerrera @ellismg @stephentoub |
We can probably do something there. We already make Even better would be if the CoreCLR can expose enough data for us to synthesize the RID :) |
Not sure that'd help, it's a chicken/egg how do you know which CoreCLR implementation assemblies to use until you have the RID to evaluate the package? |
These decisions will all be happening after booting the CoreCLR/DNX, they are only for packages used by projects. DNX has to have the binaries necessary for booting itself in the DNX runtime folder. That may mean we need distro-specific DNXes if you have distro-specific assemblies for those packages. It would be good to sync up on that as quickly as possible. Will the CoreCLR be distro-specific as well? |
Yes, the CoreCLR will be distro-specific. |
Just a thought here: why can't you pre-resolve a lock file for the DNX runtime when building DNX? I imagine your native piece that bootstraps DNX has enough smarts to look at a JSON file to determine paths to dependencies instead of assuming they'll all be in a single folder. The native piece can then make some calls into native APIs to determine the RID and thus the target section in the lock file to use. It seems pretty heavy handed to fork DNX per distro when the only thing that's likely to be different are some native shims on the bottom of stack. |
Well, in that case how would we even ship libcoreclr.so? Would we ship all the distros together in one big package by folder? |
The DNX has to be self-contained for enough to boot itself. We don't want it to be dependent upon external packages at boot time. Applications can use packages, but the runtime itself is self-contained. So, if the CoreCLR (and the packages necessary to boot DNX) are going to be distro-specific, we would likely have to be distro-specific as well. |
Native library loading doesn't appear to be implemented. Is that tracked in a separate issue? (Reopening until I hear otherwise) |
#402? |
Yep |
Packages can have runtime specific assets. Currently our .NET packages define a set of runtime IDs with a heirarchy that are used by our packages. This works fine for UWP, PCL, and Desktop where the MSBuild task uses an active RID when resolving runtime assets, but not on DNX.
This is going to become even more important as we use the RID more in the upcoming release to distinguish between linux and windows assets.
The text was updated successfully, but these errors were encountered: