From: Sander Niemeijer <address@hidden>
Date: maa apr 28, 2003 14:11:25 Europe/Amsterdam
To: address@hidden
Subject: automake -a behavior
It seems that when automake is trying to find missing standard files
(such as install-sh and depcomp) by running automake -a it will also
look into parent directories ($(srcdir)/.. and $(srcdir)/../..)
whether these standard files might not already be there (the check
happens on the 'install-sh' file).
The problem is that this can lead to very unexpected results:
1) In my case (that is how I discovered this) I had my development
directory structure set up in such a way that there was a main package
'foo' which was located in dir foo/ with some subdirectories for
source, etc. Inside this directory foo/ I created a directory foo/bar/
for my package 'bar' (a program that uses the 'foo' libraries) but
which was not part of the 'foo' package. The problem in this case is
that when I try to run automake -a -c for the 'bar' package (thus
inside the foo/bar/ dir) it will use the standard files of the 'foo'
package. However when I try to make a distribution of the 'bar'
package the following happens:
- the same standard files that were used from the foo/ dir will now
be generated in the foo/bar/ directory (although the mkinstalldirs and
install-sh scripts that are used to create the bar package are still
the ones from foo/). I guess this is a result of 'make install' trying
to copy the standard files to foo/bar/bar-1.0.0/..
- none of the standard files get included in the distribution for
'bar'.
2) In the previous case the parent directory of the 'bar' package
contained another package called 'foo', but having a 'parent package'
is not necessary to trigger this behavior. Consider the situation
where the parent directory of 'foo' would contain only a 'install-sh'
script (and no other standard files or files belonging to some
package). In that case automake -a -c (run in the foo/ directory)
would copy all needed standard files to the same directory as
'install-sh' is in and again none of the standard files would appear
in the 'foo' distribution!
To me this seems highly unwanted behavior (although I do not know
whether this may be classified as a bug).
I would therefore propose to either:
- remove the searching into parent directories for standard files
(although I admit I don't know what consequences this may have)
- document this parent searching behavior in the documentation of
automake and provide an option to automake (in addition to -a and -c)
that disables the parent dir searching (which, if used with the 'bar'
package in the above example, would copy the standard files into
foo/bar/ and thus properly include them into the 'bar' package.
Regards,
Sander