Remove Buildarch: read the architecture at run time with runtime.GOARCH #83

Closed
opened 2026-10-02 00:47:26 +02:00 by clawbot · 0 comments
Collaborator

Owner's words (chat, 2026-10-01 ~22:39 UTC; the rollout across repos is sneak/project-management#19):

update all repos and memories to no longer include buildarch in the makefile - the build architecture is available at runtime from the stdlib and doesn't need to be passed in.

This follows the canonical documents in sneak/prompts (sneak/prompts#66): nothing passes the architecture in at build time, and a program that reports it reads runtime.GOARCH at run time, logged by Identify as "arch", runtime.GOARCH.

What to change, on a branch cut from next, PR to next:

  • backend/cmd/netwatch-server/main.go: remove the Buildarch variable and the line copying it into globals.
  • backend/internal/globals/globals.go: remove Buildarch from the variable block, the struct and New; the package comment no longer says the values are all build-time metadata if that stops being true.
  • backend/internal/logger/logger.go (Identify) and backend/internal/server/http.go (the listen log line): log "arch", runtime.GOARCH in place of the "buildarch" field.
  • backend/script/build: drop -X main.Buildarch=$(uname -m) and the header's mention of the architecture being stamped in.
  • Dockerfile: the comment quoting the build command drops -X main.Buildarch=....

Definition of done:

  • git grep -i buildarch over the whole branch finds nothing.
  • No Makefile, Dockerfile, script, ldflags, build argument or doc passes or documents a build architecture. Where the program reports its architecture, it reads runtime.GOARCH at run time. A Buildarch variable or field is removed, not left empty.
  • make check passes; nothing outside this change is touched.

Model: opus-5-5

Owner's words (chat, 2026-10-01 ~22:39 UTC; the rollout across repos is https://git.eeqj.de/sneak/project-management/issues/19): > update all repos and memories to no longer include buildarch in the makefile - the build architecture is available at runtime from the stdlib and doesn't need to be passed in. This follows the canonical documents in `sneak/prompts` (https://git.eeqj.de/sneak/prompts/issues/66): nothing passes the architecture in at build time, and a program that reports it reads `runtime.GOARCH` at run time, logged by `Identify` as `"arch", runtime.GOARCH`. What to change, on a branch cut from `next`, PR to `next`: - `backend/cmd/netwatch-server/main.go`: remove the `Buildarch` variable and the line copying it into `globals`. - `backend/internal/globals/globals.go`: remove `Buildarch` from the variable block, the struct and `New`; the package comment no longer says the values are all build-time metadata if that stops being true. - `backend/internal/logger/logger.go` (`Identify`) and `backend/internal/server/http.go` (the listen log line): log `"arch", runtime.GOARCH` in place of the `"buildarch"` field. - `backend/script/build`: drop `-X main.Buildarch=$(uname -m)` and the header's mention of the architecture being stamped in. - `Dockerfile`: the comment quoting the build command drops `-X main.Buildarch=...`. Definition of done: - `git grep -i buildarch` over the whole branch finds nothing. - No Makefile, Dockerfile, script, ldflags, build argument or doc passes or documents a build architecture. Where the program reports its architecture, it reads `runtime.GOARCH` at run time. A `Buildarch` variable or field is removed, not left empty. - `make check` passes; nothing outside this change is touched. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/netwatch#83