ports/122120: Support -jN parallel ports building.
David O'Brien
obrien at FreeBSD.org
Wed Mar 26 18:10:02 UTC 2008
>Number: 122120
>Category: ports
>Synopsis: Support -jN parallel ports building.
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Mar 26 18:10:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: David O'Brien
>Release: FreeBSD 8.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD dragon.NUXI.org 8.0-CURRENT FreeBSD 8.0-CURRENT #592: Sat Feb 16 21:08:06 PST 2008 rootk at dragon.NUXI.org:/src/fbsd/sys/i386/compile/DRAGON i386
>Description:
Some large applications in The Ports Collection are known to build
fine in a parallel fashion with -jN. GCC is one example of such a
port.
Below is a rough diff that allows a well tested port to set
'USE_MAKE_J' to cause $MAKE to run with -jN.
(I thought I had filed this in a PR previously, but I cannot
find it searching http://bugs.freebsd.org)
>How-To-Repeat:
$ cd /usr/ports/lang/gcc42 ; make
>Fix:
Index: Mk/bsd.java.mk
===================================================================
RCS file: /home/ncvs/ports/Mk/bsd.java.mk,v
retrieving revision 1.82
diff -u -p -r1.82 bsd.java.mk
--- Mk/bsd.java.mk 28 Oct 2007 15:09:43 -0000 1.82
+++ Mk/bsd.java.mk 3 Nov 2007 14:57:03 -0000
@@ -435,7 +435,7 @@ ALL_TARGET?=
. if !target(do-build)
do-build:
@(cd ${BUILD_WRKSRC}; \
- ${SETENV} ${MAKE_ENV} ${ANT} ${MAKE_ARGS} ${ALL_TARGET})
+ ${SETENV} ${MAKE_ENV} ${ANT} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
. endif
. endif
Index: Mk/bsd.perl.mk
===================================================================
RCS file: /home/ncvs/ports/Mk/bsd.perl.mk,v
retrieving revision 1.7
diff -u -p -r1.7 bsd.perl.mk
--- Mk/bsd.perl.mk 29 Sep 2007 03:46:06 -0000 1.7
+++ Mk/bsd.perl.mk 29 Sep 2007 14:52:42 -0000
@@ -257,7 +257,7 @@ do-configure:
.if defined(PERL_MODBUILD)
.if !target(do-build)
do-build:
- @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PERL5} ${PL_BUILD} ${MAKE_ARGS} ${ALL_TARGET})
+ @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PERL5} ${PL_BUILD} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
.endif # !target(do-build)
.if !defined(USE_GMAKE)
Index: Mk/bsd.port.mk
===================================================================
RCS file: /home/ncvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.591
diff -u -p -r1.591 bsd.port.mk
--- Mk/bsd.port.mk 11 Mar 2008 23:45:04 -0000 1.591
+++ Mk/bsd.port.mk 13 Mar 2008 15:36:10 -0000
@@ -2092,6 +2104,10 @@ CHECKSUM_ALGORITHMS?= md5 sha256
MD5_FILE?= ${MASTERDIR}/distinfo
+.if defined(USE_MAKE_J)
+MAKE_JOBS?= 1
+_MAKE_JOBS= -j${MAKE_JOBS}
+.endif
MAKE_FLAGS?= -f
MAKEFILE?= Makefile
MAKE_ENV+= PREFIX=${PREFIX} \
@@ -3605,9 +3638,9 @@ do-configure:
.if !target(do-build)
do-build:
.if defined(USE_GMAKE)
- @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET})
+ @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
.else
- @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET})
+ @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET})
.endif
.endif
Index: lang/gcc42/Makefile
===================================================================
RCS file: /home/ncvs/ports/lang/gcc42/Makefile,v
retrieving revision 1.335
diff -u -p -r1.335 Makefile
--- lang/gcc42/Makefile 8 Mar 2008 22:34:57 -0000 1.335
+++ lang/gcc42/Makefile 15 Mar 2008 15:33:36 -0000
@@ -28,6 +28,9 @@ LIB_DEPENDS= gmp.7:${PORTSDIR}/math/libg
SUFFIX= 42
LATEST_LINK?= gcc${SUFFIX}${PKGNAMESUFFIX}
NOT_FOR_ARCHS= alpha ia64
+USE_MAKE_J= yes
+MAKE_JOBS!= sysctl -n kern.smp.cpus
+#MAKE_JOBS!= sysctl -n hw.ncpu
# Building libgcj with lang/gcc295 installed is causing a failure about
# "hidden symbol `__eprintf'" in libgcc.a(_eprintf.o).
CONFLICTS= gcc-2.95.*
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list