bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Build error with binutils 2.18: requires makeinfo but shouldn't


From: Daniel Jacobowitz
Subject: Re: Build error with binutils 2.18: requires makeinfo but shouldn't
Date: Sat, 21 Jun 2008 11:59:45 -0400
User-agent: Mutt/1.5.17 (2008-05-11)

On Tue, Jun 17, 2008 at 10:39:57PM -0400, Paul Smith wrote:
> The first problem is that the bfd/elf.c file is much newer (like, 3
> weeks newer) than most of the rest of the bfd directory, and in
> particular much newer than the bfd/doc/elf.texi file.  If the
> distribution was created as it should be, from a pristine checkout of
> the CVS tree, this wouldn't be the case since the bfd/doc/elf.texi file
> would be constructed from bfd/elf.c with the "chew" utility, and thus
> the .texi would be newer, so make would not try to rebuild elf.texi and
> then would not decide it needed makeinfo to rebuild bfd.info.  All I can
> surmise is that the distributed package was built from a checked out
> workspace that had already been used for other builds before; in that
> case the move-if-changed script would not have updated the
> bfd/doc/elf.texi file if the changes to elf.c didn't result in updates
> to elf.texi.

The release branch has the generated files in it.  This is how
binutils releases have traditionally been managed.  It's the snapshots
before the final release that cause this problem.

The most practical solution is to touch the generated files during
tarball building, or be sure to remove them before starting the
release process, even though we check them in again afterwards.
src-release can be enhanced.

> elf.texi: chew.c $(srcdir)/../elf.c $(srcdir)/doc.str
>         $(MAKE) $(MKDOC)
>         ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../elf.c >elf.tmp
>         $(SHELL) $(srcdir)/../../move-if-change elf.tmp elf.texi
> 
> Although this rule SEEMS to do things correctly, using $(srcdir) etc.,
> it falls down at the last step.  In that step we pass elf.tmp and
> elf.texi to move-if-change, but that's not correct because if we are
> building outside the source tree, "elf.texi" does not exist!  That file
> lives in the $(srcdir).  Because it does not exist, move-if-change
> always moves it, of course, and thus it is newer than bfd.info and thus
> we always need makeinfo to build binutils.
> 
> I think this code needs to be smarter, and first make a copy of the
> $(srcdir) version of elf.texi preserving timestamps, then do the
> move-if-change.  It may be necessary to discuss this with the folks on
> the autoconf lists, to be sure the correct behavior is preserved.

To the best of my knowledge there is no portable way to do this.  If
someone else wants to work on it...

-- 
Daniel Jacobowitz
CodeSourcery




reply via email to

[Prev in Thread] Current Thread [Next in Thread]