[PATCH] DocBook XML toolchain modernization

Corinna Vinschen corinna-cygwin@cygwin.com
Tue Jun 4 11:53:00 GMT 2013

Hi Warren,

On May 23 21:50, Corinna Vinschen wrote:
> On May 23 13:03, Warren Young wrote:
> > On 5/23/2013 08:11, Corinna Vinschen wrote:
> > >On May 23 16:02, Corinna Vinschen wrote:
> > >>For some reason doc/Makefile.in has lost all dependencies
> > 
> > I noted that in the original proposal: one of the things you got
> > from doctool is automatic dependency generation.  I'd put an item on
> > the Wishlist to this effect, saying I needed to replace it.
> > 
> > At your prompting, I now have.  There is a new script called
> > xidepend which generates Makefile.dep, which is included (and
> > cleaned, if asked) by Makefile.in.
> > 
> > It's not perfect.  Because of the time it takes to run the
> > dependency chaser, I've elected to make it dependent on only changes
> > to the top-level XML files.  This means that if you add an XInclude
> > to one of the leaf files, the referenced file won't get added to the
> > dependency list for the top-level file that indirectly depends on it
> > until you remove Makefile.dep, forcing its re-generation.
> That should be sufficient.  We're only adding files pretty seldom
> anyway.

Unfortunately it doesn't work.  I just changed only the new-features.xml
file and `make' claimed "Nothing to be done for `all'".

Inspecting the generated Makefile.dep, I see this:

  /home/corinna/src/cygwin/vanilla/winsup/doc/cygwin-ug-net//home/corinna/src/cygwin/vanilla/winsup/doc/cygwin-ug-net.html: legal.xml overview.xml setup-net.xml using.xml programming.xml
  /home/corinna/src/cygwin/vanilla/winsup/doc/faq//home/corinna/src/cygwin/vanilla/winsup/doc/faq.html: faq-what.xml faq-setup.xml faq-resources.xml faq-using.xml faq-api.xml faq-programming.xml faq-copyright.xml

As you can see, the paths of the make targets are wrong, *and* the
list of dependencies is broken as well.

Running xidepend in the source file results in:

  cygwin-ug-net/cygwin-ug-net.html: legal.xml overview.xml setup-net.xml using.xml programming.xml  ov-ex-win.xml ov-ex-unix.xml highlights.xml new-features.xml  setup-env.xml setup-maxmem.xml setup-locale.xml setup-files.xml  pathnames.xml textbinary.xml filemodes.xml specialnames.xml cygwinenv.xml ntsec.xml cygserver.xml ../utils/utils.xml effectively.xml  gcc.xml gdb.xml dll.xml windres.xml 
  faq/faq.html: faq-what.xml faq-setup.xml faq-resources.xml faq-using.xml faq-api.xml faq-programming.xml faq-copyright.xml 

This looks a lot like you're still testing this with a in-tree build.

Again, as cgf already wrote, we do *NOT* support in-tree builds.  Always
test with a separate build directory, please.

I fixed this now temporarily like this:

- I fixed the generation of the basename in xidepend to take VPATH
  into account.

- I moved the `include Makefile.dep to the end of Makefile.in, otherwise
  the Makefile.dep rules clobber the all rule.

- I dropped the "$(srcdir)" from that include since Makefile.dep is
  created in the build dir.

- I fixed the Makefile.dep build rule to work from any build dir.

- I removed faq.xml as dependency from the Makefile.dep build rule
  since the faq sources are given via $FAQ_SOURCES anyway.

- I added the necessary rule to rebuild Makefile automatically if
  Makefile.in changes.

This works now, but it's unsatisfactory, because we now have three
different ways to implement dependencies:

- cygwin-api deps are generated by tweaking Makefile.in via doctool

- faq deps are generated via setting a variable and referring the
  variable in the build dependency.

- cygwin-ug-net deps are generated via xidepend and create a separate
  Makefile.dep file with a dependency rule.

It would be nice if this could be merged into one unified way to
generate the deps soonish, with the simple requirement that it should
work always, and from a spearate build dir in the first place.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

More information about the Cygwin-patches mailing list