Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

React to APICompat changes enabling reverse APICompat for facades#37375

Merged
ericstj merged 8 commits intodotnet:masterfrom
ericstj:apiCompatChanges
May 8, 2019
Merged

React to APICompat changes enabling reverse APICompat for facades#37375
ericstj merged 8 commits intodotnet:masterfrom
ericstj:apiCompatChanges

Conversation

@ericstj
Copy link
Copy Markdown
Member

@ericstj ericstj commented May 2, 2019

I made changes to API Compat that enable it for partial facades, this is the result. We'll want to look through these baselines before RTM to understand if anything here needs to be exposed.

For things that need to be exposed that can happen in separate PRs since it may require API review + test additions.

NO MERGE - this is using a private build of API compat.

@ericstj ericstj added the * NO MERGE * The PR is not ready for merge yet (see discussion for detailed reasons) label May 2, 2019
@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 3, 2019

@ViktorHofer @safern : tests tab shows no failures, yet the send to helix step is reporting a failure. Might be something amiss in the AZDO test integration.

@ViktorHofer
Copy link
Copy Markdown
Member

Can you point me to the AzDO build? Usually that happens when the work item starts to fail. We mentioned that in the mail that I sent out earlier this week.

@ViktorHofer
Copy link
Copy Markdown
Member

@@ -0,0 +1,3 @@
Compat issues with assembly System.Utf8String.Experimental:
MembersMustExist : Member 'System.Utf8String.Substring(System.Index)' does not exist in the reference but it does exist in the implementation.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unless it was meant to be removed as part of dotnet/coreclr#24036. cc @tarekgh

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ahsonkhan yes this method is removed. callers can use Utf8String[Index.GetOffset(Length)..] instead.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ericstj ericstj force-pushed the apiCompatChanges branch from 141a4e8 to 286a102 Compare May 7, 2019 13:11
@ericstj ericstj removed the * NO MERGE * The PR is not ready for merge yet (see discussion for detailed reasons) label May 7, 2019
@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 7, 2019

Removing NO MERGE. This is now ready to go. FYI: this means we now will run reverse API compat on all implmentation assemblies (including partial facades) so it may mean more things to fix in the coreclr ingestion PRs.

@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 7, 2019

@ViktorHofer looks like this might be failing due to dotnet/arcade#2402

@ViktorHofer
Copy link
Copy Markdown
Member

Oh right. Let me fix that.

@ViktorHofer
Copy link
Copy Markdown
Member

ViktorHofer commented May 7, 2019

Fixed, the host was missing. This is a workaround, I would have expected the RemoteExecutor/build file to deal with copying the host to the output dir. Seems like depproj files don't import such.

@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 7, 2019

Fixed, the host was missing. This is a workaround, I would have expected the build targets file to deal with copying the host to the output dir. Seems like depproj files don't import such.

