Several go ports set GOMAXPROCs to MAKE_JOBS in MAKE_ENV. I think this
is more brutal than intended and hinders more than it helps because per
https://pkg.go.dev/runtime:
The GOMAXPROCS variable limits the number of operating system threads
that can execute user-level Go code simultaneously
In my test bulk builds with go 1.26rc2, grafana takes more than half
an hour to do its one slow compile/link/whatever step. I had one
pathological bulk where it took 4000s.
jsing points out that it would be better to pass -p ${MAKE_JOBS} to
the build/run/install commands, which the go module already adds to
the MODGO_FLAGS.
-p n
the number of programs, such as build commands or
test binaries, that can be run in parallel.
The default is GOMAXPROCS, normally the number of CPUs available.
Now this doesn't seem entirely true in practice since I see the builds
spawning a few processes more than one but I think this is acceptable
given that it's only for a rather short time.
The below is my suggestion for reposurgeon, syncthing and grafana.
syncthing might want to do the same in its hand-rolled test command.
There's another one in prometheus, but it looks slightly different.
Index: devel/reposurgeon/Makefile
===================================================================
RCS file: /cvs/ports/devel/reposurgeon/Makefile,v
diff -u -p -r1.20 Makefile
--- devel/reposurgeon/Makefile 28 Jun 2025 00:36:32 -0000 1.20
+++ devel/reposurgeon/Makefile 24 Jan 2026 22:52:33 -0000
@@ -26,7 +26,7 @@ MODRUBY_RUNDEP= No
WRKSRC= ${WRKDIST}
WRKBUILD= ${WRKDIST}
MODGO_GOPATH= ${MODGO_WORKSPACE}:${MODGO_PACKAGE_PATH}:${WRKSRC}/vendor
-MAKE_ENV= GOFLAGS=-v GOMAXPROCS=${MAKE_JOBS}
+MAKE_ENV= GOFLAGS=-v
FAKE_FLAGS= mandir=man
Index: net/syncthing/Makefile
===================================================================
RCS file: /cvs/ports/net/syncthing/Makefile,v
diff -u -p -r1.76 Makefile
--- net/syncthing/Makefile 17 Jan 2026 00:37:56 -0000 1.76
+++ net/syncthing/Makefile 25 Jan 2026 10:16:37 -0000
@@ -27,8 +27,6 @@ MODULES = lang/go
# so we package only these binaries.
ST_CMDS = syncthing stdiscosrv strelaysrv
-MAKE_ENV = GOMAXPROCS=${MAKE_JOBS}
-
pre-build:
${SUBST_CMD} ${WRKSRC}/cmd/syncthing/main.go
@@ -37,7 +35,7 @@ pre-build:
# without quic support obviously). When you do that, some more tests will fail.
do-build:
.for cmd in ${ST_CMDS}
- cd ${WRKSRC} && ${MODGO_CMD} run build.go -version v${V} \
+ cd ${WRKSRC} && ${MODGO_CMD} run ${MODGO_FLAGS} build.go -version v${V}
\
-no-upgrade install ${cmd}
.endfor
Index: sysutils/grafana/Makefile
===================================================================
RCS file: /cvs/ports/sysutils/grafana/Makefile,v
diff -u -p -r1.56 Makefile
--- sysutils/grafana/Makefile 19 Dec 2025 02:30:03 -0000 1.56
+++ sysutils/grafana/Makefile 25 Jan 2026 10:06:46 -0000
@@ -35,7 +35,6 @@ WANTLIB += c pthread
MODGO_GO111MODULE = on
MODGO_FLAGS += -ldflags="-w -X main.version=$V"
-MAKE_ENV = GOMAXPROCS=${MAKE_JOBS}
do-build:
mkdir -p ${WRKDIR}/go/src/github.com/grafana