-
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. |
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. |
I am still a bit uneasy about the double-fork deadlock, even though there seems to be some movement on about a potential work-around. The full solution would be a working Cygwin for Windows/ARM64. While this is still hard, also on that front there has been some recent advancements:
In short, while I encourage nobody to hold their breath for it, but instead encourage everybody to consider how they can help, there is movement, and the first working Cygwin/ARM64 is almost in sight.
@dennisameling I think a really good first step would be to adjust the That won't immediately publish the Windows/ARM64 artifacts with |
I have noticed that recent ARM64 builds have been available in the Pacman repository (except for the latest 2.47.0.2). This is a very welcome change and I hope that it is there to stay. Thank you! |
This has been the hard (manual!!!) work of @dennisameling. Say thank you to Dennis ;-) |
Yes @dennisameling is definitely my hero! 😊 🙏 |
This work-around has now been contributed to the Therefore you can add @jeremyd2019 to your heroes, @Alovchin91! |
Jeremy has been in my list of heroes for quite some time now 😉 Nice to see this workaround making its way into Git for Windows! I wonder though if Cygwin will be eager to merge it, or they'd rather wait for the ARM64 support in GCC to arrive to compile the whole thing to ARM64. In any case, hopefully this works for Git for now 🤞 BTW I did get some hangs even with the older version of Pacman a few times, but so far that has never happened with Git itself. And I have it set up with SSH commit signing, and have been using Git ARM64 from this repo for about a year now I think. |
AMAZING! Thanks!
|
Okay, looks like it's time to update my setup to |
...aaand it works! Previously, running An official ARM64 release today? 😜 ('cause everybody knows that Friday is the best day for releases) |
Could you please re-test with
Alas, I won't be able to do that. Hopefully I'll get around to it next week. |
Hmm, I'm using MSYS2 + the "MSYS2 proper" method, so I don't have that script. Does it need anything additional, or I can just copy it over from the SDK repo to test?
No probs, it was a joke 😅 I expected it to be released with the next GfW update tbh. |
I've copied it over from the Arm64 SDK repo. It ran without an issue, though it did install the
I believe I've seen it before with the .bat script when the environment didn't contain a path to git.exe (I think). I don't get the same warning when running the .bat version. EDIT 1: If I understand it correctly, this essentially boils down to this file and line: Running If that's of any importance, I ran the .ps1 script like this: EDIT 2: Removing the line EDIT 3: Please correct me if I'm wrong, but it seems like it makes no sense to set |
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: