On 3/6/17 10:58 AM, Ian Lepore wrote: > On Mon, 2017-03-06 at 10:32 -0800, Rodney W. Grimes wrote: >> [ Charset ISO-8859-1 unsupported, converting... ] >>> >>> On Sun, 2017-03-05 at 19:12 -0800, Bryan Drewery wrote: >>>> >>>> On 3/5/17 3:41 PM, Warner Losh wrote: >>>>> >>>>> >>>>> On Sun, Mar 5, 2017 at 2:16 PM, Bryan Drewery <bdrewery@freebsd >>>>> .org >>>>>> >>>>>> wrote: >>>>>> >>>>>> Author: bdrewery >>>>>> Date: Sun Mar??5 21:16:50 2017 >>>>>> New Revision: 314709 >>>>>> URL: https://svnweb.freebsd.org/changeset/base/314709 >>>>>> >>>>>> Log: >>>>>> ? Fix bootstrapping mtree after r313404 for older systems. >>>>>> >>>>>> ? r313404 made libnetbsd require sha384.h from libmd.??Libmd >>>>>> added it in >>>>>> ? r292782.??Update BOOTSTRAPPING to account for this. >>>>>> >>>>>> ? Reported by:??bde >>>>>> ? Reviewed by:??ngie >>>>>> >>>>>> Modified: >>>>>> ? head/Makefile.inc1 >>>>>> >>>>>> Modified: head/Makefile.inc1 >>>>>> ============================================================= >>>>>> ==== >>>>>> ============= >>>>>> --- head/Makefile.inc1??Sun Mar??5 19:56:20 >>>>>> 2017????????(r314708) >>>>>> +++ head/Makefile.inc1??Sun Mar??5 21:16:50 >>>>>> 2017????????(r314709) >>>>>> @@ -1618,10 +1618,12 @@ ${_bt}-usr.bin/m4: ${_bt}- >>>>>> lib/libopenbsd >>>>>> ?${_bt}-usr.bin/lex: ${_bt}-usr.bin/m4 >>>>>> ?.endif >>>>>> >>>>>> -.if ${BOOTSTRAPPING} < 1000026 >>>>>> -_nmtree=???????lib/libnetbsd \ >>>>> I've been trying to document the bootstrapping stuff inline >>>>> like >>>>> >>>>> # r313404 made libnetbsd require libmd >>>> Definitely.??I forgot about that.??I think my change is >>>> incomplete >>>> and >>>> need to chase down a 2nd failure report.??I'll add the comment >>>> once >>>> that >>>> is figured out. >>>> >>> I tracked this down to the fact that the prototype >>> >>> ? char * MD5FileChunk(const char *, char *, off_t, off_t); >>> >>> does not exist in /usr/include/sys/md5.h on older systems. ?I don't >>> see >>> any straightforward way to declare that a header file from the >>> /usr/include hierarchy is a bootstrap item that needs a newer >>> version >>> from the source tree being compiled. ?It looks like such a header >>> would >>> have to go into the obj/.../tmp/legacy/usr/include to get used in >>> the >>> boostrap compile, I just don't see how you get a file installed >>> there >>> early enough in bootstrap. >> One way around this is to use the old concept of /usr/include >> symlinks >> into the src tree, not sure if you can still do that or not, but >> something like >> (cd /usr/src/include; make install SHARED=symlinks) >> >> A bootstrapping regresssion test I use to run was to rm -r >> /usr/include/* >> before a buildworld run, that would find these issues so they could >> be fixed before they become forgotten. >> > > Making my live 10-stable system's /usr/include have symlinks into a 11- > or 12- source tree is just not an option in any way. The first > question would be "which source tree" because I have like a dozen of > them, not a single one of them rooted at /usr/src (which is an empty > dir). > > This can't be the first time in 30+ years that system header files had > to participate in the process of bootstrapping early build tools, but I > don't see any machinery in Makefile.inc1 for dealing with it. > > -- Ian >
We use some special hacks in some places. Such as most of the elftoolchain build. It just symlinks the minimal headers it needs into its .OBJDIR and uses -I${.OBJDIR} to pick them up. This is done rather than the legacy method so that we don't pollute all of the bootstrapping with these headers; we really want the system headers for all of bootstrapping where possible since we are building *current native system tools*. libmd is already violating this by including some source directories directly, but they should be harmless since they are really just prototypes for the libmd that is being built. > CFLAGS+= -I${.CURDIR} -I${SRCTOP}/sys/crypto/sha2 > CFLAGS+= -I${SRCTOP}/sys/crypto/skein In the case of the current bootstrap failure, it's probably more than just this 1 function that is causing problems, but what I'm suggesting is at https://people.freebsd.org/~bdrewery/patches/libmd-sys-md5.h.patch -- Regards, Bryan Drewery
signature.asc
Description: OpenPGP digital signature