install: don't create empty dirs when an empty 'foo_PRIMARY' is used
authorStefano Lattarini <stefano.lattarini@gmail.com>
Fri, 16 Mar 2012 22:48:53 +0000 (23:48 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sun, 18 Mar 2012 18:29:45 +0000 (19:29 +0100)
commit368f1c4c295e3cc4c442af986a1cbb0daa16e3ad
tree4522c47291f88f86fd3da5ab289c198b84201ee2
parent6743961843f3d810500aabe20cfe2cb0e9ae5839
install: don't create empty dirs when an empty 'foo_PRIMARY' is used

Fixes automake bug#11030 and bug#10997.

An empty declaration of "foo_PRIMARY" in a Makefile.am used to
cause the generated install rules to create the directory $(foodir)
anyway, even if nothing was to be installed there.

While this could be seen as a convenient way to create a $(foodir)
directory upon "make install" (respecting $(DESTDIR) settings and
such), it also caused problems with conditionals; for example, an
input of:

  if FALSE
  pgkdata_DATA = something
  endif

caused the generated install rules to unconditionally create the
$(pkgdatadir) directory (see automake bug#10997).

Also, a user wanting to create an empty directory upon installation
can easily do so with a custom install hook, as in:

  installdirs-local:
          $(MKDIR_P) $(DESTDIR)$(foodir)
  install-data-hook: installdirs-local

On the other hand, the old behavior of "always create $(foodir),
even if 'foo_PRIMARY' is empty" was harder and more tricky to
override.

Thus, from now on, an empty declaration of "foo_PRIMARY" will not
cause the directory $(foodir) to be created upon "make install"
anymore.

* lib/am/data.am, lib/am/java.am, lib/am/libs.am, lib/am/lisp.am,
lib/am/ltlib.am, lib/am/mans.am, lib/am/progs.am, lib/am/python.am,
lib/am/scripts.am, lib/am/texinfos.am: Adjust install rules to avoid
creating an installation directory if no files are actually to be
installed there.
* tests/instdir-empty.test: Remove, it was testing a semantic
opposite to the one we now want and implement.
* tests/instdir-no-empty.test: New test, check the new semantic.
* tests/instdir-cond.test: Enhance.  Move the still-failing part
of the test ...
* tests/instdir-cond2.test: ... here.
* tests/list-of-tests.mk, tests/Makefile.am (XFAIL_TESTS): Update.
* tests/java3.test: Adjust to avoid spurious failures.
* HACKING, NEWS, THANKS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
20 files changed:
HACKING
NEWS
THANKS
lib/am/data.am
lib/am/java.am
lib/am/libs.am
lib/am/lisp.am
lib/am/ltlib.am
lib/am/mans.am
lib/am/progs.am
lib/am/python.am
lib/am/scripts.am
lib/am/texinfos.am
tests/Makefile.am
tests/installdir.test
tests/instdir-cond.test
tests/instdir-cond2.test [moved from tests/instdir-empty.test with 54% similarity]
tests/instdir-no-empty.test [new file with mode: 0755]
tests/java3.test
tests/list-of-tests.mk