Replies: 59 comments 9 replies
-
My ignorance here, but is Windows on ARM64? This maybe an 'upstream' question to see if the new Azure CI capability could build and test for ARM (and maybe the Rasp pi? he says with ulterior motives...) |
Beta Was this translation helpful? Give feedback.
-
I looked into it, and the main issue is the lack of an ARM64 version of MSYS2. There does seem to exist an ARM64 version (at least a preliminary one) of Cygwin (on which MSYS2 is based), so there is hope. However, I would like to encourage everybody who is interested in ARM64 support to chip in some work, as there is plenty to do before we will have a working Git for Windows on ARM64. Like, highly encourage. I talk about MSYS2 because we need this for the parts of Git that are still implemented as Unix shell and Perl scripts ( In the short run, if you should try to build Git for Windows yourself, in Visual Studio, by cloning this repository and checking out |
Beta Was this translation helpful? Give feedback.
-
It's my understanding that you can only natively build ARM64 apps on Windows if they are based off of UWP. Otherwise, there is an x86 emulator for running Win32 applications, and Microsoft announced in November that they were working on an x64 emulator for Windows applications. I think we would need to wait until Microsoft makes x64 emulation generally available to approach this. If there's any preliminary work I can do in the mean time that would help out, please feel free to let me know and I will be happy to see what I can do. |
Beta Was this translation helpful? Give feedback.
-
@dscho I'm interested in helping with bringing Git for Windows to ARM64. Locally i was able to get the vckpg dependencies built for ARM64 with only a tiny bit of hacking. The result of my efforts is a an ARM64 git.exe binary that at least dumps the help message successfully on my ARM laptop (i haven't tried anything else yet). Would you like to chat either here or offline about what you see as the full list of work that might be required beyond this? ian Bearman |
Beta Was this translation helpful? Give feedback.
-
That sounds amazing! Let's chat here, okay? One of the biggest obstacles to getting Git to work on ARM is the lack of a Bash. But many things already work without a Bash... So we could aim first for building a slightly incomplete Git for Windows (ARM64 edition) using the Visual C build. What was that hackery you needed? Patches to |
Beta Was this translation helpful? Give feedback.
-
I can create a PR for my changes, but i'm not sure the process for this. The changes are all in the 'git' source tree. Is there doc/contributors guide that covers this? In the meantime, here's an outline of what i did based on SDK-64:
After these changes, building the git.sln for ARM64 "just works". I copied over to my ARM64 device and i have some very basic functionality working (i.e. the logo and help message). I dropped the binary into a folder layout matching an installed version and things got a bit better, but authentication for a fetch didn't work (missing DLLs i believe) and git checkout doesn't work if there are any new files (i didn't look further into this last week). Is there a top-down view i can get of dependencies? That might be better than stabbing tin the dark looking for missing pieces. Additionally, i couldn't find documentation on building the installer, which i thought might give me a clue as to what binaries i need to look for. |
Beta Was this translation helpful? Give feedback.
-
The documentation for building an installer is at https://github.com/git-for-windows/git/wiki/Making-an-installer |
Beta Was this translation helpful? Give feedback.
-
Btw, i've tried to push my local changes to the git repo, but its not working for me...
|
Beta Was this translation helpful? Give feedback.
-
You don't have push access to git-for-windows/git (very few people do). Click "Fork" near the top to create a copy on your github account, push there, then create a pull request. |
Beta Was this translation helpful? Give feedback.
-
I'm making steady progress by mixing x86 binaries (from x86 install of Git for Windows) and the ARM64 binaries i built. I'm blocked on a few things right now and any help on these is appreciated:
i'm not sure where to start to investigate this, so pointers to what the authentication process or where its located in source at lest might give me a push in the right direction.
Please let me know your thoughts on these topics. thanks, |
Beta Was this translation helpful? Give feedback.
-
Spending time debugging The libcurl dependency is a vcpkg dependency... so i didn't run any configuration on it: is there possibly something strange here? Is this is a scenario that is not tested in VS build scenario? Additional help is appreciated. |
Beta Was this translation helpful? Give feedback.
-
Have you seen microsoft/vcpkg#9683? To get openssl support with vcpkg curl you apparently need to run |
Beta Was this translation helpful? Give feedback.
-
@rimrul , thanks. that was my conclusion as well from reading the vckpg docs, but that still leaves open my second question: Is this is a scenario that is not tested in VS build scenario? How far into uncharted territory am i right now? |
Beta Was this translation helpful? Give feedback.
-
Far ;-) Last time I tried to compile for ARM, |
Beta Was this translation helpful? Give feedback.
-
Nevermind, I should have read back further: |
Beta Was this translation helpful? Give feedback.
-
That should be possible to determine using IsWow64Process2(). |
Beta Was this translation helpful? Give feedback.
-
Heh, I just added this suggestion 15 minutes ago: git-for-windows/MINGW-packages#44 (comment) |
Beta Was this translation helpful? Give feedback.
-
According to this blog post from 2017 it should work, but we might need to be careful on Windows 10 prior to 1709. |
Beta Was this translation helpful? Give feedback.
-
Good idea, thanks for sharing! Will check it now |
Beta Was this translation helpful? Give feedback.
-
It works with x86/i686 executable on ARM64 device: x86/i686 executable on x64 device: I'll spend some time this weekend to see how I can incorporate this in the |
Beta Was this translation helpful? Give feedback.
-
Well, we're talking about the Git wrapper here, so it would need to do its own |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Got it to work (including on Windows 8.1, haven't tested Win7) in git-for-windows/MINGW-packages#44 🎉 |
Beta Was this translation helpful? Give feedback.
-
So far, I suppose that |
Beta Was this translation helpful? Give feedback.
-
I would've liked the internal consistency of doing this kind of dynamic function loading the same way throughout the Git for Windows code base, but I see your point. Seems like Dennis already picked the loading implementation from the blog post anyways. |
Beta Was this translation helpful? Give feedback.
-
Update: we're making great progress. I was able to create a To see an overview of open PRs for the ARM64 work please see this comment. Here's how it works: This is basically a So it first looks in Here you can see that it indeed uses Git from We're getting very close everyone! Exciting times 🎉 |
Beta Was this translation helpful? Give feedback.
-
@dennisameling seems like that release was removed, any word on it? |
Beta Was this translation helpful? Give feedback.
-
@KritantaDev sorry, I had to re-fork this repo. Just uploaded the beta release again on the same URL, could you please try again now? 😊 |
Beta Was this translation helpful? Give feedback.
-
I tried to load the most recent version of @dennisameling fork builds v2.31.0-rc2.windows.2 but it doesn't run on Surface Pro X/ARM64. I do not have VCRUNTIME140.DLL. This is part of the vc redistributable 2015, but that one doesn't come in an ARM64 version, so can't install it. |
Beta Was this translation helpful? Give feedback.
-
I wonder if it is possible to use the MSYS2 clangarm64 packages instead of mingw32 packages, for even more native stuff? Also move git.exe to /clangarm64 instead of /arm64 to align with MSYS2. |
Beta Was this translation helpful? Give feedback.
-
Are there any plans to support an ARM64-compatible release of Git for Windows?
Beta Was this translation helpful? Give feedback.
All reactions