That's what I thought. It seemed to me like restore didn't even write this to the generated targets file, so it might be an issue with the naming convention in the package. Here's what I see in the assets file:

  "targets": {
    ".NETCoreApp,Version=v3.0": {
      "Microsoft.DotNet.RemoteExecutor/1.0.0-beta.19256.12": {
        "type": "package",
        "dependencies": {
          "xunit.assert": "2.4.1-pre.build.4059"
        },
        "compile": {
          "lib/netcoreapp2.1/Microsoft.DotNet.RemoteExecutor.dll": {}
        },
        "runtime": {
          "lib/netcoreapp2.1/Microsoft.DotNet.RemoteExecutor.dll": {}
        },
        "build": {
          "build/_._": {}
        }
      },

Maybe something is adding ExcludeAssets?

Comment thread eng/resolveContract.targets
Comment thread eng/resolveContract.targets
Comment thread external/test-runtime/XUnit.Runtime.depproj Outdated
@joperezr
Copy link
Copy Markdown
Member

joperezr commented May 7, 2019

NIT: looks like you ran a msbuild /bl and checked in the msbuild.ProjectImports.zip by mistake on the AsyncInterfaces src directory 😆

Copy link
Copy Markdown
Member

@joperezr joperezr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a few minor comments but this LGTM. From the build errors looks like you are still missing a baseline in System.Threading.Tasks.

@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 7, 2019

build errors looks like you are still missing a baseline in System.Threading.Tasks.

Yeah, this is do to @stephentoub's rename from this morning 51478cf. We can baseline them until we get a build from CoreCLR with them removed.

@@ -0,0 +1,17 @@
Compat issues with assembly System.Runtime.Intrinsics:
CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.Runtime.Intrinsics.X86.Aes' in the implementation but not the reference.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is CLSCompliantAttribute meaningful? If so, we should just add it...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It needs to be consistent. I believe the problem is that CoreLib sets CLSCompliant on assembly level then turns if off on individual types. Your reference assembly sets it as false on the assembly so it doesn't need to disable it on individual types.

@ericstj ericstj force-pushed the apiCompatChanges branch from cc4dcca to f6af398 Compare May 7, 2019 19:55
@stephentoub
Copy link
Copy Markdown
Member

Yeah, this is do to @stephentoub's rename from this morning

Sorry, did I somehow break something in master?

@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 7, 2019

@stephentoub nope, just broke this PR between the time I tested locally and when the CI hit it. No worries.

@ViktorHofer your test host change is still broken. The problem is that it's referenced by test projects via the $(RuntimePath) which will have netcoreapp assemblies. These are incorrect when building a netstandard test project. For now I'm going to undo the update to the remote executor host so that you can work on a fix for that.

@ericstj ericstj force-pushed the apiCompatChanges branch from f6af398 to 5ad4347 Compare May 7, 2019 20:42
@ViktorHofer
Copy link
Copy Markdown
Member

These are incorrect when building a netstandard test project.

That surprises me as the Remote Executor lib assembly is binary identical even though it cross-compiles.

@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 7, 2019

That surprises me as the Remote Executor lib assembly is binary identical even though it cross-compiles.

The references are different. .NETCoreApp is System.Runtime based and the System.Runtime assembly version is higher than the facades included in netstandard projects.

@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 7, 2019

All tests are failing with:

error: Common Language Runtime detected an invalid program.

This appears to be a result of arcade changes, but I haven't isolated the change. I'm going to dial back this PR to only the API compat update. We'll need to further investigate what's causing this, but we can do so in the Arcade ingestion PR.

@ericstj ericstj force-pushed the apiCompatChanges branch from 5ad4347 to 5463687 Compare May 7, 2019 23:08
@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 8, 2019

@jkoritzinsky it looks like your change dotnet/coreclr@796776c is causing CoreFx tests to fail when run on nano. It appear that this is due to https://github.com/dotnet/arcade/blob/ce8e852e418ca52d28e562f9697fbb926d0b0bb1/src/Microsoft.DotNet.XUnitConsoleRunner/src/Program.cs#L8.

ericstj added 2 commits May 7, 2019 17:12
This partially reverts commit ee80061.

I'm keeping the baseline changes which will be needed when we get a new update.
This can be removed when get a new CoreCLR

That's currently blocked due to regressions in tests.
@ericstj
Copy link
Copy Markdown
Member Author

ericstj commented May 8, 2019

Only failure is network test.

@ericstj ericstj merged commit 0353437 into dotnet:master May 8, 2019
@karelz karelz added this to the 3.0 milestone May 22, 2019
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…otnet/corefx#37375)

* React to APICompat changes enabling reverse APICompat for facades

* Fix UAP and NETFX reverse APICompat issues

* Fix reverse APICompat baseline for allconfigurations build

* Manually update to latest APICompat

* Manually update to latest CoreCLR and fix issues

* Baseline System.Threading.Tasks

* Revert "Manually update to latest CoreCLR and fix issues"

This partially reverts commit dotnet/corefx@ee80061.

I'm keeping the baseline changes which will be needed when we get a new update.

* Temporarily baseline DiagnosticCounter API gaps

This can be removed when get a new CoreCLR

That's currently blocked due to regressions in tests.


Commit migrated from dotnet/corefx@0353437
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants