summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgi Kodinov <joro@sun.com>2009-03-13 13:13:55 +0200
committerGeorgi Kodinov <joro@sun.com>2009-03-13 13:13:55 +0200
commit3e3c5155e8ff9033ef0e3bf79385eb3ceae21b16 (patch)
treeed6dc07f0686b55158be1af2703e1a0527acf553
parentc6bf2e33fd7ca07249f3e1ed7ad7aee76c7112a9 (diff)
downloadmariadb-git-mysql-5.1.33.tar.gz
Bug #43614: make distcheck failure (ndb/Makefile is made, but not subdirs of ndb)mysql-5.1.33clone-5.1.33-build
There are some recursive targets that automake generates which reference DIST_SUBDIRS. It's critical, then, for such subdirs to exist even if they won't be built as part of SUBDIRS. During a VPATH build, it is the configure script which creates the subdirs (when it processes the AC_CONFIG_FILES() for each subdir's Makefile). If autoconf doesn't create a subdir's Makefile, then the recursive make will fail when it is unable to cd into that subdir. This isn't a problem in non-VPATH builds, because the subdirs are all present in the source tarball. So the problem only shows up during 'make distcheck', which does a VPATH build. The fix is to look, when configure is being created by autoconf, for any plugin subdirectories. These are the dynamic subdirectories which need to be handled specially. It's enough to tell autoconf to generate a Makefile for any Makefile.am found in the plugin directory - all plugin subdirectories using automake (i.e., listed in the plugin's DIST_SUBDIRS) will have a Makefile.am. This is done by calling 'find'. This means that 'find' must be in the PATH on the host that is running autoconf. 'find' is NOT needed when calling configure, so it is not an additional dependency for the user. Finally, ha_ndbcluster.m4 had called AC_CONFIG_FILES() on all those subdir Makefiles, but only when the plugin was actually being built. So it didn't work in the case that NDB was not being built. All of those Makefiles have to be removed from this static list, since the plugin machinery is now adding them automatically. autoconf fails if a file is duplicated in AC_CONFIG_FILES().
-rw-r--r--config/ac-macros/ha_ndbcluster.m440
-rw-r--r--config/ac-macros/plugins.m417
2 files changed, 20 insertions, 37 deletions
diff --git a/config/ac-macros/ha_ndbcluster.m4 b/config/ac-macros/ha_ndbcluster.m4
index 5ee136f2266..3718b64f688 100644
--- a/config/ac-macros/ha_ndbcluster.m4
+++ b/config/ac-macros/ha_ndbcluster.m4
@@ -330,41 +330,11 @@ AC_DEFUN([MYSQL_SETUP_NDBCLUSTER], [
AC_SUBST([NDB_SIZEOF_LONG])
AC_SUBST([NDB_SIZEOF_LONG_LONG])
- AC_CONFIG_FILES(storage/ndb/include/Makefile dnl
- storage/ndb/src/Makefile storage/ndb/src/common/Makefile dnl
- storage/ndb/docs/Makefile dnl
- storage/ndb/tools/Makefile dnl
- storage/ndb/src/common/debugger/Makefile dnl
- storage/ndb/src/common/debugger/signaldata/Makefile dnl
- storage/ndb/src/common/portlib/Makefile dnl
- storage/ndb/src/common/util/Makefile dnl
- storage/ndb/src/common/logger/Makefile dnl
- storage/ndb/src/common/transporter/Makefile dnl
- storage/ndb/src/common/mgmcommon/Makefile dnl
- storage/ndb/src/kernel/Makefile dnl
- storage/ndb/src/kernel/error/Makefile dnl
- storage/ndb/src/kernel/blocks/Makefile dnl
- storage/ndb/src/kernel/blocks/dbdict/Makefile dnl
- storage/ndb/src/kernel/blocks/dbdih/Makefile dnl
- storage/ndb/src/kernel/blocks/dblqh/Makefile dnl
- storage/ndb/src/kernel/blocks/dbtup/Makefile dnl
- storage/ndb/src/kernel/blocks/backup/Makefile dnl
- storage/ndb/src/kernel/vm/Makefile dnl
- storage/ndb/src/mgmapi/Makefile dnl
- storage/ndb/src/ndbapi/Makefile dnl
- storage/ndb/src/mgmsrv/Makefile dnl
- storage/ndb/src/mgmclient/Makefile dnl
- storage/ndb/src/cw/Makefile dnl
- storage/ndb/src/cw/cpcd/Makefile dnl
- storage/ndb/test/Makefile dnl
- storage/ndb/test/src/Makefile dnl
- storage/ndb/test/ndbapi/Makefile dnl
- storage/ndb/test/ndbapi/bank/Makefile dnl
- storage/ndb/test/tools/Makefile dnl
- storage/ndb/test/run-test/Makefile dnl
- storage/ndb/include/ndb_version.h storage/ndb/include/ndb_global.h dnl
- storage/ndb/include/ndb_types.h dnl
- )
+ AC_CONFIG_FILES([
+ storage/ndb/include/ndb_version.h
+ storage/ndb/include/ndb_global.h
+ storage/ndb/include/ndb_types.h
+ ])
])
AC_SUBST(TEST_NDBCLUSTER)
diff --git a/config/ac-macros/plugins.m4 b/config/ac-macros/plugins.m4
index e1da6fd11f5..5d15afeda99 100644
--- a/config/ac-macros/plugins.m4
+++ b/config/ac-macros/plugins.m4
@@ -477,10 +477,23 @@ dnl Although this is "pretty", it breaks libmysqld build
# Even if we don't build a plugin, we bundle its source into the dist
# file. So its Makefile (and Makefiles for any subdirs) must be
# generated for 'make dist' to work.
- m4_syscmd(test -f "$6/configure")
+ m4_syscmd([test -f "]$6[/configure"])
ifelse(m4_sysval, 0,
[AC_CONFIG_SUBDIRS($6)],
- [AC_CONFIG_FILES($6/Makefile)]
+ [
+ # autoconf doesn't provide an automatic way to configure DIST_SUBDIRS of
+ # a subdir; for our purposes, it's enough to just check for existing
+ # Makefile.am files and add them in here
+dnl
+dnl Warning, don't try to quote the m4_esyscmd() macro, it doesn't
+dnl work. Quoting here is tricky.
+dnl
+dnl The $FIND or $SED variable can be set by the user when calling autoconf itself
+dnl to if they need to pass a specific path. This is *NOT* used when calling
+dnl running configure!
+dnl
+ AC_CONFIG_FILES(m4_esyscmd([${FIND-find} "]$6[" -name Makefile.am -print | ${SED-sed} 's,\.am$,,']))
+ ]
)
ifelse(