msys2 / MINGW-packages

Package scripts for MinGW-w64 targets to build under MSYS2.
https://packages.msys2.org
BSD 3-Clause "New" or "Revised" License
2.25k stars 1.21k forks source link

Windows arm64: donations accepted? #10339

Closed dennisameling closed 2 years ago

dennisameling commented 2 years ago

Hi @jeremyd2019, I think I read somewhere that you're currently using a Raspberry Pi for building the clangarm64 packages. Would you accept a donation for an ECS LIVA Mini Box QC710? It should be quite a bit faster than the Raspberry Pi, and since it's officially supported by Microsoft and Qualcomm, should be more reliable in terms of updates as well.

Thanks for your awesome work on the clangarm64 packages! 🙏🏼

jeremyd2019 commented 2 years ago

Yes, I am building on a Raspberry PI 4 8GB.

I thought about buying one of those, but I was a little concerned that it only had 4GB ram. I am also kind of concerned it has "home" windows (for a developer box would expect 8GB and pro).

As far as a "donation", a disclaimer that I'm not part of some legal entity that would allow it to count as a donation for tax purposes or anything. But I don't think I'd say no to free hardware :wink:

dennisameling commented 2 years ago

I thought about buying one of those, but I was a little concerned that it only had 4GB ram. I am also kind of concerned it has "home" windows (for a developer box would expect 8GB and pro).

I think for building most (if not all) of the MINGW-packages, 4GB RAM should be OK, right? And it's definitely possible to upgrade from Windows Home to Pro (I did the same with my Surface Pro X) - there's retail licenses out there that are as cheap as $20 😊. I have a Surface Pro X with 16GB RAM, so if you need some more power for some packages, feel free to ping me.

As far as a "donation", a disclaimer that I'm not part of some legal entity that would allow it to count as a donation for tax purposes or anything. But I don't think I'd say no to free hardware 😉

That should work - assuming you live in the US (I don't), I could just transfer you the money for ordering the QC710. The amount is small enough for me not to get in trouble with the tax authorities here 😉 Just drop me an email at the email address in my GitHub profile and we can arrange it from there. Otherwise you could create a GitHub Sponsors profile and we can arrange it that way too.

I'd really appreciate consistent clangarm64 packages, as I'm dependent on them for my work on Git for Windows arm64 and Signal Desktop arm64. I worked with Windows arm64 on a Raspberry Pi 4 8GB as well, and often had stability and speed issues. Looking at the specs of the QC710, I'm hoping you'll be able to build packages twice as fast (assuming you didn't overclock the Pi, but still) 🙏🏼

mati865 commented 2 years ago

I worry the memory will be the limiting factor, some of the big packages tend to require up to 1.5-2 GiB per compilation thread, no idea about LLD memory usage while linking. Based on x86_64 experience on Windows I'd say you need at the very least 1 GiB of memory for each thread you want to utilize, preferably at least 1.5-2 GiB per thread. I don't deny it could handle small-medium packages, just pointing out it's not as easy as it may seem.

Sadly there are no cheap devices available yet that would tick all the boxes.

umarcor commented 2 years ago

I'm not sure it'd work for this use case, however, Oracle provides 4 Ampere A1 CPUs with 24 GB on the free tier. According to https://youtu.be/g7sP33QtuxM?t=92, Windows Server 2019 Standard is one of the supported options.

Combining a "local" QC710 and an Ampere instance can be an interesting solution for storage vs RAM.

jeremyd2019 commented 2 years ago

I have not been able to find any evidence that MS officially offers an ARM64 edition of Server. That would be great if they did!

jeremyd2019 commented 2 years ago

It looks like Oracle says Windows is only available for Intel or AMD, not ARM instances. But it also looks like it might be fairly 'normal' virtio hardware, so there's a possibility that Windows on ARM could be made to run on it.

Currently, I have received the donation for the QC710 "developer" box, and plan to order after Christmas (to avoid unnecessary strain on shippers, and to make sure I'll be home to receive it). I have also requested access to an OpenStack AArch64 instance at OSU OSL, which seems to be Ampere-based also. I asked on IRC, and it sounded like they were open to working with me to see if Windows on ARM could run there.

jeremyd2019 commented 2 years ago

I ordered the QC710, and it was supposed to be delivered on the 29th, but UPS keeps delaying it due to "severe" weather.

01/04/2022 2:49 P.M.    Delivered
01/04/2022 9:21 A.M.    Out For Delivery Today
01/03/2022 5:33 P.M.    An emergency situation or severe weather condition has delayed delivery.
01/03/2022 10:15 A.M.   Significant weather events across the globe are impacting the UPS network. Although your location may not be impacted by adverse weather, the movement of packages in the network may be impacted by weather conditions in other areas.
01/03/2022 8:40 A.M.    Out For Delivery Today
12/31/2021 11:38 A.M.   An emergency situation or severe weather condition has delayed delivery.
12/31/2021 9:58 A.M.    Out For Delivery Today
12/30/2021 5:03 P.M.    An emergency situation or severe weather condition has delayed delivery.
12/30/2021 10:25 A.M.   Out For Delivery Today
12/29/2021 7:39 P.M.    An emergency situation or severe weather condition has delayed delivery.
12/29/2021 10:26 A.M.   Out For Delivery Today
dennisameling commented 2 years ago

Nice! I think it comes with Windows 10 out of the box. If you don't get offered the upgrade to Windows 11 right away, the easiest thing in my experience is to switch to the Insider Beta channel and after the upgrade, move back to stable. The beta channel is currently at build 22000.348 which is the same as stable at the time of writing. You can't use things like the Media Creation Tool on arm64 IIRC, so switching to Insider is your best bet for now I guess.

jeremyd2019 commented 2 years ago

I'm just looking forward to finally having it "in hand" and trying things.

jeremyd2019 commented 2 years ago

Finally got it. Shipped with 19043.928

jeremyd2019 commented 2 years ago

I imaged what it shipped with, and did a bunch of screwing around in "audit" mode to try to get it to update. I upgraded it to Pro, but I couldn't get Windows Update to offer me Win11. I finally gave up and left audit mode to go through OOBE (I know at some point MS made it so Home couldn't get through OOBE without a MS account, so I wanted it to be Pro first). I don't know whether it's because of Pro, or because I installed the 21H1 updates, or if it would have done this anyway, but at the end of OOBE it said that they recommended I upgrade to Windows 11 and had a "get it" button. That kicked off the download in the background on Windows Update.

jeremyd2019 commented 2 years ago

First run on the new machine: https://github.com/msys2-arm/MINGW-packages/runs/4722890056?check_suite_focus=true

Compared to autobuild on the pi4 8GB of the same package: https://github.com/msys2-arm/msys2-autobuild/runs/4720653899?check_suite_focus=true

Maybe like twice as fast, at least for curl

jeremyd2019 commented 2 years ago

I've got it building clang next, that seems to be a little more concerning regarding memory usage given its use of ninja for building, and ninja probably defaulting to -j10 on this 8-core machine (but not considering that there's only 4GB of ram)

jeremyd2019 commented 2 years ago

Clang in about 4.75 hours: https://github.com/msys2-arm/MINGW-packages/runs/4723562575?check_suite_focus=true

That's pretty good. I remember it being about 13 hours when I started on the rpi4 8GB, but that was before the package was split up a bit. It was about 3 days on the rpi3 (which only has 1GB ram).

It also revealed another 'fix' I need to add to my scripts: apparently the QC710 only has one power profile by default, balanced. So my Unattend.xml that tried to set it to performance apparently did nothing, and the machine was going to sleep during the job if I wasn't connected to RDP or interacting with the console. Looks like I need to add an explicit disabling of the sleep timeout in addition to setting the power plan.

jeremyd2019 commented 2 years ago

Well, I had both runners connected and it looks like the pi picked up the rebuild of clang, so we'll see how long it takes on the pi now :grin:

jeremyd2019 commented 2 years ago

https://github.com/msys2-arm/msys2-autobuild/runs/4729364699?check_suite_focus=true - about 10 and a half hours on the pi, so I guess RAM didn't slow it down too much

Biswa96 commented 2 years ago

Are the stats comparable with or faster than GitHub's own hosted x86_64 runners?

jeremyd2019 commented 2 years ago

GitHub's x86_64 runners are 2 cores and something like 7.75GB RAM IIRC. But CLANG64 took like 3.5 hours to build clang on one, compared to 4.75 on the QC710 and 10.5 on the pi for CLANGARM64

victoryang00 commented 2 years ago

I'm using m1 max with previewed 22538.1000, looking forward to using the port of msys2 on arm.