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

First build of Stellarium for Windows on ARM on AppVeyor #3447

Merged
merged 3 commits into from
Oct 5, 2023

Conversation

hmartinez82
Copy link
Contributor

@hmartinez82 hmartinez82 commented Oct 5, 2023

Description

I had absolutely no idea that AppVeyor had Qt 6 for Windows on ARM already compiled and ready for use for x-compilation in its base images!! This makes things orders of magnitude easier! We don't even have to use MSYS2 to build Stellarium for Windows on ARM!

This is a first, build only, no deployment of Windows on ARM 64 binaries.

No QtWebEngine because Qt doesn't build that for x-compilation yet. And no Spout either since there's no precompiled Spout for ARM64.

Partially fixes #2962 and #1436

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • This change requires a documentation update
  • Housekeeping

How Has This Been Tested?

No unit tests run because AppVeyor does not provide Windows on ARM runners. We can only x-compile for now from x64 for ARM64.

Checklist:

  • My code follows the code style of this project.
  • I have performed a self-review of my own code

@github-actions github-actions bot requested review from 10110111, alex-w and gzotti October 5, 2023 05:16
@hmartinez82 hmartinez82 changed the title First build of Stellarium Windows on ARM First build of Stellarium Windows on ARM on AppVeyor Oct 5, 2023
@hmartinez82
Copy link
Contributor Author

A few questions:

  • What on earth is Spout? I can't find what it is. I only found a dead, archived project by Box.com , but that's a Python library, not native code!.
  • How can I check if the compiled binaries are all ARM64?

@hmartinez82 hmartinez82 changed the title First build of Stellarium Windows on ARM on AppVeyor First build of Stellarium for Windows on ARM on AppVeyor Oct 5, 2023
@hmartinez82
Copy link
Contributor Author

@10110111 @alex-w How can I see if the AppVeyor builds are working?

@alex-w
Copy link
Member

alex-w commented Oct 5, 2023

@10110111 @alex-w How can I see if the AppVeyor builds are working?

See AppVeyor item in section "Review" or markers at right side for every commit.

@hmartinez82
Copy link
Contributor Author

I don't think I have access to that part / tab? I can't find it because I'm not part of the project?

@@ -39,7 +39,7 @@ environment:
qtver: 6.5
qtbin: msvc2019_arm64
msvcname: Visual Studio 17 2022
cmake_args: -A ARM64 -DQT_HOST_PATH=C:/Qt/6.5/msvc2019_64 -DENABLE_SPOUT=OFF -DENABLE_QTWEBENGINE=OFF
cmake_args: -A ARM64 -DQT_HOST_PATH=C:/Qt/6.5/msvc2019_64 -DQT_PATHS=C:/Qt/6.5/msvc2019_arm64/bin/qtpaths.bat -DENABLE_SPOUT=OFF -DENABLE_QTWEBENGINE=OFF
Copy link
Member

Choose a reason for hiding this comment

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

I guess C:/Qt/6.5/msvc2019_arm64/bin/qtpaths.bat should be run for ARM64 environment.

Copy link
Contributor Author

@hmartinez82 hmartinez82 Oct 5, 2023

Choose a reason for hiding this comment

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

Not, not run, it's not a batch file to set environment variables like vsvars.bat.
I can show you what the file is if you are curious. But x-compilation is a bit complicated, that's why we need both Qt compiled for x64 and for ARM64 at the same machine at the same time.

It uses qmake, moc, rcc, from the HOST (x64), but when windeployqt copies files it needs to be the TARGET (ARM64) ones. qtpaths tells windeployqt which folder to use when copying the files.

@alex-w
Copy link
Member

alex-w commented Oct 5, 2023

I don't think I have access to that part / tab? I can't find it because I'm not part of the project?

Hmm... please see https://ci.appveyor.com/project/alex-w/stellarium/history

@alex-w
Copy link
Member

alex-w commented Oct 5, 2023

cmake_args parameter is missing for Win32 build

@hmartinez82
Copy link
Contributor Author

cmake_args parameter is missing for Win32 build

It is supposed to be empty. As in: no parameters? AppVeyor does not accept that? I can change to cmke_args: "" it doesn't accept being empty. Can I just remove cmake_args from the Win32 build matrix? Sorry I never used Appveyor in my life before

@alex-w
Copy link
Member

alex-w commented Oct 5, 2023

  • What on earth is Spout? I can't find what it is. I only found a dead, archived project by Box.com , but that's a Python library, not native code!.

See https://github.com/leadedge/Spout2 or http://spout.zeal.co/

  • How can I check if the compiled binaries are all ARM64?

You can add keyword [publish] in commit message to get an installation package / artifacts at AppVeyor host.

