On 10/31/2018 3:45 AM, Alex Richardson wrote: > Author: arichardson > Date: Wed Oct 31 10:45:28 2018 > New Revision: 339946 > URL: https://svnweb.freebsd.org/changeset/base/339946 > > Log: > Don't run cc --version during cleandir/obj stages >
I haven't had a chance to look at this fully or r339636 but I don't think this change, r339946, is complete. There's far more tree-walks than these named ones that should not be running cc. > This will no work when there is no cc in $PATH (which is the case before the > cross-tools stage once we no longer inherit $PATH in $WMAKE). > The variables set by bsd.compiler.mk/bsd.linker.mk are not needed in these > stages so this avoids a little bit of makefile parsing. > > Reviewed By: emaste > Approved By: jhb (mentor) > Differential Revision: https://reviews.freebsd.org/D16814 > > Modified: > head/Makefile.inc1 > head/share/mk/bsd.compiler.mk > > Modified: head/Makefile.inc1 > ============================================================================== > --- head/Makefile.inc1 Wed Oct 31 10:30:19 2018 (r339945) > +++ head/Makefile.inc1 Wed Oct 31 10:45:28 2018 (r339946) > @@ -950,7 +950,7 @@ _worldtmp: .PHONY > .else > ${_+_}@if [ -e "${WORLDTMP}" ]; then \ > echo ">>> Deleting stale files in build tree..."; \ > - cd ${.CURDIR}; ${WMAKE} -DBATCH_DELETE_OLD_FILES \ > + cd ${.CURDIR}; ${WMAKE} -DBATCH_DELETE_OLD_FILES > _NO_INCLUDE_COMPILERMK=t \ > delete-old delete-old-libs >/dev/null; \ > fi > rm -rf ${WORLDTMP}/legacy/usr/include > @@ -1003,19 +1003,21 @@ _cleanobj: > @echo "--------------------------------------------------------------" > @echo ">>> stage 2.1: cleaning up the object tree" > @echo "--------------------------------------------------------------" > - ${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR} > + # Avoid including bsd.compiler.mk in clean and obj with > _NO_INCLUDE_COMPILERMK > + # since the restricted $PATH might not contain a valid cc binary > + ${_+_}cd ${.CURDIR}; ${WMAKE} _NO_INCLUDE_COMPILERMK=t ${CLEANDIR} > .if defined(LIBCOMPAT) > - ${_+_}cd ${.CURDIR}; ${LIBCOMPATWMAKE} -f Makefile.inc1 ${CLEANDIR} > + ${_+_}cd ${.CURDIR}; ${LIBCOMPATWMAKE} _NO_INCLUDE_COMPILERMK=t -f > Makefile.inc1 ${CLEANDIR} > .endif > .else > - ${_+_}cd ${.CURDIR}; ${WMAKE} _cleanobj_fast_depend_hack > + ${_+_}cd ${.CURDIR}; ${WMAKE} _NO_INCLUDE_COMPILERMK=t > _cleanobj_fast_depend_hack > .endif # !defined(NO_CLEAN) > _obj: > @echo > @echo "--------------------------------------------------------------" > @echo ">>> stage 2.2: rebuilding the object tree" > @echo "--------------------------------------------------------------" > - ${_+_}cd ${.CURDIR}; ${WMAKE} obj > + ${_+_}cd ${.CURDIR}; ${WMAKE} _NO_INCLUDE_COMPILERMK=t obj > _build-tools: > @echo > @echo "--------------------------------------------------------------" > > Modified: head/share/mk/bsd.compiler.mk > ============================================================================== > --- head/share/mk/bsd.compiler.mk Wed Oct 31 10:30:19 2018 > (r339945) > +++ head/share/mk/bsd.compiler.mk Wed Oct 31 10:45:28 2018 > (r339946) > @@ -33,6 +33,16 @@ __<bsd.compiler.mk>__: > > .include <bsd.opts.mk> > > +.if defined(_NO_INCLUDE_COMPILERMK) > +# If _NO_INCLUDE_COMPILERMK is set we are doing a make obj/cleandir/cleanobj > +# and might not have a valid compiler in $PATH yet. In this case just set the > +# variables that are expected by the other .mk files and return > +COMPILER_TYPE=none > +X_COMPILER_TYPE=none > +COMPILER_VERSION=0 > +X_COMPILER_VERSION=0 > +COMPILER_FEATURES=none > +.else > # command = /usr/local/bin/ccache cc ... > # wrapper = /usr/local/libexec/ccache/cc ... > CCACHE_BUILD_TYPE?= command > @@ -220,4 +230,5 @@ ${var}.${${X_}_cc_hash}:= ${${var}} > .if !defined(_NO_INCLUDE_LINKERMK) > .include <bsd.linker.mk> > .endif > +.endif # defined(_NO_INCLUDE_COMPILERMK) > .endif # !target(__<bsd.compiler.mk>__) > -- Regards, Bryan Drewery
signature.asc
Description: OpenPGP digital signature