Subject: bug#19964: automake fails if files named “install.sh” and “install-sh” are found in the parent directory

From: Nick Bowler <[email-masked]>
Date: Fri, 27 Feb 2015 16:02:04 -0500

> Assuming project.tar.gz contains the source code of a project using
> the autotools as its build system:
> 
> $ tar xf project.tar.gz
> $ cd project/
> $ touch ../install-sh ../install.sh
> $ autoreconf -vif
> autoreconf: Entering directory `.'
> […]
> BUG.am: error: 'install.sh' is an anachronism; use 'install-sh' instead
> […]
> autoreconf: automake failed with exit status: 1

Full test case:

  % mkdir foo
  % cat >foo/configure.ac <<'EOF'
AC_INIT([test], [0])
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
EOF
  % touch foo/Makefile.am
  % touch install-sh install.sh
  % (cd foo && autoreconf -i)
configure.ac:2: installing '../missing'
BUG.am: error: 'install.sh' is an anachronism; use 'install-sh' instead
autoreconf-2.69: automake failed with exit status: 1

Note how it actually copies the missing script to ".." as well, and NOT
into the package directory.  If we remove just ../install.sh automake
will still copy files into "..", and 'make dist' will fail to include
them in the tarball.

> You probably have reasons to look in .. or ../.. (and I would be
> quite interested to hear them, actually)

I imagine it is for subprojects, so that the scripts are not copied into
every one.  Which unfortunately means changing the automake behaviour
could break this usage...

However, there is a workaround.  If you add AC_CONFIG_AUX_DIR([.]) to
configure.ac, then this will cause Automake to not look in .. or ../..,
and things should work properly.

Cheers,
-- 
Nick Bowler, Elliptic Technologies (http://www.elliptictech.com/)