svn commit: r314709 - head

Ian Lepore ian at freebsd.org
Mon Mar 6 19:33:23 UTC 2017


On Mon, 2017-03-06 at 11:13 -0800, Bryan Drewery wrote:
> 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 at fre
> > > > > > ebsd
> > > > > > .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
> 
> 

I've got a build underway with that patch and it's far beyond the point
where it was dying (which was almost-immediately before the patch).

-- Ian



More information about the svn-src-all mailing list