Friends -

The CVS pcb I'm playing with can't build from read-only sources.
Let me explain.

Everyone is used to

  tar -xvzf package.tar.gz
  cd package
  sh autogen.sh
  ./configure
  make

Where the autogen.sh step is not normally needed, but I include
it here because my package.tar.gz is really just a CVS snapshot.
A related process, that is supported by configure and based on
the VPATH make feature, is

  tar -xvzf package.tar.gz
  (cd package && sh autogen.sh)
  mkdir package-bin
  cd package-bin
  ../package/configure
  make

This keeps source and binary separate.  And again, if this were
a real pre-autogen'd snapshot, you could drop the "cd package &&
sh autogen.sh" step.  Now let's actually enforce the separation:

  tar -xvzf package.tar.gz
  (cd package && sh autogen.sh)
  chmod -R a-w package
  mkdir package-bin
  cd package-bin
  ./configure
  make

Bang!  The pcb build trips up badly in the doc directory.
The first (but not the only) problem is with this gem of
a Makefile rule:

$(srcdir)/stamp-vti: pcb.texi $(top_srcdir)/configure
        @(dir=.; test -f ./pcb.texi || dir=$(srcdir); \
        set `$(SHELL) $(srcdir)/mdate-sh $$dir/pcb.texi`; \
        echo "@set UPDATED $$1 $$2 $$3"; \
        echo "@set UPDATED-MONTH $$2 $$3"; \
        echo "@set EDITION $(VERSION)"; \
        echo "@set VERSION $(VERSION)") > vti.tmp
        @cmp -s vti.tmp $(srcdir)/version.texi \
          || (echo "Updating $(srcdir)/version.texi"; \
              cp vti.tmp $(srcdir)/version.texi)
        [EMAIL PROTECTED] -f vti.tmp
        @cp $(srcdir)/version.texi $@

Obviously, having $(srcdir)/stamp-vti as a target doesn't fit
the above build strategy.  I'm not sure if the fault is with
the pcb Makefile.am, or (more likely, given the template I find
in /usr/share/automake-1.9/am/texi-vers.am) autoconf-1.9.
But it resisted my efforts to bypass the problems.

Note that while changing permissions may seem artificial, it
is a simple stand-in for other cases where the source tree is
intrinsically immutable -- it could be owned by a different
user, it could reside on CD-ROM, or on an anonymous (and
therefore read-only) NFS mount.  Other motivations come from
cross-builds, where you would like a common source tree, and
independent builds for multiple targets.

The only other Free Software package in which I ran into problems
this way was glibc, many years ago.  All sorts of other software
"just works".

I think this list includes people with deeper understanding
of the whole autoconf/automake/configure flow.  Any ideas?

   - Larry


_______________________________________________
geda-dev mailing list
[email protected]
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev

Reply via email to