* Pav Lucistnik (p...@freebsd.org) wrote:

> > Btw, this change broke build failures. If vendor's make fails,
> > .build_done.xxx._usr_local is still created in work and $? = 0 as if it
> > have succeeded.
> 
> Can you give me a hard example?

Test port consisting of a sole Makefile attached.

I've made two patches for bsd.port.mk.
First one fixes this issue by adding some false's to do-build, second
also improves MAKE_JOBS_* handling, shortening it a bit and exposing
MAKE_JOBS_NUMBER to the ports, so it can be used for other build systems
without having to parse out -j from _MAKE_JOBS (and defaults to 1 if
jobs support is disabled).

Also, [ x != x${BUILD_FAIL_MESSAGE} ] thing seems to be a bit unsafe,
and inconsistent to IGNORE/BROKEN/... vars, in which we don't use
quotes.

---
r...@hades:test# make
===>  Extracting for test-1.0
===>  Patching for test-1.0
===>  Configuring for test-1.0
(echo "all:"; echo "    false") > 
/usr/home/amdmi3/projects/ports/test/work/Makefile
===>  Building for test-1.0
false
*** Error code 1

Stop in /usr/home/amdmi3/projects/ports/test/work.
r...@hades:test# echo $?
0
r...@hades:test# ls work
.build_done.test._usr_local
.configure_done.test._usr_local
.extract_done.test._usr_local
.patch_done.test._usr_local
Makefile
---

-- 
Dmitry Marakasov   .   55B5 0596 FF1E 8D84 5F56  9510 D35A 80DD F9D2 F77D
amd...@amdmi3.ru  ..:  jabber: amd...@jabber.ru    http://www.amdmi3.ru
# New ports collection makefile for:    test
# Date created:         27 Mar 2009
# Whom:                 Dmitry Marakasov <amd...@freebsd.org>
#
# $FreeBSD$
#

PORTNAME=       test
PORTVERSION=    1.0
CATEGORIES=     sysutils
MASTER_SITES=   #none
DISTFILES=      #none

MAINTAINER=     amd...@freebsd.org
COMMENT=        Empty comment

NO_WRKSUBDIR=   yes

do-configure:
        (echo "all:"; echo "    false") > ${WRKSRC}/Makefile

.include <bsd.port.mk>
Index: bsd.port.mk
===================================================================
RCS file: /home/amdmi3/projects/freebsd/FreeBSD.cvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.614
diff -u -r1.614 bsd.port.mk
--- bsd.port.mk	22 Mar 2009 10:28:53 -0000	1.614
+++ bsd.port.mk	27 Mar 2009 00:40:57 -0000
@@ -3693,16 +3693,18 @@
 	@(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}; then \
 		if [ x != x${BUILD_FAIL_MESSAGE} ] ; then \
 			${ECHO_MSG} "===> Compilation failed unexpectedly."; \
-			(${ECHO_CMD} ${BUILD_FAIL_MESSAGE}) | ${FMT} 75 79 ; \
+			${ECHO_CMD} ${BUILD_FAIL_MESSAGE} | ${FMT} 75 79 ; \
 			fi; \
-		fi)
+		fi; \
+		false)
 .else
 	@(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}; then \
 		if [ x != x${BUILD_FAIL_MESSAGE} ] ; then \
 			${ECHO_MSG} "===> Compilation failed unexpectedly."; \
-			(${ECHO_CMD} ${BUILD_FAIL_MESSAGE}) | ${FMT} 75 79 ; \
+			${ECHO_CMD} ${BUILD_FAIL_MESSAGE} | ${FMT} 75 79 ; \
 			fi; \
-		fi)
+		fi; \
+		false)
 .endif
 .endif
 
Index: bsd.port.mk
===================================================================
RCS file: /home/amdmi3/projects/freebsd/FreeBSD.cvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.614
diff -u -r1.614 bsd.port.mk
--- bsd.port.mk 22 Mar 2009 10:28:53 -0000      1.614
+++ bsd.port.mk 27 Mar 2009 01:00:38 -0000
@@ -2177,18 +2177,17 @@
 # Multiple make jobs support
 .if defined(DISABLE_MAKE_JOBS) || defined(MAKE_JOBS_UNSAFE)
 _MAKE_JOBS=            #
-.else
-.if defined(MAKE_JOBS_SAFE) || defined(FORCE_MAKE_JOBS)
-.if defined(MAKE_JOBS_NUMBER)
-_MAKE_JOBS=            -j${MAKE_JOBS_NUMBER}
-.else
-_MAKE_JOBS=            -j`${SYSCTL} -n kern.smp.cpus`
+.elif defined(MAKE_JOBS_SAFE) || defined(FORCE_MAKE_JOBS)
+.if !defined(MAKE_JOBS_NUMBER)
+MAKE_JOBS_NUMBER!=     ${SYSCTL} -n kern.smp.cpus
 .endif
+_MAKE_JOBS=            -j${MAKE_JOBS_NUMBER}
 .if defined(FORCE_MAKE_JOBS)
 BUILD_FAIL_MESSAGE+=   "You have chosen to use multiple make jobs 
(parallelization) for all ports.  This port was not tested for this setting.  
Please remove FORCE_MAKE_JOBS and retry the build before reporting the failure 
to the maintainer."
 .endif
 .endif
-.endif
+
+MAKE_JOBS_NUMBER?=     1
 
 PTHREAD_CFLAGS?=
 PTHREAD_LIBS?=         -pthread
@@ -3693,16 +3692,18 @@
        @(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} 
${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}; then \
                if [ x != x${BUILD_FAIL_MESSAGE} ] ; then \
                        ${ECHO_MSG} "===> Compilation failed unexpectedly."; \
-                       (${ECHO_CMD} ${BUILD_FAIL_MESSAGE}) | ${FMT} 75 79 ; \
+                       ${ECHO_CMD} ${BUILD_FAIL_MESSAGE} | ${FMT} 75 79 ; \
                        fi; \
-               fi)
+               fi; \
+               false)
 .else
        @(cd ${BUILD_WRKSRC}; if ! ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} 
${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS} ${ALL_TARGET}; then \
                if [ x != x${BUILD_FAIL_MESSAGE} ] ; then \
                        ${ECHO_MSG} "===> Compilation failed unexpectedly."; \
-                       (${ECHO_CMD} ${BUILD_FAIL_MESSAGE}) | ${FMT} 75 79 ; \
+                       ${ECHO_CMD} ${BUILD_FAIL_MESSAGE} | ${FMT} 75 79 ; \
                        fi; \
-               fi)
+               fi; \
+               false)
 .endif
 .endif
 
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to