-
Notifications
You must be signed in to change notification settings - Fork 228
Conversation
{ | ||
if (string.IsNullOrEmpty(KreRoot) || !Directory.Exists(KreRoot)) | ||
{ | ||
Reports.Error.WriteLine("A valid path to the KRE folder is required"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Messages to end with a period.
@davidfowl here's the holiday gift |
{ | ||
if (string.IsNullOrEmpty(CoreClrRoot) || !Directory.Exists(CoreClrRoot)) | ||
{ | ||
Reports.Error.WriteLine("A valid path to the CoreCLR folder is required when target framework is CoreCLR."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
when target framework is CoreCLR
=> aspnetcore50
?
For this to be a proper kpm command it has to be general purpose. kpm dpa is a pretty cryptic name. Can I generally use this on any project? We need to figure out the layering here. There can be a dependency analyzer command and then maybe we use the output of that command to build the TPA list. Putting it all into kpm doesn't make much sense as it's only used to build the KRE. |
Yeah I think this should just share common code with |
The point here is we need to build some of the functionality, at least the dependency analyzing part, into the tooling contained in KRE. Otherwise the build process will always stay in the dilemma that the source codes of build tools are based on next version but the running framework is based on the previous version. We can add a slim down version of dpa to the kpm for just print out the assembly dependency of a given project. It has its general purpose that customer can use it to analyze their own project. |
I think everyone is agreement about the functionality. I think the key suggestions are:
|
Talked with David, will come up a new command name, slim down the function and implement with a more general purpose. |
Undergo major design change. |
DPA: Dependency Analyzer - https://github.com/aspnet/KRuntime/tree/dev/src/DependencyAnalyzer is a tooled used during KRE build process to generate the minimal KRE assembly list and TPA list. It is ran in the second round of the build (d8a8fce) to ensure it relies on the latest build because it is run from source code.
This change adds dependency analyzer (
dpa
) into kpm. Makes it fully independent from the KRE under build. It allows us to build minimal KRE and TPA list in the first round of build. This is the first step towards a further reduced build script (#1010)The
kpm dpa
will build a manifest file lists the files to be included in KRE from CoreCLR and other nuget packages. Additionally, the newdpa
can also build manifest for CLR version of KRE. It is required because CLR version of KRE also packs a few assemblies from NuGet.The
dpa
is also used to generate the tpa.cpp includes a minimal TPA list.AssemblyInformation
is moved fromMicrosoft.Framework.Project
toMicrosoft.Framework.Runtime
becausekpm dpa
relies on it.Microsoft.Framework.PackageManager
can't directly reference toMicrosoft.Framework.Project
Related Issues: #779 #755
Follow up change: #1010
Here's an example of the KRE manifest (for CoreCLR x86)