@alex-w
Copy link
Member

alex-w commented Oct 5, 2023

cmake_args parameter is missing for Win32 build

It is supposed to be empty. As in: no parameters? AppVeyor does not accept that? I can change to cmke_args: "" it doesn't accept being empty. Can I just remove cmake_args from the Win32 build matrix? Sorry I never used Appveyor in my life before

cmake_args: -A Win32 for matrix

@hmartinez82
Copy link
Contributor Author

  • What on earth is Spout? I can't find what it is. I only found a dead, archived project by Box.com , but that's a Python library, not native code!.

See https://github.com/leadedge/Spout2 or http://spout.zeal.co/

  • How can I check if the compiled binaries are all ARM64?

You can add keyword [publish] in commit message to get an installation package / artifacts at AppVeyor host.

I can't do that yet. I don't want to try to build the installer yet, there's more work after this PR regarding creating the installer

@hmartinez82
Copy link
Contributor Author

-A Win32

I'm looking at https://ci.appveyor.com/project/alex-w/stellarium/builds/48199679
Interesting, it actually failed on the VS 2017 x64 build.

@hmartinez82
Copy link
Contributor Author

-A Win32

I'm looking at https://ci.appveyor.com/project/alex-w/stellarium/builds/48199679 Interesting, it actually failed on the VS 2017 x64 build.

Ahh, VS2017 does not support passing -A <arch> . The target is actually part of the generator. I'll fix it :)

@alex-w
Copy link
Member

alex-w commented Oct 5, 2023

  • How can I check if the compiled binaries are all ARM64?

Using file tool from Cygwin?

@hmartinez82
Copy link
Contributor Author

hmartinez82 commented Oct 5, 2023

  • How can I check if the compiled binaries are all ARM64?

Using file tool from Cygwin?

No, I mean, how can I download the files from the AppVeyor build without publishing anything! I know how to check if a file is ARM64. I use dumpbin tool from Visual Studio

@alex-w
Copy link
Member

alex-w commented Oct 5, 2023

  • How can I check if the compiled binaries are all ARM64?

Using file tool from Cygwin?

No, I mean, how can I download the files from the AppVeyor build without publishing anything! I know how to check if a file is ARM64. I use dumpbin tool from Visual Studio

See - if [%PUBLISH_BINARY%]==[true] for %%i in (*.exe) do appveyor PushArtifact %%i or using dumpbin on AV host and publish results as an artifact

@hmartinez82
Copy link
Contributor Author

  • How can I check if the compiled binaries are all ARM64?

Using file tool from Cygwin?

No, I mean, how can I download the files from the AppVeyor build without publishing anything! I know how to check if a file is ARM64. I use dumpbin tool from Visual Studio

See - if [%PUBLISH_BINARY%]==[true] for %%i in (*.exe) do appveyor PushArtifact %%i or using dumpbin on AV host and publish results as an artifact

Allright. I'll wait until all the builds are green then I'll add another Pull Request to deal with publishing!

@alex-w alex-w added the infrastructure Infrastructure related issues label Oct 5, 2023
@alex-w alex-w added this to the 23.4 milestone Oct 5, 2023
@hmartinez82
Copy link
Contributor Author

All green with https://ci.appveyor.com/project/alex-w/stellarium/builds/48200516
After this PR is merged. I'll create another PR for dealing with "publishing" for ARM64

@hmartinez82 hmartinez82 requested a review from alex-w October 5, 2023 09:25
@alex-w
Copy link
Member

alex-w commented Oct 5, 2023

But you can do it within this PR

@hmartinez82
Copy link
Contributor Author

The changes are unrelated, are you sure you don't prefer to have the builds working in a PR and dealing with publushing in a separate PR? The PR will get too big, atomic unrelated changes per PR are better.

@alex-w alex-w merged commit 9127ae5 into Stellarium:master Oct 5, 2023
11 checks passed
@hmartinez82 hmartinez82 deleted the build_arm64 branch October 5, 2023 09:38
@alex-w alex-w added the state: published The fix has been published for testing in weekly binary package label Oct 23, 2023
@github-actions
Copy link

Hello @hmartinez82!

Please check the fresh version (development snapshot) of Stellarium:
https://github.com/Stellarium/stellarium-data/releases/tag/weekly-snapshot

@alex-w alex-w removed the state: published The fix has been published for testing in weekly binary package label Dec 23, 2023
Copy link

Hello @hmartinez82!

Please check the latest stable version of Stellarium:
https://github.com/Stellarium/stellarium/releases/latest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
infrastructure Infrastructure related issues
Development

Successfully merging this pull request may close these issues.

Stellarium 1.0+ no longer installs on Windows 11 arm64
2 participants