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().
Modify plugins.m4 configuration framework so that plugins which are
not built still get added to the source distribution during make dist.
This came up now because we can only build ibmdb2i on i5/OS, and we
can't bootstrap our source dist on that platform. The solution is to
specify DIST_SUBDIRS containing all plugins, separate from SUBDIRS
which contains the plugins which are actually built.
This ibmdb2i code is from the ibmdb2i-ga3-src.zip file, with a patch
to plug.in to disable the plugin if the PASE environment isn't available.
"Dynamic plugins fail to load on FreeBSD"
ELF executables need to be linked using the -export-dynamic option to
ld(1) for symbols defined in the executable to become visible to dlsym().
Also, do not build plugins on an all-static build.
5.1-related fixes
libmysqld/Makefile.am fixed to recompile and link ha_*.cc files that
keep dependance on THD structure.
Minor fixes to make tests working.
Problem is that some files moved to storage/*/ still are dependent
on sql/ code (usually use members of THD structure)
that can get different being compiled with another #define-s
Code added to recompile these for the embedded server
for push in 5.1 (I will inform Trudy).
Storage engines and plugins can now have unit tests to test their components; such
test must be an executable C/C++ program which name ends with '-t' and which is
obeys the mytap protocol, it must be stored in the storage engine's or plugin's
source directory (storage/<engine> or plugin/<plugin>) or any subdirectories of
this.
The top-level Makefile target "test-unit" will run all unit tests: it will scan
the engines' and plugins' directories, recursively, and execute all executable
files which name ends with '-t'."