-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
Tracking issue for Windows ARM64 support #3107
Comments
I'm a bit focused on making sure that the v2.31.0 release goes smoothly, and will be happy to pay more attention to the ARM64 side of things after that release is out (which will probably happen Tuesday or Wednesday this coming week). |
Hi @dennisameling , Thanks for your wonderful work! ❤️ Have been using MinGit lately (which is a 💎 by itself) and it works great on my SPX! One thing I just found:
While MinGit doesn't seem to contain Could you please check on your side, on a complete Git setup? Thanks a lot! 😃 |
The documentation is not built as part of the CMake-based build. It will take quite some work to implement that. @Alovchin91 that's your chance to get involved! 😉 |
@dscho I would be happy to help, but right now my capacity is extremely limited unfortunately and I have never had any proper experience with Cmake. But wouldn't it be enough to point Git.exe from arm64 folder to the documentation in mingw32? 🤔 |
Not really, because the build configuration may differ in more than just the CPU architecture, even in ways affecting how/what parts of the documentation are compiled. |
Hmm, I think right now my concern is mostly about where does arm64 version look for docs in a full installer-based version of Git 🤔 I saw that it's also absent from the "normal" mingw32 MinGit build, so I suppose missing docs in those builds is not arm64 specific issue. |
Right, documentation is excluded from MinGit builds. But looking for the documentation in the wrong location, just because there is no documentation in the correct location, isn't a solution for the non-MinGit flavors of Git for Windows, either ;-) |
Ah, right, now I get your point 😁 For some reason I thought that the most part of the tools are redirected to mingw32 folder and arm64 only contains wrappers or helpers 😅 |
Thanks to @dennisameling tireless work, the Git executables are built for Windows/ARM64. The i686 version of the MINGW tools we're still relying on are things like |
Can confirm the help docs are only present in The help function looks at Lines 464 to 482 in 959b2f0
This is defined in the CMake file: git/contrib/buildsystems/CMakeLists.txt Lines 206 to 217 in 959b2f0
@dscho would you be okay with a clause in the CMake file for Win ARM64 that sets |
I wonder how much work it would be to optionally use |
Will have a look in the coming days. Just created a PR for 64-bit ARM64 installer support: git-for-windows/build-extra#333 |
@dscho now that the 64-bit ARM64 installer PR has been merged, do you think we're ready to release a beta build of Git for Windows ARM64? I'm happy to look into the docs thing with |
It'll probably run daily and check for updates, but when it detects an update, it'll try to download and install the x86 installer. |
Yes, I think we're getting to the point where we want to invite testers (I, unfortunately, am not eligible because I lack the hardware).
Fantastic. I do think that it should be possible to add that to the
Indeed. For I could imagine that we would probably want to improve on that e.g. by enhancing diff --git a/git-extra/git-update-git-for-windows b/git-extra/git-update-git-for-windows
index 7121dd7be..50ff5524a 100755
--- a/git-extra/git-update-git-for-windows
+++ b/git-extra/git-update-git-for-windows
@@ -174,7 +174,22 @@ update_git_for_windows () {
;;
esac
- latest_tag_url=https://gitforwindows.org/latest-tag.txt
+ if test -f "$0.ini"
+ then
+ fork="$(git config -f "$0.ini" update.fromFork)"
+ test -n "$releases_url" || {
+ echo "Could not find update.fromFork in $0.ini" >&2
+ return 1
+ }
+ releases_url=https://api.github.com/repos/$fork/releases
+ latest_tag_url=$releases_url/latest
+ latest_eval='latest=${latest_tag#*\"tag_name\": \"}; latest=${latest%%\"*}'
+ else
+ releases_url=https://api.github.com/repos/git-for-windows/git/releases
+ latest_tag_url=https://gitforwindows.org/latest-tag.txt
+ latest_eval='latest=${latest_tag#v}'
+ fi
+
latest_tag=$(http_get $latest_tag_url) ||
case $?,"$proxy" in
7,)
@@ -190,7 +205,7 @@ update_git_for_windows () {
;;
esac
- latest=${latest_tag#v}
+ eval "$latest_eval"
# Did we ask about this version already?
recently_seen="$(get_recently_seen)"
test -n "$quiet" && test "x$recently_seen" = "x$latest" && return
@@ -215,7 +230,6 @@ update_git_for_windows () {
esac
echo "Update $latest is available" >&2
- releases_url=https://api.github.com/repos/git-for-windows/git/releases
releases=$(http_get $releases_url/latest) || return
download=$(echo "$releases" |
grep '"browser_download_url": "' | |
Right, completely forgot to address that part. We do trust |
I was thinking a lot simpler: We could check |
I don't really trust |
I opened git-for-windows/build-extra#338 to help with this. |
Incredibly excited that git-for-windows/build-extra#340 has been merged. I almost don't dare to ask, but do you think we're now ready to release a beta version of Git for Windows ARM64, @dscho (apart from the request for the docs, which I hope to look into in the coming two weeks)? 🤞🏼
I ordered and received a Raspberry Pi 4 last week, then installed Windows on ARM 19043 (21H1) on it. The performance is surprisingly good, but every once in a while there's a little driver-related hiccup that the Windows on Raspberry team is working hard on. If you want, I can send you the TeamViewer ID + password so you can test a bit on your end as well 👍🏼 |
I have the Surface Pro X so I can also help with testing 🙂 RDP is also an option. |
Right now, I would like to focus on Git for Windows v2.32.0, for which -rc0 came out yesterday, and the final version is expected around June 7th/8th. After that, I'm all game for ARM64 and will take y'all up on the kind offers to let me connect to your hardware. |
Well... I wonder if BUILD next week brings anything interesting to arm64 world anyway 🤷 Maybe an arm64 GitHub Actions pipeline? One could dream... |
@dennisameling Could you add the issue with While it isn't a show stopper for the ARM beta it would be nice to have that fixed before we get more ARM bug reports. |
Okay, I hope it's finally time to prepare the first ARM64 beta! 🤗 Please let me know if I can help with anything. I could provide an ARM64 virtual machine on my Surface Pro X for a build pipeline, for example 🙂 |
Just updated the list above with open issues. I recently came across the fact that Visual C++ is needed since we use MSVC for the ARM64 builds. We can either include the Visual C++ Redistributable package in the installer, or statically build using MSVC (if possible). Do you have any preference here @dscho? I guess the latter option would be best as software like GitHub Desktop is depending on MinGit, so a static build would make their lives easier as well. |
I don't think UCRT can be statically linked and redistributing vcredist would probably be a GPL violation, so linking the vcredist download page is probably our only option. |
Hopefully this run will do the job. |
Do I understand correctly that git-for-windows-automation could be forked and run on a hosted runner? Is there any kind of instruction on how to set it up? I would be happy to help by opening a Pull Request if there's something that needs fixing in the job. |
@Alovchin91 no, it must be run on a self-hosted runner because it requires a native Windows/ARM64 to run.
You could use the
The main problem right now is that the |
Yes, sorry, that's what I meant 😅
I don't really have an Azure subscription, is there a free/trial tier for open-source work? I'm interested in this work as an individual user mostly. Yet again, I would be happy to contribute if there's anything I could help with, so please let me know. |
Do you have an AWS account? It should be possible to do something equivalent there. |
Nope, and the last time I checked they didn't have any Windows on Arm offers. But I do have a Surface Pro X and a MacBook with Parallels, so I can set up a private self-hosted runner for testing purposes. |
That should be enough, you only need to imitate the labels and register with your fork of |
https://github.blog/2024-06-03-arm64-on-github-actions-powering-faster-more-efficient-build-systems/ Not yet available for Opensource projects, but coming later this year (unless anyone knows someone...) |
@MatthewSteeples I already reported this 15 hours ago. |
So you did! Apologies, don't know how I missed that, especially as I remember reading the follow up comment about the schedule having slipped. Having one of those weeks...! |
https://opensource.microsoft.com/azure-credits There is this offer of free azure credits for open source, but the aproval/rejection timeframe is 3-4 weeks and it doesn't read like it's targeted at individual contributors. |
@MatthewSteeples No worries. This ticket is one of those really, really horrible ones where I wish for a more sophisticated UI than a single-threaded one: |
I must be missing something. I've essentially followed whatever is done by
Turns out I need to create a GitHub App. How do I configure it? And what did you mean by "register with your fork of |
...And now it fails with some other cryptic message:
I swear that repo was not made to be forked... |
Yes. There is some documentation in the still-unpolished
The runner should be specific to your fork, if you use the |
That makes me believe that the GitHub App is maybe not installed on your fork?
Indeed it wasn't. It was made to support Git for Windows' own processes. |
Okay, scratch all that. I have removed this step altogether and now I can continue. |
I believe there's now an issue with
And quite a number of the following lines (though not sure if they are errors):
|
Using the
See https://github.com/Alovchin91/git-for-windows-automation/actions/runs/9556010330/job/26340435149, The packages have been successfully built though. |
That should be fixed with this PR: git-for-windows/git-sdk-arm64#19
I noticed those too, but they're also in the x86 and x64 flavors, e.g. here: https://github.com/git-for-windows/git-for-windows-automation/actions/runs/9346419477/job/25721230283#step:19:112 Not sure if that's a known issue at all. |
|
I believe that this will be addressed via git-for-windows/build-extra#560. |
Any updates on this? Been waiting for git on Arm64 for years. :( |
A better use of your time might be to help the effort. As to updates: there is e.g. git-for-windows/build-extra#574, git-for-windows/build-extra#572, git-for-windows/git-sdk-arm64#21, git-for-windows/build-extra#574 and of course https://inbox.sourceware.org/cygwin/a3ec694e-e9d5-04db-fa21-b93b28f7a0d4@jdrake.com/#t. Git for Windows/ARM64 would certainly benefit from competent help by motivated contributors. |
Now that the
@dscho given that the pipelines seem to be a lot more stable now, how do you feel about releasing a beta version of GfW arm64? I think one final blocker would be the discussion on the artifact names. WDYT? |
Just FYI, I have been using the artefacts from Dennis's runs for more than half a year now (I'm installing it inside MSYS2 proper from the packages archive) and I have never had a single issue with it. The only thing that I had to workaround is Pacman but that's because Pacman itself kept hanging randomly after the 6.0.2-12 patch (I've posted it somewhere in one of the discussions; never tried to upgrade it past 6.0.2-11 afterwards). I work in a humongous mono-repo (although without LFS but I believe Git LFS is a separate thing) so there it is. |
There's been a discussion about Windows ARM64 support here: #3021
I made a discussion comment there to keep track of the outstanding tasks to get basic ARM64 support to Git for Windows. However, @Alovchin91 informed me via Twitter that it was hard to keep track of the progress that way, requesting a dedicated issue. So here it is 😊
Open tasks for basic ARM64 support:
/etc/profile
added MSYSTEM=ARM64 case in /etc/profile git-sdk-32#6/etc/profile
ingit-extra.install.in
Start support for MSYSTEM=ARM64 build-extra#321git-wrapper
inmingw32
to use the nativegit.exe
, setMSYSTEM=ARM64
, etc. Add arm64 support to git-wrapper MINGW-packages#44git push
etc.) by referencing it from themingw32
directory Git Credential Manager Core missing in ARM64 libexec folder #3015git-artifacts
workflow #3053cmd\git.exe
is crashing whenarm64/bin
folder is present cmd\git.exe crashing when ARM64 folder is present in Git installation (git-wrapper) #3083git --version --build-options
returnsAMD64
as the CPU cmake(): allow setting HOST_CPU for cross-compilation #3327--help
(example:git log --help
) doesn't work since Git looks for docs in the wrong locationThanks to the changes that we did in the last few days, there's now a fully working build of Git for Windows ARM64.
Test build for ARM64 users, built on March 12, 2021: https://github.com/dennisameling/git/releases/tag/v2.31.0-rc2.windows.2
I think we're pretty much ready to publish a beta version of Git for Windows ARM64! @dscho what do you think? Please let me know if I missed something in the list above.
The text was updated successfully, but these errors were encountered: