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

x/build: add a Windows ARM64 builder #42604

Closed
cagedmantis opened this issue Nov 13, 2020 · 22 comments
Closed

x/build: add a Windows ARM64 builder #42604

cagedmantis opened this issue Nov 13, 2020 · 22 comments
Labels
arch-arm64 Builders x/build issues (builders, bots, dashboards) FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done. new-builder OS-Windows release-blocker
Milestone

Comments

@cagedmantis
Copy link
Contributor

A builder should be added in support of the Windows/arm64 port #36439

Note: this is independent of #38607 which adds a Windows arm builder.

@golang/release

@cagedmantis cagedmantis added OS-Windows NeedsFix The path to resolution is known, but the work has not been done. new-builder arch-arm64 labels Nov 13, 2020
@cagedmantis cagedmantis added this to the Backlog milestone Nov 13, 2020
@gopherbot gopherbot added the Builders x/build issues (builders, bots, dashboards) label Nov 13, 2020
@zx2c4
Copy link
Contributor

zx2c4 commented Nov 20, 2020

I have a ARM64 builder now, with a preinstalled gcc for each architecture supported on the machine:

image

@zx2c4
Copy link
Contributor

zx2c4 commented Nov 20, 2020

CC @aclements @alexbrainman @jstarks

@gopherbot
Copy link

Change https://golang.org/cl/272106 mentions this issue: dashboard: add new Windows ARM builder

gopherbot pushed a commit to golang/build that referenced this issue Nov 21, 2020
This partially reverts CL 229559, while adjusting it to use a new
builder. The builder will be used now for windows/arm and later for
windows/arm64.

Updates golang/go#42604.
Updates golang/go#38607.
Updates golang/go#36439.

Change-Id: I1ab661a6585e64de8196955c077715b32dc732b8
Reviewed-on: https://go-review.googlesource.com/c/build/+/272106
Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Trust: Alex Brainman <alex.brainman@gmail.com>
Trust: Jason A. Donenfeld <Jason@zx2c4.com>
@cagedmantis cagedmantis added this to Planned in Go Release Team Mar 23, 2021
@cagedmantis cagedmantis modified the milestones: Backlog, Go1.17 Apr 8, 2021
@cagedmantis cagedmantis self-assigned this Apr 13, 2021
@cagedmantis cagedmantis moved this from Planned to In Progress in Go Release Team Apr 13, 2021
@toothrot toothrot assigned toothrot and unassigned cagedmantis Apr 20, 2021
@gopherbot
Copy link

Change https://golang.org/cl/314430 mentions this issue: dashboard: add compile-only TryBot coverage for windows/arm64 port

gopherbot pushed a commit to golang/build that referenced this issue Apr 27, 2021
The windows/arm64 port has been completed in golang.org/issue/36439
recently. Add pre-submit compile-only coverage via a misc-compile
TryBot for the new port. It can be upgraded to a normal TryBot that
also executes tests after a windows/arm64 builder becomes available.

Tested locally by running 'buildall.bash windows-arm64' on a recent
Go tip commit (CL 313849), which passed.

For golang/go#36439.
Updates golang/go#42604.

Change-Id: Ie4988a876aa18392a583eb407c6c3621eb30a4f8
Reviewed-on: https://go-review.googlesource.com/c/build/+/314430
Trust: Dmitri Shuralyov <dmitshur@golang.org>
Trust: Alexander Rakoczy <alex@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Reviewed-by: Alexander Rakoczy <alex@golang.org>
@gopherbot
Copy link

Change https://golang.org/cl/321309 mentions this issue: doc/go1.17: add release note for windows/arm64 port

gopherbot pushed a commit that referenced this issue May 20, 2021
Updates #44513, #42604.

Change-Id: I8200e8087c219a0042ab2a6770a7275c3b17942a
Reviewed-on: https://go-review.googlesource.com/c/go/+/321309
Trust: Cherry Mui <cherryyz@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
@gopherbot
Copy link

Change https://golang.org/cl/321959 mentions this issue: env/windows-arm: Add Ubuntu/Windows ARM64 VM configuration

gopherbot pushed a commit to golang/build that referenced this issue May 26, 2021
This change introduces a Windows ARM64 builder image for Go, running on
Ubuntu on an a1.metal instance on AWS.

The AMI image successfully boots, and automatically starts a Windows
ARM64 VM, exposing port 443. The buildlet still needs to be updated for
the appropriate mingw path. Additionally, the qemu script does not
yet automatically halt the instance on termination, which makes
debugging easier.

- Ubuntu was chosen over Debian, as the official Debian AMI would not
boot on a1.metal instances.
- a1.metal is the most affordable AWS instance to support KVM on ARM64.
- A prepared qemu image exists in the Go AWS account, under
s3://go-builder-data.
- Only 4 processors are currently supported in order to avoid a
CLOCK_WATCHDOG_TIMEOUT. We're working on investigating how to increase
this.
- The EC2 metadata service is proxied to the guest OS via qemu.

For golang/go#42604

Change-Id: I2a505a8218c2a818f0e52d179c02e6d264d2e422
Reviewed-on: https://go-review.googlesource.com/c/build/+/321959
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
@gopherbot
Copy link

Change https://golang.org/cl/322654 mentions this issue: buildlet: increase timeout period for client

@gopherbot
Copy link

Change https://golang.org/cl/322655 mentions this issue: env/windows-arm64/aws: increase VM resources

@gopherbot
Copy link

Change https://golang.org/cl/322653 mentions this issue: cmd/buildlet: support Windows ARM64 qemu guests

@gopherbot
Copy link

Change https://golang.org/cl/322656 mentions this issue: dashboard: add windows-arm64 builder

gopherbot pushed a commit to golang/build that referenced this issue May 26, 2021
The a1.metal instances take about four minutes to become available
before beginning to boot the Windows ARM64 VM. This means we need
somewhere between five and ten minutes before we can first connect to
the buildlet.

It's possible that other instances are faster to boot, but this is
currently the most economical choice.

For golang/go#42604

Change-Id: Ib76944307c9ad28fd1adca0dc54f3fbeaabfffa0
Reviewed-on: https://go-review.googlesource.com/c/build/+/322654
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
@gopherbot
Copy link

Change https://golang.org/cl/322855 mentions this issue: internal/coordinator/pool: add a hard limit for a1.metal instances

gopherbot pushed a commit to golang/build that referenced this issue May 26, 2021
This change allows the ledger to track how many a1.metal instances
have either been created or are in the process of being created. A
hard limit of 1 has been set for a1.metal limits while testing is
being performed.

For golang/go#42604

Change-Id: I5bcb3a65407af07d225caf2884877ce040ee011b
Reviewed-on: https://go-review.googlesource.com/c/build/+/322855
Trust: Carlos Amedee <carlos@golang.org>
Run-TryBot: Carlos Amedee <carlos@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Alexander Rakoczy <alex@golang.org>
gopherbot pushed a commit to golang/build that referenced this issue May 26, 2021
a1.metal instances have 32Gb of ram, and 16 cores. We should try to use
as much as possible.

We run into CLOCK_WATCHDOG_TIMEOUT when using more than 4 of the 16
cores. The VM can also fail to boot. We have a thread discussing how to
resolve this.

A new AMI will need to be created and configured after any changes to
this script.

For golang/go#42604

Change-Id: If49b89718fca6dc5cee30e609a8ded9f99bf1f05
Reviewed-on: https://go-review.googlesource.com/c/build/+/322655
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
gopherbot pushed a commit to golang/build that referenced this issue May 26, 2021
Add the windows-arm64 builder to the dashboard and coordinator with a
known issue until we can verify builds are succeeding regularly.

Also, tweak the logic around validating ec2 configurations. The arm64
buildlet sets VMImage but not ContainerImage, unlike other ec2
buildlets. This should work for both.

For golang/go#42604

Change-Id: I7176b8f6bba837830a0565e7713c9e9a0eb76e90
Reviewed-on: https://go-review.googlesource.com/c/build/+/322656
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
@toothrot
Copy link
Contributor

@zx2c4 Sounds good. Thanks so much for your assistance! Your help was very useful in getting this set up, and thanks for providing builders in the interim.

@dmitshur dmitshur added the okay-after-beta1 Used by release team to mark a release-blocker issue as okay to resolve either before or after beta1 label Jun 3, 2021
@heschi heschi removed the okay-after-beta1 Used by release team to mark a release-blocker issue as okay to resolve either before or after beta1 label Jun 10, 2021
@gopherbot
Copy link

Change https://golang.org/cl/328311 mentions this issue: dashboard: add windows-arm64-10 reverse buildlet

gopherbot pushed a commit to golang/build that referenced this issue Jun 17, 2021
This adds a reverse buildlet for Windows ARM64 running under qemu on M1
Mac Minis. The VM currently boots, but more changes are needed to
stage0 and buildlet in order for the builder to run.

For golang/go#42604.

Change-Id: Ie86e596c0f166d2ca8c075c0c971fcd1e34e940f
Reviewed-on: https://go-review.googlesource.com/c/build/+/328311
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
@gopherbot
Copy link

Change https://golang.org/cl/331669 mentions this issue: cmd/buildlet: handle shutdown on Windows reverse buildlets

@gopherbot
Copy link

Change https://golang.org/cl/331670 mentions this issue: dashboard,cmd/release: replace windows-arm64-aws with windows-arm64-10

gopherbot pushed a commit to golang/build that referenced this issue Jun 29, 2021
The Windows ARM64 VM should exit upon build completion. Afterwards, we
should try to terminate our instance. The coordinator will clean it up
soon anyway.

For golang/go#42604

Change-Id: Ib7b6adbe293d8ea9e54c8288de9f10c6a45ebeb3
Reviewed-on: https://go-review.googlesource.com/c/build/+/322657
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
gopherbot pushed a commit to golang/build that referenced this issue Jun 30, 2021
This change makes room for a race between the main function exiting, and
the delay built into our halting process when shutting down a reverse
dialer.

Ideally, there would be no race, but plumbing the shutdown signal
through is a separate significant effort.

For golang/go#42604

Change-Id: I0762cb71eac50bcda7f0cd571e04396e98bff699
Reviewed-on: https://go-review.googlesource.com/c/build/+/331669
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
gopherbot pushed a commit to golang/build that referenced this issue Jun 30, 2021
This change removes the windows-arm64-aws buildlet and replaces all
usages with the windows-arm64-10 buildlet.

- Remove the known issue from the windows-arm64-10 buildlet, which has
been passing reliably.
- Enable tests during releases, and add a slowbot alias, as it's a much
faster buildlet.

Updates golang/go#46502
For golang/go#42604

Change-Id: Ib9f7c3d5391b01e303b43bbdad030b3f94147c5d
Reviewed-on: https://go-review.googlesource.com/c/build/+/331670
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
@toothrot
Copy link
Contributor

toothrot commented Jul 1, 2021

Filed #47018 and #47017 to cover some of the remaining work on this buildlet. I'll leave this open until the existing configuration is checked in.

@gopherbot
Copy link

Change https://golang.org/cl/332492 mentions this issue: env/windows-arm64/macstadium: add image notes and qemu script

Go Release Team automation moved this from In Progress to Done Jul 7, 2021
@gopherbot
Copy link

Change https://golang.org/cl/333076 mentions this issue: dashboard: expect 1 windows-arm64-mini host.

gopherbot pushed a commit to golang/build that referenced this issue Jul 7, 2021
This will make the dashboard view more consistent.

For golang/go#42604

Change-Id: I90991c9e6c7ba5fc781c6ea1259593048156ca79
Reviewed-on: https://go-review.googlesource.com/c/build/+/333076
Trust: Alexander Rakoczy <alex@golang.org>
Run-TryBot: Alexander Rakoczy <alex@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
@gopherbot
Copy link

Change https://go.dev/cl/462655 mentions this issue: env/windows-arm64/aws: delete

gopherbot pushed a commit to golang/build that referenced this issue Jan 18, 2023
The Windows ARM64 builders on Azure have replaced the Windows ARM64
builders on AWS by now. Remove unused environment configuration; we
can bring it back or look it up in history if needed.

Updates golang/go#53541.
Updates golang/go#42604.
Updates golang/go#57408.

Change-Id: I080e4f5c53712c0470332a7d26d00c939136e57c
Reviewed-on: https://go-review.googlesource.com/c/build/+/462655
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
@golang golang locked and limited conversation to collaborators Jan 18, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-arm64 Builders x/build issues (builders, bots, dashboards) FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done. new-builder OS-Windows release-blocker
Projects
Archived in project
Development

No branches or pull requests

6 participants