Subject: aclocal installs third-party m4 files in directories specified with absolute paths, even if it is documented not to

From: Stefano Lattarini <[email-masked]>
Date: Fri, 1 Apr 2011 20:32:34 +0200

Reference to thread:
 <http://lists.gnu.org/archive/html/automake-patches/2011-04/msg00001.html>
Reference to parent message:
 <http://lists.gnu.org/archive/html/automake-patches/2011-04/msg00011.html>

On Friday 01 April 2011, Stefano Lattarini wrote:
> On Friday 01 April 2011, Ralf Wildenhues wrote:
> > * Stefano Lattarini wrote on Fri, Apr 01, 2011 at 03:13:19PM CEST:
> > > On Friday 01 April 2011, Ralf Wildenhues wrote:
> > > > Patch 2:
> > > > - Should `--install -I $dir' also create an absolute $dir?
> > > >
> > > I think so.  Why shouldn't it?
> > 
> > Well, I don't understand what a legitimate use case would be, that's
> > why.  You need a relative path anyway for --install to copy files there.
> > aclocal won't install to an absolute first -I directory,
> >
Unfortunately, this is not the case (even if such a behaviour is
documented).  For example, with aclocal 1.11.1:

 $ cd /tmp
 $ mkdir foo.dir
 $ cd foo.dir
 $ echo 'AC_INIT(x,0) AC_PROG_LIBTOOL' > configure.ac
 $ mkdir m4
 $ aclocal --install -I `pwd`/m4
 aclocal: installing `/tmp/foo.dir/m4/libtool.m4' from `/usr/share/aclocal/libtool.m4'
 aclocal: installing `/tmp/foo.dir/m4/ltoptions.m4' from `/usr/share/aclocal/ltoptions.m4'
 aclocal: installing `/tmp/foo.dir/m4/ltsugar.m4' from `/usr/share/aclocal/ltsugar.m4'
 aclocal: installing `/tmp/foo.dir/m4/ltversion.m4' from `/usr/share/aclocal/ltversion.m4'
 aclocal: installing `/tmp/foo.dir/m4/lt~obsolete.m4' from `/usr/share/aclocal/lt~obsolete.m4'
 $ ls -l m4
 total 292
 -rw-r--r-- 1 stefano stefano 260519 Apr  1 20:06 libtool.m4
 -rw-r--r-- 1 stefano stefano  11938 Apr  1 20:06 ltoptions.m4
 -rw-r--r-- 1 stefano stefano   4372 Apr  1 20:06 ltsugar.m4
 -rw-r--r-- 1 stefano stefano    703 Apr  1 20:06 ltversion.m4
 -rw-r--r-- 1 stefano stefano   5707 Apr  1 20:06 lt~obsolete.m4

The bug is present also in maint; see the attached testcase which should
be an exposer.

Regards,
  Stefano