pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/mk/build



Module Name:    pkgsrc
Committed By:   jperkin
Date:           Thu Jul 30 16:16:31 UTC 2026

Modified Files:
        pkgsrc/mk/build: build.mk

Log Message:
mk: Add support for MAKE_JOBS_METHOD.

Currently lang/openjdk* have to set MAKE_JOBS_SAFE=no to avoid getting -j added
to the default make command line, which according to their documentation is
unsafe.  Assuming that MAKE_JOBS will still be set to a value >1 in this
situation is unreliable, and is clearly a mis-use of the intended design for
this variable.

Instead they can now set MAKE_JOBS_METHOD=manual (the recommended value for
packages which perform their own custom MAKE_JOBS handling) which will avoid -j
being passed.

The variable is left deliberately open-ended in order to easily support other
build systems, should we wish to in the future.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 pkgsrc/mk/build/build.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/mk/build/build.mk
diff -u pkgsrc/mk/build/build.mk:1.34 pkgsrc/mk/build/build.mk:1.35
--- pkgsrc/mk/build/build.mk:1.34       Fri Jun 12 17:33:23 2020
+++ pkgsrc/mk/build/build.mk    Thu Jul 30 16:16:31 2026
@@ -1,4 +1,4 @@
-# $NetBSD: build.mk,v 1.34 2020/06/12 17:33:23 rillig Exp $
+# $NetBSD: build.mk,v 1.35 2026/07/30 16:16:31 jperkin Exp $
 #
 # This file defines what happens in the build phase, excluding the
 # self-test, which is defined in test.mk.
@@ -17,6 +17,15 @@
 # BUILD_TARGET is the target from ${MAKE_FILE} that should be invoked
 #      to build the sources.
 #
+# MAKE_JOBS_METHOD
+#      How the MAKE_JOBS value should be passed to the build.  The vast
+#      majority of packages use the "-j" argument to make, and so the
+#      default is "make-j".  This variable is left deliberately open-ended
+#      to allow for future build system support.  If a package has its own
+#      method for using MAKE_JOBS, it should set this value to "manual".
+#
+#      Keywords: parallel
+#
 # MAKE_JOBS_SAFE
 #      Whether the package supports parallel builds. If set to yes,
 #      at most MAKE_JOBS jobs are carried out in parallel. The default
@@ -40,13 +49,15 @@
 _VARGROUPS+=           build
 _DEF_VARS.build=       _MAKE_JOBS_N
 _USER_VARS.build=      MAKE_JOBS BUILD_ENV_SHELL
-_PKG_VARS.build=       MAKE_ENV MAKE_FLAGS BUILD_MAKE_FLAGS BUILD_TARGET MAKE_JOBS_SAFE
+_PKG_VARS.build=       MAKE_ENV MAKE_FLAGS BUILD_MAKE_FLAGS BUILD_TARGET
+_PKG_VARS.build+=      MAKE_JOBS_METHOD MAKE_JOBS_SAFE
 _SYS_VARS.build=       BUILD_MAKE_CMD
 _SORTED_VARS.build=    *_ENV
 _LISTED_VARS.build=    *_FLAGS *_CMD
 
 BUILD_MAKE_FLAGS?=     # none
 BUILD_TARGET?=         all
+MAKE_JOBS_METHOD?=     make-j
 
 BUILD_MAKE_CMD= \
        ${PKGSRC_SETENV} ${MAKE_ENV}                                    \
@@ -54,14 +65,18 @@ BUILD_MAKE_CMD= \
                        ${MAKE_FLAGS} ${BUILD_MAKE_FLAGS}               \
                        -f ${MAKE_FILE}
 
-.if defined(MAKE_JOBS_SAFE) && !empty(MAKE_JOBS_SAFE:M[nN][oO])
+.if ${MAKE_JOBS_SAFE:U:tl} == no
 _MAKE_JOBS=    # nothing
 _MAKE_JOBS_N=  1
 .elif defined(MAKE_JOBS.${PKGPATH})
+.  if ${MAKE_JOBS_METHOD} == "make-j"
 _MAKE_JOBS=    -j${MAKE_JOBS.${PKGPATH}}
+.  endif
 _MAKE_JOBS_N=  ${MAKE_JOBS.${PKGPATH}}
 .elif defined(MAKE_JOBS)
+.  if ${MAKE_JOBS_METHOD} == "make-j"
 _MAKE_JOBS=    -j${MAKE_JOBS}
+.  endif
 _MAKE_JOBS_N=  ${MAKE_JOBS}
 .else
 _MAKE_JOBS_N=  1



Home | Main Index | Thread Index | Old Index