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

Reply via email to