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

Add ARM64 Desktop support #5864

Merged
11 commits merged into from
Aug 28, 2020
Merged

Add ARM64 Desktop support #5864

11 commits merged into from
Aug 28, 2020

Conversation

JunielKatarn
Copy link
Contributor

@JunielKatarn JunielKatarn commented Aug 28, 2020

  • Adds ARM64 platform to Desktop solutions.
  • New dependencies:
    • ReactWindows.ChakraCore.ARM64 1.11.20
  • Updated dependencies:
    • ChakraCore.Debugger 0.0.0.44

Implements #5828

Microsoft Reviewers: Open in CodeFlow

Copy link
Collaborator

@NickGerleman NickGerleman left a comment

Choose a reason for hiding this comment

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

Nice change. Happy it wasn't too invasive.

As a heads up, JSI unit tests normally also run against V8, but USE_V8 is temporarily disabled in master while Tudor has been doing some work to have it use new JSI headers and adding ARM64 support. It's not disabled in older branches, so it might cause test breaks there. I think Tudor may already have a version of V8 ready though.

Please wait for @asklar to sign off on the WinUI changes, and check with @acoates-ms before trying to bring this back further than 0.62, because we should be bringing that into devmain imminently.

@NickGerleman NickGerleman requested a review from asklar August 28, 2020 07:33
@NickGerleman NickGerleman linked an issue Aug 28, 2020 that may be closed by this pull request
5 tasks
Copy link
Member

@asklar asklar left a comment

Choose a reason for hiding this comment

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

I'm curious about the longer term plan for this since ChakraCore is end of life'd:
chakra-core/ChakraCore#6384

Can you comment on that?
Also why is a ChakraCore nuget package being created out of the react native windows repo instead of the chakra core repo?

@NickGerleman
Copy link
Collaborator

I'm curious about the longer term plan for this since ChakraCore is end of life'd:
microsoft/ChakraCore#6384

Can you comment on that?
Also why is a ChakraCore nuget package being created out of the react native windows repo instead of the chakra core repo?

We're moving everything to V8 currently, but are still transitioning. The ARM64 ChakraCore variant is a bit special, and more details can be given offline/less publicly.

@JunielKatarn JunielKatarn added the AutoMerge Causes a PR to be automatically merged once all requirements are passed (label drives bot activity) label Aug 28, 2020
@ghost
Copy link

ghost commented Aug 28, 2020

Hello @JunielKatarn!

Because this pull request has the AutoMerge label, I will be glad to assist with helping to merge this pull request once all check-in policies pass.

Do note that I've been instructed to only help merge pull requests of this repository that have been opened for at least 10 hours, a condition that will be fulfilled in about 7 hours 17 minutes. No worries though, I will be back when the time is right! 😉

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 (@msftbot) and give me an instruction to get started! Learn more here.

X86Release:
BuildConfiguration: Release
BuildPlatform: x86
ARM64Debug:
BuildConfiguration: Debug
Copy link
Contributor

Choose a reason for hiding this comment

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

Do these both really need to be added to the PR pipeline? For that matter, why does the desktop PR pipeline have so many configs?

UWP gets x86 Debug and x64 Release - the PR CI is supposed to be a lean check.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I was not aware UWP was missing build combinations. Why is this?

Maybe for UWP, heavily based on COM and obviously WinRT, compile/link issues are less likely to happen.

For raw Windows Desktop, we have found issues as specific as x86|Debug|v141.

In general, I think we should build every flavor.
Total time should be the same, thanks to parallel builds.

The checks should be lean, but coverage should be wide.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sorry, short answer: Yes. Both will be added.

Copy link
Member

Choose a reason for hiding this comment

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

@JunielKatarn please don't add all combinations, see the comment above this:

      matrix: # Why we only build some flavors: https://github.com/microsoft/react-native-windows/issues/4308

#4308

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I didn't see that comment. It's not in the Desktop job:

  - job: RNWDesktopPR
    displayName: Desktop PR
    dependsOn: Setup
    condition: ne( dependencies.Setup.outputs['checkPayload.shouldSkipPRBuild'], 'True' )
    strategy:
      matrix:
        X64Debug:
          BuildConfiguration: Debug
...

I can adjust this in a subsequent change, but we do build the whole current matrix for Desktop.
I'll look at that commented issue to see the what was the agreed exclusion criteria.

@ghost ghost merged commit c4812b1 into microsoft:master Aug 28, 2020
@JunielKatarn
Copy link
Contributor Author

Also why is a ChakraCore nuget package being created out of the react native windows repo instead of the chakra core repo?

The ChakraCore team did not agree to produce a new NuGet version including the ARM64 build because this would require changing their pipeline. They decided to only provide the binaries.

I believe such reluctance is related to ChakraCore being on "life-support", so to speak.

@JunielKatarn JunielKatarn deleted the desktop-arm64 branch August 28, 2020 21:09
JunielKatarn added a commit to jurocha-ms/react-native-windows that referenced this pull request Sep 4, 2020
* Add ARM64 ChakraCore NUSPEC

* Add NuGet dependency ReactWindows.ChakraCore.ARM64

* Add ARM64 platform for ReactWindows-Desktop.sln

* Remove ARM64 from a few projects

* Add ARM64 artifacts to nuspec

* Upgrade to ChakraCore.Debugger 0.0.0.44

* Upgrade to ReactWindows.ChakraCore.ARM64 1.11.20

* Change files

* Update CI matrices

* Re-introduced Hermes NuGet comment

* Add missing platform condition in JSI.Desktop
ghost pushed a commit that referenced this pull request Sep 5, 2020
* Add ARM64 Desktop support (#5864)

* Add ARM64 ChakraCore NUSPEC

* Add NuGet dependency ReactWindows.ChakraCore.ARM64

* Add ARM64 platform for ReactWindows-Desktop.sln

* Remove ARM64 from a few projects

* Add ARM64 artifacts to nuspec

* Upgrade to ChakraCore.Debugger 0.0.0.44

* Upgrade to ReactWindows.ChakraCore.ARM64 1.11.20

* Change files

* Update CI matrices

* Re-introduced Hermes NuGet comment

* Add missing platform condition in JSI.Desktop

* Upgrade to ReactWindows.OpenSSL.StdCall.Static 1.0.2-p.5

* Upgrade to ReactNative.V8Jsi.Windows 0.3.4

* Upgrade to Microsoft.Windows.CppWinRT 2.0.200615.7

* Upgrade to Microsoft.ChakraCore.vc140 1.11.20

* Remove change file

* Change files
@Khalef1
Copy link
Contributor

Khalef1 commented Sep 5, 2020

Removing backport requests to 61 and 60 as these will not be needed

This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AutoMerge Causes a PR to be automatically merged once all requirements are passed (label drives bot activity) Partner: Office Platform: Desktop
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support ARM64 on Windows Desktop
5 participants