Re: Build is polluted by host build environment.

From: Marcel Moolenaar <xcllnt_at_mac.com>
Date: Sat, 13 Jun 2009 11:10:35 -0700
You need to provide much more details, because use of /use/include  
during the build is deliberate and more importantly required for  
correct cross-building


-- 
Marcel (mobile)

On Jun 13, 2009, at 10:30 AM, Mark Murray <markm_at_FreeBSD.org> wrote:

> Hi folks
>
> The "buildworld" build is polluted by the build environment.
>
> Specifically, headers in /user/include/... are used when I believe  
> they
> should not be. This could easily break cross-builds, and may  
> compromise
> upgrades where /usr/include/... contains some damaging ancient  
> history.
>
> To see this in action, you need to move /usr/include out of the way
> after the build-tools are built, but before the target buid starts for
> real. I AM NOT WORRIED ABOUT BUILD-TOOLS OR BOOTSTRAPPING TOOLS! :-)
>
> This patch achieves the desired result with a dirty hack. NOTE!! You
> will need to move your /usr/include.NOTNOW back to /usr/include in the
> likely event of a failure.
>
> After applying this, do a "make cleandir" then "make buildworld".  
> DON'T
> use the "-j N" option to make.
>
> ------------------------------8<--------------------------------
> Index: Makefile.inc1
> ===================================================================
> --- Makefile.inc1       (revision 194122)
> +++ Makefile.inc1       (working copy)
> _at__at_ -498,6 +501,14 _at__at_
>        cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32IMAKE} $ 
> {.TARGET:S/32$//}
> .endif
>
> +_break_base_dependancies:
> +       mv /usr/include /usr/include.NOTNOW
> +       # Something for libraries also?
> +
> +_fix_base_dependancies:
> +       mv /usr/include.NOTNOW /usr/include
> +       # Something for libraries also?
> +
> WMAKE_TGTS=
> .if !defined(SUBDIR_OVERRIDE)
> WMAKE_TGTS+=   _worldtmp _legacy _bootstrap-tools
> _at__at_ -506,9 +517,11 _at__at_
> .if !defined(SUBDIR_OVERRIDE)
> WMAKE_TGTS+=   _cross-tools
> .endif
> +WMAKE_TGTS+=   _break_base_dependancies
> WMAKE_TGTS+=   _includes _libraries _depend everything
> .if ${TARGET_ARCH} == "amd64" && ${MK_LIB32} != "no"
> WMAKE_TGTS+=   build32
> +WMAKE_TGTS+=   _fix_base_dependancies
> .endif
>
> buildworld: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue
>
> ------------------------------8<--------------------------------
> The first failure that I see is
>
> ===> gnu/usr.bin/cc/cc_tools (depend)
> make: don't know how to make /usr/include/stdarg.h. Stop
> *** Error code 2
>
>
> There are many more if I hack my way past that one.
>
> I believe that the "_includes _libraries _depend everything build32"
> targets should all be in an effective "-nostdinc" environment once the
> "real" build gets underway, with only the ${SRC}/include/... and  
> friends
> being visible to the build by explicit -I$FOO options to the build.
>
> I haven't checked, but libraries may have a similar issue.
>
> Comments?
>
> M
> -- 
> Mark R V Murray
> Cert APS(Open) Dip Phys(Open) BSc Open(Open) BSc(Hons)(Open)
>
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org 
> "
Received on Sat Jun 13 2009 - 16:10:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:49 UTC