chore(build): require go 1.27 (#427)
* chore(build): require go 1.27 * build(systemviews): drop the pinned artifact toolchain
- commit
- 62dc92cb036ac90b3ff2a184ac78f7c1f6f28e0c
- author
- bnema · · 2026-09-11 04:52 UTC
- committer
- GitHub · · 2026-09-11 04:52 UTC
- parent
- e04d7eb
- signature
- GPG Unverified
B5690EEEBB952194The key is unknown
8 files · +13 -22
M .github/workflows/aur.yml +1 -1
| @@ -51,7 +51,7 @@ jobs: | |||
| 51 | 51 | "arch=('x86_64')" \ | |
| 52 | 52 | 'url="https://github.com/bnema/dumber"' \ | |
| 53 | 53 | "license=('MIT')" \ | |
| 54 | - | "makedepends=('go>=1.26' 'git' 'brotli')" \ | |
| 54 | + | "makedepends=('go>=1.27' 'git' 'brotli')" \ | |
| 55 | 55 | "depends=('gtk4' 'cef' 'webkitgtk-6.0')" \ | |
| 56 | 56 | 'optdepends=(' \ | |
| 57 | 57 | " 'gst-plugins-base: Base media codecs'" \ | |
| @@ -51,7 +51,7 @@ jobs: | |||||
| 51 | "arch=('x86_64')" \ | 51 | "arch=('x86_64')" \ | ||
| 52 | 'url="https://github.com/bnema/dumber"' \ | 52 | 'url="https://github.com/bnema/dumber"' \ | ||
| 53 | "license=('MIT')" \ | 53 | "license=('MIT')" \ | ||
| 54 | - | "makedepends=('go>=1.26' 'git' 'brotli')" \ | 54 | + | "makedepends=('go>=1.27' 'git' 'brotli')" \ |
| 55 | "depends=('gtk4' 'cef' 'webkitgtk-6.0')" \ | 55 | "depends=('gtk4' 'cef' 'webkitgtk-6.0')" \ | ||
| 56 | 'optdepends=(' \ | 56 | 'optdepends=(' \ | ||
| 57 | " 'gst-plugins-base: Base media codecs'" \ | 57 | " 'gst-plugins-base: Base media codecs'" \ | ||
M Makefile +7 -10
| @@ -34,13 +34,10 @@ WASM_GOFLAGS?=$(GOFLAGS) | |||
| 34 | 34 | # Linker flags | |
| 35 | 35 | LDFLAGS=-ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(BUILD_DATE)" | |
| 36 | 36 | ||
| 37 | - | # Blessed toolchain for systemview artifacts, read from go.mod so there is | |
| 38 | - | # exactly one version to bump. The verify-generated CI gate rebuilds these | |
| 39 | - | # artifacts with setup-go's pinned toolchain: recipe-level GOTOOLCHAIN | |
| 40 | - | # (not ambient environment) plus GOENV=off (ignore the developer's go env | |
| 41 | - | # file — e.g. a local GOEXPERIMENT changes runtime codegen) is what makes | |
| 42 | - | # local builds byte-identical to CI's. | |
| 43 | - | SYSTEMVIEWS_GOTOOLCHAIN?=$(shell grep '^toolchain ' go.mod | awk '{print $$2}') | |
| 37 | + | # Systemview artifacts are built with the toolchain that satisfies go.mod's | |
| 38 | + | # go directive: setup-go's toolchain in CI, the local Go elsewhere. GOENV=off | |
| 39 | + | # keeps the developer's go env file out of the build (e.g. a local GOEXPERIMENT | |
| 40 | + | # changes runtime codegen), so one toolchain always yields the same WASM bytes. | |
| 44 | 41 | ||
| 45 | 42 | # Disable optimizations and inlining for ALL packages. purego callbacks | |
| 46 | 43 | # create mixed Go/C stack frames; the Go runtime (stack growth, GC, | |
| @@ -70,15 +67,15 @@ build: build-systemviews verify-systemviews-assets ## Build the application (pur | |||
| 70 | 67 | ||
| 71 | 68 | generate-systemviews: ## Generate Go code from systemviews templ components | |
| 72 | 69 | @echo "Generating systemviews templ components..." | |
| 73 | - | GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" GOENV=off go tool templ generate -path internal/ui/systemviews -include-version=false | |
| 70 | + | GOENV=off go tool templ generate -path internal/ui/systemviews -include-version=false | |
| 74 | 71 | @echo "Systemviews templ generation complete" | |
| 75 | 72 | ||
| 76 | 73 | build-systemviews: generate-systemviews ## Build the WASM systemviews runtime | |
| 77 | 74 | @echo "Building systemviews wasm assets..." | |
| 78 | 75 | @command -v brotli >/dev/null 2>&1 || { echo "Error: brotli is required to build compressed systemviews assets. Install brotli and retry."; exit 1; } | |
| 79 | 76 | @mkdir -p assets/systemviews | |
| 80 | - | @cp -f "$$(GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" go env GOROOT)/lib/wasm/wasm_exec.js" assets/systemviews/wasm_exec.js | |
| 81 | - | GOFLAGS="$(WASM_GOFLAGS)" GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" GOENV=off GOOS=js GOARCH=wasm go build -trimpath -buildvcs=false -ldflags="-s -w" -o assets/systemviews/systemviews.wasm ./cmd/systemviews | |
| 77 | + | @cp -f "$$(go env GOROOT)/lib/wasm/wasm_exec.js" assets/systemviews/wasm_exec.js | |
| 78 | + | GOFLAGS="$(WASM_GOFLAGS)" GOENV=off GOOS=js GOARCH=wasm go build -trimpath -buildvcs=false -ldflags="-s -w" -o assets/systemviews/systemviews.wasm ./cmd/systemviews | |
| 82 | 79 | brotli -f -o assets/systemviews/systemviews.wasm.br assets/systemviews/systemviews.wasm | |
| 83 | 80 | go run ./cmd/systemviews-assets -dir assets/systemviews | |
| 84 | 81 | @echo "Systemviews build complete" | |
| @@ -34,13 +34,10 @@ WASM_GOFLAGS?=$(GOFLAGS) | |||||
| 34 | # Linker flags | 34 | # Linker flags | ||
| 35 | LDFLAGS=-ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(BUILD_DATE)" | 35 | LDFLAGS=-ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.buildDate=$(BUILD_DATE)" | ||
| 36 | 36 | ||||
| 37 | - | # Blessed toolchain for systemview artifacts, read from go.mod so there is | 37 | + | # Systemview artifacts are built with the toolchain that satisfies go.mod's |
| 38 | - | # exactly one version to bump. The verify-generated CI gate rebuilds these | 38 | + | # go directive: setup-go's toolchain in CI, the local Go elsewhere. GOENV=off |
| 39 | - | # artifacts with setup-go's pinned toolchain: recipe-level GOTOOLCHAIN | 39 | + | # keeps the developer's go env file out of the build (e.g. a local GOEXPERIMENT |
| 40 | - | # (not ambient environment) plus GOENV=off (ignore the developer's go env | 40 | + | # changes runtime codegen), so one toolchain always yields the same WASM bytes. |
| 41 | - | # file — e.g. a local GOEXPERIMENT changes runtime codegen) is what makes | |||
| 42 | - | # local builds byte-identical to CI's. | |||
| 43 | - | SYSTEMVIEWS_GOTOOLCHAIN?=$(shell grep '^toolchain ' go.mod | awk '{print $$2}') | |||
| 44 | 41 | ||||
| 45 | # Disable optimizations and inlining for ALL packages. purego callbacks | 42 | # Disable optimizations and inlining for ALL packages. purego callbacks | ||
| 46 | # create mixed Go/C stack frames; the Go runtime (stack growth, GC, | 43 | # create mixed Go/C stack frames; the Go runtime (stack growth, GC, | ||
| @@ -70,15 +67,15 @@ build: build-systemviews verify-systemviews-assets ## Build the application (pur | |||||
| 70 | 67 | ||||
| 71 | generate-systemviews: ## Generate Go code from systemviews templ components | 68 | generate-systemviews: ## Generate Go code from systemviews templ components | ||
| 72 | @echo "Generating systemviews templ components..." | 69 | @echo "Generating systemviews templ components..." | ||
| 73 | - | GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" GOENV=off go tool templ generate -path internal/ui/systemviews -include-version=false | 70 | + | GOENV=off go tool templ generate -path internal/ui/systemviews -include-version=false |
| 74 | @echo "Systemviews templ generation complete" | 71 | @echo "Systemviews templ generation complete" | ||
| 75 | 72 | ||||
| 76 | build-systemviews: generate-systemviews ## Build the WASM systemviews runtime | 73 | build-systemviews: generate-systemviews ## Build the WASM systemviews runtime | ||
| 77 | @echo "Building systemviews wasm assets..." | 74 | @echo "Building systemviews wasm assets..." | ||
| 78 | @command -v brotli >/dev/null 2>&1 || { echo "Error: brotli is required to build compressed systemviews assets. Install brotli and retry."; exit 1; } | 75 | @command -v brotli >/dev/null 2>&1 || { echo "Error: brotli is required to build compressed systemviews assets. Install brotli and retry."; exit 1; } | ||
| 79 | @mkdir -p assets/systemviews | 76 | @mkdir -p assets/systemviews | ||
| 80 | - | @cp -f "$$(GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" go env GOROOT)/lib/wasm/wasm_exec.js" assets/systemviews/wasm_exec.js | 77 | + | @cp -f "$$(go env GOROOT)/lib/wasm/wasm_exec.js" assets/systemviews/wasm_exec.js |
| 81 | - | GOFLAGS="$(WASM_GOFLAGS)" GOTOOLCHAIN="$(SYSTEMVIEWS_GOTOOLCHAIN)" GOENV=off GOOS=js GOARCH=wasm go build -trimpath -buildvcs=false -ldflags="-s -w" -o assets/systemviews/systemviews.wasm ./cmd/systemviews | 78 | + | GOFLAGS="$(WASM_GOFLAGS)" GOENV=off GOOS=js GOARCH=wasm go build -trimpath -buildvcs=false -ldflags="-s -w" -o assets/systemviews/systemviews.wasm ./cmd/systemviews |
| 82 | brotli -f -o assets/systemviews/systemviews.wasm.br assets/systemviews/systemviews.wasm | 79 | brotli -f -o assets/systemviews/systemviews.wasm.br assets/systemviews/systemviews.wasm | ||
| 83 | go run ./cmd/systemviews-assets -dir assets/systemviews | 80 | go run ./cmd/systemviews-assets -dir assets/systemviews | ||
| 84 | @echo "Systemviews build complete" | 81 | @echo "Systemviews build complete" | ||
M README.md +1 -1
| @@ -206,7 +206,7 @@ Set `ENV=dev` to isolate the development process under `.dev/dumber/`. Dumber se | |||
| 206 | 206 | ||
| 207 | 207 | **Prerequisites:** | |
| 208 | 208 | ||
| 209 | - | - Go 1.26+ | |
| 209 | + | - Go 1.27+ | |
| 210 | 210 | - GTK4 development packages | |
| 211 | 211 | - CEF runtime (default backend) | |
| 212 | 212 | - WebKitGTK 6.0 development/runtime packages (fallback backend and runtime checks) | |
| @@ -206,7 +206,7 @@ Set `ENV=dev` to isolate the development process under `.dev/dumber/`. Dumber se | |||||
| 206 | 206 | ||||
| 207 | **Prerequisites:** | 207 | **Prerequisites:** | ||
| 208 | 208 | ||||
| 209 | - | - Go 1.26+ | 209 | + | - Go 1.27+ |
| 210 | - GTK4 development packages | 210 | - GTK4 development packages | ||
| 211 | - CEF runtime (default backend) | 211 | - CEF runtime (default backend) | ||
| 212 | - WebKitGTK 6.0 development/runtime packages (fallback backend and runtime checks) | 212 | - WebKitGTK 6.0 development/runtime packages (fallback backend and runtime checks) | ||
M aur/dumber-browser-git/.SRCINFO +1 -1
| @@ -5,7 +5,7 @@ pkgbase = dumber-browser-git | |||
| 5 | 5 | url = https://github.com/bnema/dumber | |
| 6 | 6 | arch = x86_64 | |
| 7 | 7 | license = MIT | |
| 8 | - | makedepends = go>=1.26 | |
| 8 | + | makedepends = go>=1.27 | |
| 9 | 9 | makedepends = git | |
| 10 | 10 | makedepends = brotli | |
| 11 | 11 | depends = gtk4 | |
| @@ -5,7 +5,7 @@ pkgbase = dumber-browser-git | |||||
| 5 | url = https://github.com/bnema/dumber | 5 | url = https://github.com/bnema/dumber | ||
| 6 | arch = x86_64 | 6 | arch = x86_64 | ||
| 7 | license = MIT | 7 | license = MIT | ||
| 8 | - | makedepends = go>=1.26 | 8 | + | makedepends = go>=1.27 |
| 9 | makedepends = git | 9 | makedepends = git | ||
| 10 | makedepends = brotli | 10 | makedepends = brotli | ||
| 11 | depends = gtk4 | 11 | depends = gtk4 | ||
M aur/dumber-browser-git/PKGBUILD +1 -1
| @@ -6,7 +6,7 @@ pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)" | |||
| 6 | 6 | arch=('x86_64') | |
| 7 | 7 | url="https://github.com/bnema/dumber" | |
| 8 | 8 | license=('MIT') | |
| 9 | - | makedepends=('go>=1.26' 'git' 'brotli') | |
| 9 | + | makedepends=('go>=1.27' 'git' 'brotli') | |
| 10 | 10 | depends=('gtk4' 'cef' 'webkitgtk-6.0' 'libwebp') | |
| 11 | 11 | optdepends=( | |
| 12 | 12 | 'gst-plugins-base: Base media codecs' | |
| @@ -6,7 +6,7 @@ pkgdesc="A minimal keyboard-driven browser for tiling WMs (git version)" | |||||
| 6 | arch=('x86_64') | 6 | arch=('x86_64') | ||
| 7 | url="https://github.com/bnema/dumber" | 7 | url="https://github.com/bnema/dumber" | ||
| 8 | license=('MIT') | 8 | license=('MIT') | ||
| 9 | - | makedepends=('go>=1.26' 'git' 'brotli') | 9 | + | makedepends=('go>=1.27' 'git' 'brotli') |
| 10 | depends=('gtk4' 'cef' 'webkitgtk-6.0' 'libwebp') | 10 | depends=('gtk4' 'cef' 'webkitgtk-6.0' 'libwebp') | ||
| 11 | optdepends=( | 11 | optdepends=( | ||
| 12 | 'gst-plugins-base: Base media codecs' | 12 | 'gst-plugins-base: Base media codecs' | ||
M docs/installation.md +1 -1
| @@ -49,7 +49,7 @@ make build | |||
| 49 | 49 | ||
| 50 | 50 | ### Build Dependencies | |
| 51 | 51 | ||
| 52 | - | - Go 1.26+ | |
| 52 | + | - Go 1.27+ | |
| 53 | 53 | - GTK4 development libraries | |
| 54 | 54 | - CEF runtime for the default backend | |
| 55 | 55 | - WebKitGTK 6.0 development/runtime libraries for the fallback backend and runtime checks | |
| @@ -49,7 +49,7 @@ make build | |||||
| 49 | 49 | ||||
| 50 | ### Build Dependencies | 50 | ### Build Dependencies | ||
| 51 | 51 | ||||
| 52 | - | - Go 1.26+ | 52 | + | - Go 1.27+ |
| 53 | - GTK4 development libraries | 53 | - GTK4 development libraries | ||
| 54 | - CEF runtime for the default backend | 54 | - CEF runtime for the default backend | ||
| 55 | - WebKitGTK 6.0 development/runtime libraries for the fallback backend and runtime checks | 55 | - WebKitGTK 6.0 development/runtime libraries for the fallback backend and runtime checks | ||
M go.mod +1 -3
| @@ -1,8 +1,6 @@ | |||
| 1 | 1 | module github.com/bnema/dumber | |
| 2 | 2 | ||
| 3 | - | go 1.26.0 | |
| 4 | - | ||
| 5 | - | toolchain go1.26.7 | |
| 3 | + | go 1.27 | |
| 6 | 4 | ||
| 7 | 5 | require ( | |
| 8 | 6 | github.com/a-h/templ v0.3.1020 | |
| @@ -1,8 +1,6 @@ | |||||
| 1 | module github.com/bnema/dumber | 1 | module github.com/bnema/dumber | ||
| 2 | 2 | ||||
| 3 | - | go 1.26.0 | 3 | + | go 1.27 |
| 4 | - | ||||
| 5 | - | toolchain go1.26.7 | |||
| 6 | 4 | ||||
| 7 | require ( | 5 | require ( | ||
| 8 | github.com/a-h/templ v0.3.1020 | 6 | github.com/a-h/templ v0.3.1020 | ||