From owner-cvs-all Tue Mar 26 14:22:18 2002 Delivered-To: cvs-all@freebsd.org Received: from alcatraz.iptelecom.net.ua (alcatraz.iptelecom.net.ua [212.9.224.15]) by hub.freebsd.org (Postfix) with ESMTP id A2FF337B404; Tue, 26 Mar 2002 14:22:00 -0800 (PST) Received: from ipcard.iptcom.net (ipcard.iptcom.net [212.9.224.5]) by alcatraz.iptelecom.net.ua (8.9.3/8.9.3) with ESMTP id AAA67972; Wed, 27 Mar 2002 00:21:56 +0200 (EET) (envelope-from sobomax@FreeBSD.org) Received: from h170.229.dialup.iptcom.net (h170.229.dialup.iptcom.net [212.9.229.170]) by ipcard.iptcom.net (8.9.3/8.9.3) with ESMTP id AAA63129; Wed, 27 Mar 2002 00:21:51 +0200 (EET) (envelope-from sobomax@FreeBSD.org) Subject: Re: cvs commit: ports/Mk bsd.port.mk From: Maxim Sobolev To: Maxim Sobolev Cc: Akinori MUSHA , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org In-Reply-To: <3CA0C925.BB1D183E@FreeBSD.org> References: <200203250848.g2P8mlf77991@freefall.freebsd.org> <86d6xrgnm2.wl@archon.local.idaemons.org> <3CA0C925.BB1D183E@FreeBSD.org> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-zjqtqNwSEYfhfeIRIRrQ" X-Mailer: Ximian Evolution 1.0.3 Date: 27 Mar 2002 00:21:31 +0200 Message-Id: <1017181296.3416.12.camel@notebook> Mime-Version: 1.0 Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG --=-zjqtqNwSEYfhfeIRIRrQ Content-Type: multipart/mixed; boundary="=-XKT3wbbEJ/A8YUN1LeQP" --=-XKT3wbbEJ/A8YUN1LeQP Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Tue, 2002-03-26 at 21:16, Maxim Sobolev wrote: > Akinori MUSHA wrote: > >=20 > > At Mon, 25 Mar 2002 00:48:47 -0800 (PST), > > sobomax wrote: > > > sobomax 2002/03/25 00:48:47 PST > > > > > > Modified files: > > > Mk bsd.port.mk > > > Log: > > > - Significantly reduce overhead associated with bsd.port.mk by repl= acing .USE > > > macro, which was invoking separate make(1) process for each of th= e main > > > targets, with explicit make(1) targets and specifying the depende= ncies on > > > those targets in normal Makefile way. This gives up to 4x speedup= . For the > > > ports relying on the old functionality (i.e. each main target in = a separate > > > make(1) process) provide a USE_SUBMAKE knob, which provides old b= ehaviour; > > > > > > - speed-up dependency registration process by the factor of two, wh= ich > > > could be a great win especially for things like GNOME and KDE wit= h very long > > > dependency chains; > > > > > > - clean-up internal structure of the file, so that it is easier to = understand > > > and extend it when necessary. > >=20 > > While the performance increase is really great, I found a problem > > which violates POLA where you can no longer make multiple targets in > > one invocation of make(1). For example, `make clean build' does not > > work as expected, and something like `make reinstall package clean' > > seems to fail sometimes, although I don't know if it depends on the > > port's dependencies or on the state of the ports' working directories > > (cookie files). > >=20 > > So, unless this is a trivial bug you just missed which can be fixed > > shortly, I think you'd better back the change out for the moment > > pending investigation and solution because 5.0-DP1 is coming soon and > > we don't have enough time to make sure we get all the ports and > > scripts happy. >=20 > Thank you for the information. I'll look into the problem later today > and if there is no trivial fix then tomorrow I'll backout my change > temporarly until the proper sulution is worked out. Hmm, difficult one. make(1) really isn't intended to be used like that - it lacks some features necessary for making "cookie" idea easy to implement without spawning child make processes. However, I worked out a patch, which should close the issue in question. Please test it and let me know if it works for you, because I want to commit it tomorrow. Thank you! -Maxim --=-XKT3wbbEJ/A8YUN1LeQP Content-Disposition: attachment; filename=bsd.port.mk.fix Content-Type: text/plain; name=bsd.port.mk.fix; charset=KOI8-R Content-Transfer-Encoding: quoted-printable --- bsd.port.mk 2002/03/26 20:30:26 1.13 +++ bsd.port.mk 2002/03/26 22:00:34 @@ -2524,8 +2524,12 @@ ${${target:U}_COOKIE}: ${_${target:U}_SEQ} @${TOUCH} ${TOUCH_FLAGS} ${.TARGET} .else -${${target:U}_COOKIE}: - ${DO_NADA} +${${target:U}_COOKIE}:: + @if [ -e ${.TARGET} ]; then \ + ${DO_NADA}; \ + else \ + cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} ${.TARGET}; \ + fi .endif =20 .endfor --=-XKT3wbbEJ/A8YUN1LeQP-- --=-zjqtqNwSEYfhfeIRIRrQ Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org iD8DBQA8oPRroNu5t4iCBa8RAkF0AJ9ZPuW5gqkUJ0axHuik0K3nNbL1HACfbTX/ vwLXpG25Z4uCGa+/n7oIRC4= =Tb3O -----END PGP SIGNATURE----- --=-zjqtqNwSEYfhfeIRIRrQ-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message