Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make ILAsm and ILDasm packages standalone. Clean up Microsoft.NET.Sdk.IL #25930

Merged

Conversation

@jkoritzinsky
Copy link
Member

commented Jul 29, 2019

Now that ILAsm and ILDasm are standalone as of #25144, this PR updates the Microsoft.NETCore.ILAsm and Microsoft.NETCore.ILDasm packages to not depend on the CoreCLR package.

Additionally, this PR also cleans up the Microsoft.NET.Sdk.IL sdk since standalone ILAsm and ILDasm allows a lot of the MSBuild logic to be removed.

jkoritzinsky added some commits Jul 29, 2019

Directly reference ILAsm and ILDasm in their packages instead of copy…
…ing. Don't pull down CoreCLR or ClrJit since ILAsm and ILDasm don't need them. Don't copy ILAsm or ILDasm to the output directory of the project when using the tools from packages.
@Nirmal4G

This comment has been minimized.

Copy link

commented Jul 30, 2019

I see that they refer the packages from NuGet. For an SDK, the tools shouldn't be self contained (to allow better portability, not depending on NuGet)?

@Nirmal4G

This comment has been minimized.

Copy link

commented Jul 30, 2019

Since the tools themselves are portable now, why not put them inside the SDK package, preferably a Tools folder besides the Sdk folder.

@jkoritzinsky

This comment has been minimized.

Copy link
Member Author

commented Jul 30, 2019

The tools are still architecture-specific native tools, so can't just package on one platform build. I don't think the MSBuild support for SDK resolution via NuGet supports runtime.json-based architecture specific packages, so we likely need to keep using the NuGet packages.

Since the <PackageReference>s are marked with IsImplicitlyDefined="true", they won't show up to the user and are encapsulated in the SDK.

@Nirmal4G

This comment has been minimized.

Copy link

commented Jul 30, 2019

so can't just package on one platform build

I see. Since, it's a private package, this does not matter. But you can also just do this:

Tools\<runtime-id>\<files>

Then again, the downside is, the native assets for every runtime-id would be there, contributing to the package size. You might not want other platform/arch assets on the platform/arch you're running from.

@Nirmal4G

This comment has been minimized.

Copy link

commented Jul 30, 2019

Anyway, since we have the compiler written in .NET, It would be nice to have IL tools and decompiler written in .NET too!

@jkoritzinsky

This comment has been minimized.

Copy link
Member Author

commented Aug 8, 2019

@tannergooding
Copy link
Member

left a comment

LGTM.

Have we validated S.R.CS.Unsafe.ilproj builds correctly with this?

@jkoritzinsky

This comment has been minimized.

Copy link
Member Author

commented Aug 8, 2019

I did a local build with a test project and it restored the package correctly.

@jkoritzinsky jkoritzinsky merged commit 4e960d7 into dotnet:master Aug 8, 2019

37 checks passed

WIP Ready for review
Details
coreclr-ci Build #20190729.19 succeeded
Details
coreclr-ci (Build Linux arm checked) Build Linux arm checked succeeded
Details
coreclr-ci (Build Linux arm64 checked) Build Linux arm64 checked succeeded
Details
coreclr-ci (Build Linux arm64 release) Build Linux arm64 release succeeded
Details
coreclr-ci (Build Linux_musl x64 checked) Build Linux_musl x64 checked succeeded
Details
coreclr-ci (Build Linux_musl x64 release) Build Linux_musl x64 release succeeded
Details
coreclr-ci (Build Linux_rhel6 x64 release) Build Linux_rhel6 x64 release succeeded
Details
coreclr-ci (Build Windows_NT arm Checked) Build Windows_NT arm Checked succeeded
Details
coreclr-ci (Build Windows_NT arm64 Checked) Build Windows_NT arm64 Checked succeeded
Details
coreclr-ci (Build Windows_NT x64 Checked) Build Windows_NT x64 Checked succeeded
Details
coreclr-ci (Build Windows_NT x64 Debug) Build Windows_NT x64 Debug succeeded
Details
coreclr-ci (Build Windows_NT x86 Checked) Build Windows_NT x86 Checked succeeded
Details
coreclr-ci (Build Windows_NT x86 Debug) Build Windows_NT x86 Debug succeeded
Details
coreclr-ci (Formatting Linux x64) Formatting Linux x64 succeeded
Details
coreclr-ci (Test Pri0 CoreFX Linux x64 checked) Test Pri0 CoreFX Linux x64 checked succeeded
Details
coreclr-ci (Test Pri0 CoreFX Windows_NT x64 checked) Test Pri0 CoreFX Windows_NT x64 checked succeeded
Details
coreclr-ci (Test Pri0 Linux x64 checked) Test Pri0 Linux x64 checked succeeded
Details
coreclr-ci (Test Pri0 Linux_musl x64 release) Test Pri0 Linux_musl x64 release succeeded
Details
coreclr-ci (Test Pri0 OSX x64 checked) Test Pri0 OSX x64 checked succeeded
Details
coreclr-ci (Test Pri0 R2R Linux x64 checked) Test Pri0 R2R Linux x64 checked succeeded
Details
coreclr-ci (Test Pri0 R2R OSX x64 checked) Test Pri0 R2R OSX x64 checked succeeded
Details
coreclr-ci (Test Pri0 R2R Windows_NT x64 checked) Test Pri0 R2R Windows_NT x64 checked succeeded
Details
coreclr-ci (Test Pri0 R2R Windows_NT x86 checked) Test Pri0 R2R Windows_NT x86 checked succeeded
Details
coreclr-ci (Test Pri0 Windows_NT arm checked) Test Pri0 Windows_NT arm checked succeeded
Details
coreclr-ci (Test Pri0 Windows_NT arm64 checked) Test Pri0 Windows_NT arm64 checked succeeded
Details
coreclr-ci (Test Pri0 Windows_NT x64 checked) Test Pri0 Windows_NT x64 checked succeeded
Details
coreclr-ci (Test Pri0 Windows_NT x86 checked) Test Pri0 Windows_NT x86 checked succeeded
Details
coreclr-ci (Test pri0 Linux arm checked) Test pri0 Linux arm checked succeeded
Details
coreclr-ci (Test pri0 Linux arm64 checked) Test pri0 Linux arm64 checked succeeded
Details
coreclr-ci (Test pri0 Linux_musl x64 checked) Test pri0 Linux_musl x64 checked succeeded
Details
coreclr-ci (build Linux x64 Checked) build Linux x64 Checked succeeded
Details
coreclr-ci (build OSX x64 Checked) build OSX x64 Checked succeeded
Details
coreclr-ci (build Windows_NT arm Release) build Windows_NT arm Release succeeded
Details
coreclr-ci (build Windows_NT arm64 Release) build Windows_NT arm64 Release succeeded
Details
coreclr-ci (build Windows_NT x64 Release) build Windows_NT x64 Release succeeded
Details
license/cla All CLA requirements met.
Details

@jkoritzinsky jkoritzinsky deleted the jkoritzinsky:standalone-ilasm-ildasm-pkg branch Aug 8, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.