Subject: bug#10791: aclocal fails if /usr/share/aclocal does not exist

From: Stefano Lattarini <[email-masked]>
Date: Wed, 22 Feb 2012 09:26:25 +0100

On 02/22/2012 12:32 AM, Tim Retout wrote:
> Hi Stefano!
> 
> On 21 February 2012 22:35, Stefano Lattarini
> <[email-masked]> wrote:
>> On 02/11/2012 08:19 PM, Tim Retout wrote:
>>> Since automake 1.11.2, aclocal no longer succeeds if the system acdir
>>> does not exist.  This causes Debian's 'make' package (and possibly
>>> others?) to FTBFS under cowbuilder, because it calls autoreconf when
>>> /usr/share/aclocal is not present.
>>>
>> But the automake build system creates /usr/share/aclocal at "make install"
>> time...  So, how comes that this "cowbuilder" provides an aclocal program
>> without an /usr/share/aclocal directory?
> 
> Well, /usr/share/aclocal-1.11 exists.
>
Yes, but that's the "versioned acdir" a.k.a. "automake acdir" (where the
.m4 files defining automake-provided m4 macros like AM_INIT_AUTOMAKE are
installed), *not* the "system acdir" (where third-party system-wide .m4
files are expected to be installed).

The main difference among these two directories, installation-wise, is
that the versioned acdir is created with actual contents from the start,
while the system acdir is created empty, and possibly filled later by
installation third-party packages, like, say, pkg-config or gettext:

  $ dpkg -L pkg-config | grep '\.m4$'
  /usr/share/aclocal/pkg.m4

  $ dpkg -L gettext | grep '\.m4$' | head -2
  /usr/share/aclocal/size_max.m4
  /usr/share/aclocal/codeset.m4

> But /usr/share/aclocal does not, because there are no third-party
> m4 files required at the time that GNU Make was being compiled.
>
Weird; the directory is created unconditionally by automake's
"make install".  Might it be the fault of cowbuilder that it somehow
removes empty directories when creating its chroot environment?

> Cowbuilder is a minimal chroot environment designed to ensure clean
> builds - it is very common for packages to be built in this type of
> environment, and it worked all the way up to and including automake
> 1.11.1.
> 
> Should automake installations create an empty /usr/share/aclocal
> directory?
>
They do (otherwise aclocal would be broken out-of-the box):

  $ cd  ~/src/am
  $ ./configure --prefix=`pwd`/i && make install
  ...
  $ ls -l i/share
  total 24
  drwxr-xr-x 2 stefano stefano 4096 Feb 22 09:22 aclocal
  drwxr-xr-x 2 stefano stefano 4096 Feb 22 09:22 aclocal-1.11a
  drwxr-xr-x 4 stefano stefano 4096 Feb 22 09:22 automake-1.11a
  ...

> That might be all that's needed to fix this.  I notice that
> m4/Makefile.am has a relatively new comment about creating
> $(system_acdir)...
>
But that comments says that it is automake's "make install" that
should create it ;-)

> the Debian packaging probably hasn't been updated to reflect this.
> 
> So, I think I've answered my own question - we can fix this in the
> packaging.  :)  I don't *think* multiple automake versions on the same
> system owning /usr/share/aclocal will be a problem...
>
It shouldn't -- /usr/share/aclocal is meant to be shared

> Kind regards,

Thanks,
  Stefano