Re: svn commit: r339946 - in head: . share/mk

2018-11-05 Thread Bryan Drewery
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.inc1Wed Oct 31 10:30:19 2018(r339945)
> +++ head/Makefile.inc1Wed 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 @@ :
>  
>  .include 
>  
> +.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 
>  .endif
> +.endif   # defined(_NO_INCLUDE_COMPILERMK)
>  .endif   # !target()
> 


-- 
Regards,
Bryan Drewery



signature.asc
Description: OpenPGP digital signature


svn commit: r339946 - in head: . share/mk

2018-10-31 Thread Alex Richardson
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
  
  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 @@ :
 
 .include 
 
+.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 
 .endif
+.endif # defined(_NO_INCLUDE_COMPILERMK)
 .endif # !target()
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"