tech-pkg archive

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

per-package MAKE_JOBS

I got tired of having to build qemu by hand to keep it from OOMing, so
the following patch allows MAKE_JOBS.pkg to override the global
MAKE_JOBS setting.

It uses PKGBASE as the key; is that right? Prior art is surprisingly
hard to find given how many ${} things we have.

Also, should it set some variable (say, PKG_MAKE_JOBS) to the resolved
jobs count for this package, so it can be interrogated elsewhere?


Index: mk/defaults/mk.conf
RCS file: /cvsroot/pkgsrc/mk/defaults/mk.conf,v
retrieving revision 1.290
diff -u -r1.290 mk.conf
--- mk/defaults/mk.conf	2 Jan 2018 05:49:44 -0000	1.290
+++ mk/defaults/mk.conf	7 Jan 2018 20:51:03 -0000
@@ -51,19 +51,26 @@
 # Default: -9
+#MAKE_JOBS.pkg=	2
 #	When defined, specifies the maximum number of jobs ("make -j")
 #	that are run in parallel when building packages with the default
 #	do-build action. MAKE_JOBS only affects the "build" target,
 #	neither "test" nor "install".
+#	May be specified on a per-package basis; any package-specific
+#	value overrides the global setting.
 #	Possible values: any positive integer. Useful values are around
 #	the number of processors on the machine.
 #	Default value: (undefined)
-#	Warning: This is experimental. Some packages will not build with
-#	this. Disabling this for an individual package can be done by
+#	Warning: Some packages will not build with this. Disabling
+#	parallel builds for an individual package can be done by
 #	setting MAKE_JOBS_SAFE=NO within the per package Makefile.
+#	When doing so, please include a comment indicating what went
+#	wrong so it can be crosschecked in the future after upstream
+#	changes.
 # use hostname-specific object directories, e.g.  work.amnesiac, work.localhost
Index: mk/build/
RCS file: /cvsroot/pkgsrc/mk/build/,v
retrieving revision 1.22
diff -u -r1.22
--- mk/build/	1 Jun 2017 02:15:10 -0000	1.22
+++ mk/build/	7 Jan 2018 20:51:03 -0000
@@ -53,6 +53,8 @@
 .if defined(MAKE_JOBS_SAFE) && !empty(MAKE_JOBS_SAFE:M[nN][oO])
 _MAKE_JOBS=	# nothing
+.elif defined(MAKE_JOBS.${PKGBASE})
 .elif defined(MAKE_JOBS)

David A. Holland

Home | Main Index | Thread Index | Old Index