Uh oh!
There was an error while loading. Please reload this page.
Remove duplicated ILLink PackageReference and update target version of the SDK to 6.0 - #48462
Conversation
ghost
commented
Feb 18, 2021
Tagging subscribers to this area: @ViktorHofer Issue DetailsThe Arcade.SDK already package refrences the ILLink package. The Also, as the ILLink package already exposes the path to the assembly via The SDK target version update is required as the sequencing of the Fixes https://github.com/dotnet/runtime cc @missymessa
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
ViktorHofer
commented
Feb 18, 2021
Waiting for dotnet/linker#1842 to be merged so that I can consume the newer package. |
ViktorHofer
commented
Feb 19, 2021
@jkoritzinsky@hoyosjs can you please take a look at the coreclr error? Seems like the runtime hardcodes the 5.0.0 shared framework somewhere? |
@ViktorHofer Yes, there are projects that run on 5.0. Namely: References to `NetCoreAppToolCurrent`Directory.Build.props
42: <NetCoreAppToolCurrentVersion>5.0</NetCoreAppToolCurrentVersion>
47: <NetCoreAppToolCurrent>net$(NetCoreAppToolCurrentVersion)</NetCoreAppToolCurrent>
48: <NetCoreAppCurrentToolTargetFrameworkMoniker>$(NetCoreAppCurrentIdentifier),Version=v$(NetCoreAppToolCurrentVersion)</NetCoreAppCurrentToolTargetFrameworkMoniker>
67: <AppleAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)'))</AppleAppBuilderDir>
68: <AndroidAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))</AndroidAppBuilderDir>
69: <WasmAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))</WasmAppBuilderDir>
70: <WasmBuildTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmBuildTasks', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))</WasmBuildTasksDir>
71: <MonoAOTCompilerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', 'Debug', '$(NetCoreAppToolCurrent)'))</MonoAOTCompilerDir>
src/coreclr/crossgen-corelib.proj
4: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/runtime.proj
4: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/ToolBox/SOS/DacTableGen/DacTableGen.csproj
4: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/ToolBox/SOS/DIALib/DIALib.ilproj
3: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/aot/crossgen2/crossgen2.csproj
6: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/aot/ILCompiler.Diagnostics/ILCompiler.Diagnostics.csproj
7: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/aot/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj
5: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/aot/ILCompiler.TypeSystem.ReadyToRun.Tests/ILCompiler.TypeSystem.ReadyToRun.Tests.csproj
4: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkGenerator.csproj
5: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/dotnet-pgo/dotnet-pgo.csproj
6: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/r2rdump/R2RDump.csproj
10: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/r2rtest/R2RTest.csproj
6: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/coreclr/tools/runincontext/runincontext.csproj
4: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/installer/tests/Directory.Build.props
12: <TestInfraTargetFramework>$(NetCoreAppToolCurrent)</TestInfraTargetFramework>
src/mono/llvm/llvm-init.proj
3: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/mono/monoaotcross.proj
3: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/mono/nuget/Microsoft.NET.Runtime.Android.Sample.Mono/Microsoft.NET.Runtime.Android.Sample.Mono.pkgproj
14: <PackageFileInclude="@(_AndroidSampleFiles)"TargetPath="tools\$(NetCoreAppToolCurrent)\" />
src/mono/nuget/Microsoft.NET.Runtime.iOS.Sample.Mono/Microsoft.NET.Runtime.iOS.Sample.Mono.pkgproj
17: <PackageFileInclude="@(_iOSSampleFiles)"TargetPath="tools\$(NetCoreAppToolCurrent)\" />
src/mono/nuget/Microsoft.NET.Runtime.wasm.Sample.Mono/Microsoft.NET.Runtime.wasm.Sample.Mono.pkgproj
14: <PackageFileInclude="@(_wasmSampleFiles)"TargetPath="tools\$(NetCoreAppToolCurrent)\" />
src/mono/sample/Android/AndroidSampleApp.csproj
5: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/mono/sample/HelloWorld/HelloWorld.csproj
4: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/mono/sample/iOS/Program.csproj
5: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/mono/sample/mbr/console/ConsoleDelta.csproj
4: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/mono/sample/mbr/DeltaHelper/DeltaHelper.csproj
3: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/mono/wasm/build/WasmApp.InTree.props
8: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/mono/wasm/build/WasmApp.LocalBuild.props
23: <_NetCoreAppToolCurrent>net5.0</_NetCoreAppToolCurrent>
32: <WasmAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppBuilder', 'Debug', '$(_NetCoreAppToolCurrent)', 'publish'))</WasmAppBuilderDir>
33: <WasmBuildTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmBuildTasks', 'Debug', '$(_NetCoreAppToolCurrent)', 'publish'))</WasmBuildTasksDir>
34: <MonoAOTCompilerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', 'Debug', '$(_NetCoreAppToolCurrent)'))</MonoAOTCompilerDir>
src/mono/wasm/wasm.proj
4: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tasks/AndroidAppBuilder/AndroidAppBuilder.csproj
3: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tasks/AotCompilerTask/MonoAOTCompiler.csproj
3: <TargetFrameworks>$(NetCoreAppToolCurrent)</TargetFrameworks>
29: <FilesToPackageInclude="$(OutputPath)$(NetCoreAppToolCurrent)\$(AssemblyName).dll"TargetPath="tasks" />
src/tasks/AppleAppBuilder/AppleAppBuilder.csproj
3: <TargetFrameworks>$(NetCoreAppToolCurrent)</TargetFrameworks>
src/tasks/WasmAppBuilder/WasmAppBuilder.csproj
3: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tasks/WasmBuildTasks/WasmBuildTasks.csproj
3: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tests/Common/Coreclr.TestWrapper/Coreclr.TestWrapper.csproj
6: <NuGetTargetMonikerShort>$(NetCoreAppToolCurrent)</NuGetTargetMonikerShort>
src/tests/Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj
8: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tests/Common/dir.sdkbuild.props
9: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tests/Common/Directory.Build.targets
137: Include="$(ArtifactsBinDir)\WasmAppBuilder\Debug\$(NetCoreAppToolCurrent)\publish\**"
src/tests/Common/external/external.csproj
15: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tests/Common/test_dependencies/test_dependencies.csproj
5: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tests/Common/test_dependencies_fs/test_dependencies.fsproj
5: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
src/tests/Directory.Build.props
133: <NuGetTargetMonikerShort>$(NetCoreAppToolCurrent)</NuGetTargetMonikerShort>
src/tests/Directory.Build.targets
359: Include="$(ArtifactsBinDir)\WasmAppBuilder\Debug\$(NetCoreAppToolCurrent)\publish\**"
364: Include="$(ArtifactsBinDir)\MonoAOTCompiler\Debug\$(NetCoreAppToolCurrent)\**"
src/tests/JIT/Directed/tailcall/mutual_recursion.fsproj
10: <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>Then just a few questions, as I don't know if it's safe to just remap
|
ViktorHofer
commented
Feb 20, 2021
Yes, I realized that after posting the comment... The tasks are definitely fine to be upgraded. I think crossgen2 should be fine as well. |
The Arcade.SDK already package refrences the ILLink package. The duplicate reference in illink.targets caused SDK errors as the Arcade reference has IsImplicitlyDefined set which doesn't allow an additional reference with the same identity. Also, as the ILLink package already exposes the path to the assembly via its props file, using that instead of manually constructing the path to the assembly. The SDK target version update is required as the sequencing of the ILLink.props file was wrong and is required for this change. This isn't considered a breaking change, as the SDK's minimum required version isn't changed.
ffe2ea8 to
dc3e419CompareViktorHofer
commented
Feb 21, 2021
Apparently, they way that coreclr uses the pkgproj infrastructure causes these failures. Likely because the props and targets files are imported directly there: @ericstj can you please help out here? I also updated the NuGet dependencies in Arcade and they already flowed into this PR. The binlog shows that the right assembly with the NuGet breaking change is used. It's unclear to me why there's a MissingMethodException. |
ViktorHofer
commented
Feb 23, 2021
OK I got the fix ready in Arcade, and will update this PR tomorrow. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
ViktorHofer
commented
Feb 23, 2021
@trylek@jkoritzinsky@hoyosjs can someone pls help me figure out why all runtime tests blow up with a 6.0 SDK? I don't even know how to repro this locally. Currently looking into the correlation payloads... |
Oh wow, I just noticed that the SDK value is hardcoded for the runtime tests to 5.0: Questions that I have:
|
jkoritzinsky
commented
Feb 23, 2021
The runtime tests themselves run on the built shared framework, but the xunit wrappers around the tests run on the CLI we pull down. Otherwise when something breaks that xunit uses, we lose all test coverage, which makes the problem harder to track down. |
ViktorHofer
commented
Feb 23, 2021
Thanks Jeremy. I would really love to hear more about what the xunit wrappers are for and why libraries and installer don't need them. Will probably ask about that at some point offline, as this isn't relevant for this PR. |
jkoritzinsky
commented
Feb 23, 2021
The xunit wrappers execute the test and assert the return code matches the expected value. Without them, we wouldn’t have a good way to execute our tests and get an xunit test results file to upload to AzDO. We could use a different runner or create a new one (which we do for onboarding new targets), but the xunit system works well for now. |
ViktorHofer
commented
Feb 23, 2021
@safern@akoeplinger I think you guys touched the code that handles the xunit asset publishing with xharness. Can you please take a look at the error? |
ViktorHofer
commented
Feb 24, 2021
The remaining issue are duplicated xunit artifacts in mobile builds that @safern is currently looking at. I expect (or better to say hope) that we get this in by EOD. |
eerhardt
left a comment
There was a problem hiding this comment.
Looks good.
I still don't understand why we need the empty TestProjects.targets file, but if you think it is valuable, then I'm OK with it.
ghost
commented
Feb 25, 2021
Hello @ViktorHofer! Because this pull request has the p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me ( |
ViktorHofer
commented
Feb 25, 2021
DNS failures are #48751 |
sdmaclea
commented
Feb 25, 2021
I thought this was supposed to wait until the March infras rollout. Or am I missing something? |
ViktorHofer
commented
Feb 25, 2021
The march rollout updates the SDK's minimum required version (the sdk entry in the repo's global.json file). msbuild checks that version when its being invoked (including VS). The target version that was being updated as part of this PR is used for bootstrapping the repo local SDK. |
The Arcade.SDK already package refrences the ILLink package. The
duplicate reference in illink.targets caused SDK errors as the Arcade
reference has IsImplicitlyDefined set which doesn't allow an additional
reference with the same identity.
Also, as the ILLink package already exposes the path to the assembly via
its props file, using that instead of manually constructing the path to
the assembly.
The SDK target version update is required as the sequencing of the
ILLink.props file was wrong and is required for this change. This isn't
considered a breaking change, as the SDK's minimum required version
isn't changed.
Fixes#48409
Fixes#44578
Fixes#46960
cc @missymessa