Bug #4055 Can't build server with ndb because of bug in automake-1.5
Submitted: 8 Jun 2004 11:12 Modified: 10 Jun 2004 13:28
Reporter: Kent Boortz Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Compiling Severity:S2 (Serious)
Version:4.1 snap Jun 8 2004 OS:Linux (Linux, FreeBSD)
Assigned to: Tomas Ulin CPU Architecture:Any

[8 Jun 2004 11:12] Kent Boortz
Description:
I can't compile ndb at the moment. There is a bug in automake version
1.5, stated in the manual as the required version, that makes it fail
if AM_LDFLAGS is set in Makefile.am. The additions that break the
build are in the files

  ndb/src/cw/cpcd/Makefile.am
  ndb/src/kernel/blocks/backup/restore/Makefile.am
  ndb/src/mgmclient/Makefile.am
  ndb/src/mgmsrv/Makefile.am
  ndb/tools/Makefile.am

The check in comment for the changed code is "added configurable
ldflags".  Automake 1.5 is the version to use according to

  http://dev.mysql.com/doc/mysql/en/Installing_source_tree.html

It isn't operating system dependent, it is the same problem on

  Red Hat Linux 7.3 2.96-113
  FreeBSD 5.1-RELEASE-p10

A result code of 1 from running automake will stop the build if built
using "BUILD/compile-pentium-max".

How to repeat:
% uname -a
Linux intranet 2.4.25 #2 SMP Thu Feb 19 03:14:50 CET 2004 i686 unknown
% date
Tue Jun  8 10:28:14 CEST 2004
% mkdir -p tmp
% bk clone bk-internal.mysql.com:/home/bk/mysql-4.1 tmp/mysql-4.1
% cd tmp/mysql-4.1
% aclocal-1.5 ; echo $?
0
% autoheader-2.53 ; echo $?
WARNING: Using auxiliary files such as `acconfig.h', `config.h.bot'
WARNING: and `config.h.top', to define templates for `config.h.in'
WARNING: is deprecated and discouraged.

WARNING: Using the third argument of `AC_DEFINE' and
WARNING: `AC_DEFINE_UNQUOTED' allows to define a template without
WARNING: `acconfig.h':

WARNING:   AC_DEFINE([NEED_MAIN], 1,
WARNING:             [Define if a function `main' is needed.])

WARNING: More sophisticated templates can also be produced, see the
WARNING: documentation.
configure.in:8: warning: do not use m4_patsubst: use patsubst or m4_bpatsubst
configure.in:3000: warning: do not use m4_regexp: use regexp or m4_bregexp
autoheader-2.53: `config.h.in' is created
0
% autoconf-2.53; echo $?
0
% automake-1.5; echo $?
ndb/src/cw/cpcd/Makefile.am:11: invalid unused variable name: `AM_LDFLAGS'
ndb/src/kernel/blocks/backup/restore/Makefile.am:12: invalid unused variable name: `AM_LDFLAGS'
ndb/src/mgmclient/Makefile.am:18: invalid unused variable name: `AM_LDFLAGS'
ndb/src/mgmsrv/Makefile.am:27: invalid unused variable name: `AM_LDFLAGS'
ndb/tools/Makefile.am:26: invalid unused variable name: `AM_LDFLAGS'
1

Suggested fix:
I don't know automake but there should be other ways than assigning
to AM_LDFLAGS to pass linker flags from configure to Makefile.

Or the build system could be updated to use automake 1.7 or newer 
(if not already the case) and the documentation could be changed 
to reflect that.

Note that having "automake-1.5" in a PATH can mean any 1.5 version, the number
indicate the API version, not the revision. There are ways to specify what
version is needed to build, see

  http://www.gnu.org/software/automake/manual/html_mono/automake.html#API%20versioning
[10 Jun 2004 13:28] Tomas Ulin
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at
    http://www.mysql.com/doc/en/Installing_source_tree.html