--- Begin Message ---
Subject: |
automake: autoreconf -i fails if macro dir does not exist (it should automatically create new directories) |
Date: |
Wed, 15 Feb 2012 09:58:20 -0500 (EST) |
Problem:
"autoreconf -i" fails if you follow the libtool advice and use put this in
configure.ac:
AC_CONFIG_MACRO_DIR([m4])
and add "-I m4" to ACLOCAL_AMFLAGS in Makefile.am
It will instead report:
aclocal: couldn't open directory `m4': No such file or directory
autoreconf: aclocal failed with exit status: 1
The whole point of "autoreconf -i" is to create "whatever is needed",
and clearly MACRO_DIRs are needed, yet autoreconf fails to do so. Therefore,
this is a bug.
This is *especially* a problem when using the widely-used "git" tool,
because "git" does not store empty directories (only files). The symptom is that
you "git clone" a fresh repository, and then "autoreconf -i" fails. You can
work around this using:
"mkdir m4 ; touch m4/dummy ; git add m4/dummy" or similar, but you shouldn't
need
to work around this at all.
This is already a bug report in Debian:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663
reported against automake 1.11.
Solution:
Please patch aclocal (part of automake) to automatically create these
directories.
A patch has already been created in 2010:
http://permalink.gmane.org/gmane.linux.debian.devel.bugs.general/678260
http://permalink.gmane.org/gmane.comp.sysutils.automake.patches/3859
--- David A. Wheeler
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#10816: [PATCH] aclocal: create local directory where to install m4 files |
Date: |
Sat, 17 Mar 2012 09:46:30 +0100 |
On 03/15/2012 08:57 PM, Stefano Lattarini wrote:
> Fixes automake bug#8168 and bug#10816.
>
> A call like "aclocal -I m4 --install" used to fail if the 'm4'
> directory wasn't pre-existing. This could be particularly
> annoying when running in a checked-out version from a VCS like
> git, which doesn't allow empty directories to be tracked.
>
> * aclocal.in (File::Path): New import.
> (scan_m4_dirs): Don't die if the first directory of type FT_USER
> doesn't exist and the '--install' option was given; that directory
> will be created later in ...
> (install_file): ... here. Change signature: now it takes as second
> argument the destination directory rather than the destination file.
> Crate the destination directory if it doesn't already exist. In
> verbose mode, tell what is being copied where.
> (write_aclocal): Update.
> * NEWS, THANKS: Update.
> * tests/aclocal-install-fail.test: New test.
> * tests/aclocal-install-mkdir.test: Likewise.
> * tests/aclocal-no-install-no-mkdir.test: Likewise.
> * tests/aclocal-verbose-install.test: Likewise.
> * tests/list-of-tests.mk: Add them.
>
> Signed-off-by: Stefano Lattarini <address@hidden>
> ---
>
> I will push this in a couple of days if there is no objection.
> Thanks to David and Javier, and sorry for the awful delay.
>
No objection seen so far, so I've pushed this patch (with minor
adjustments, see commit a75a1a52). I'm also closing the relevant
bug reports.
Regards,
Stefano
--- End Message ---