svn commit: r268877 - head/share/mk

Ian Lepore ian at FreeBSD.org
Sat Jul 19 22:45:05 UTC 2014


On Sat, 2014-07-19 at 15:19 -0700, Adrian Chadd wrote:
> On 19 July 2014 14:23, Ian Lepore <ian at freebsd.org> wrote:
> > On Sat, 2014-07-19 at 14:26 +0000, Dag-Erling Smørgrav wrote:
> >> Author: des
> >> Date: Sat Jul 19 14:26:04 2014
> >> New Revision: 268877
> >> URL: http://svnweb.freebsd.org/changeset/base/268877
> >>
> >> Log:
> >>   Use -o (output to file) instead of -t (print to stdout) and a redirect.
> >>
> >>   MFC after:  1 week
> >>
> >> Modified:
> >>   head/share/mk/bsd.dep.mk
> >>
> >> Modified: head/share/mk/bsd.dep.mk
> >> ==============================================================================
> >> --- head/share/mk/bsd.dep.mk  Sat Jul 19 14:10:31 2014        (r268876)
> >> +++ head/share/mk/bsd.dep.mk  Sat Jul 19 14:26:04 2014        (r268877)
> >> @@ -82,7 +82,7 @@ ${_S:R}.o: ${_S}
> >>  .for _LSRC in ${SRCS:M*.l:N*/*}
> >>  .for _LC in ${_LSRC:R}.c
> >>  ${_LC}: ${_LSRC}
> >> -     ${LEX} -t ${LFLAGS} ${.ALLSRC} > ${.TARGET}
> >> +     ${LEX} ${LFLAGS} -o ${.TARGET} ${.ALLSRC}
> >>  .if !exists(${.OBJDIR}/${DEPENDFILE})
> >>  ${_LC:R}.o: ${_LC}
> >>  .endif
> >>
> >
> > This change breaks the ability to bootstrap from versions prior to 10.0
> > because the older lex requires "-ofilename" rather than "-o filename".
> > Even more annoying, it's not possible to fix it by building the new lex
> > earlier in bootstrap because the new lex requires a newer m4 be built
> > first, and building the new m4 requires running this rule which doesn't
> > work with the old lex.  Grrrr.
> >
> > It seems like the path of least resistance would be to remove the space
> > between -o and ${TARGET}, which I'll leave for you if you agree, so that
> > you can MFC them together when the time comes.
> 
> Hm, why not build lex as a bootstrap tool then, or is this too early
> in the process?
> 
> 
> -a
> 
> 

Lex is a bootstrap tool and so is m4 and they're interdependant:  Lex
invokes m4 and pipes data through it, and it does so using command args
that don't exist in old versions of m4, so the new m4 has to exist
before the new lex will work.  But building m4 requires lex, so it has
to be possible to build m4 with the old lex before you can use the new
lex.

-- Ian




More information about the svn-src-all mailing list