Bug #37209 Solaris make fails compilation with MySQL 5.1.23-ndb-6.2.15
Submitted: 5 Jun 2008 1:12 Modified: 28 Sep 2010 18:44
Reporter: Sami Lehtimki Email Updates:
Status: Won't fix Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:5.1.23 OS:Solaris
Assigned to: Jonathan Perkin CPU Architecture:Any
Tags: Compilation, make, solaris

[5 Jun 2008 1:12] Sami Lehtimki
Description:
Solaris make can not install MySQL 5.1.23 with NDB version. This was identified with mysql-5.1.23-ndb-6.2.15 source package.

This is clearly a Makefile problem, because re-executing compilation with gmake avoids this problem.

Output of compilation, when error comes:
if gcc -DHAVE_CONFIG_H -I. -I. -I../../include -I../../include -I../../include  -I../../regex  -I../../sql  -I.     -O3    -DHAVE_RWLOCK_T -DUNIV_SOLARIS -MT myrg_rnext_same.o -MD -MP -MF ".deps/myrg_rnext_same.Tpo" -c -o myrg_rnext_same.o myrg_rnext_same.c; \
then mv -f ".deps/myrg_rnext_same.Tpo" ".deps/myrg_rnext_same.Po"; else rm -f ".deps/myrg_rnext_same.Tpo"; exit 1; fi
rm -f libmyisammrg.a
ar cru libmyisammrg.a myrg_open.o myrg_extra.o  myrg_info.o myrg_locking.o myrg_rrnd.o  myrg_update.o myrg_delete.o  myrg_rsame.o myrg_panic.o myrg_close.o  myrg_create.o myrg_static.o  myrg_rkey.o myrg_rfirst.o myrg_rlast.o  myrg_rnext.o myrg_rprev.o myrg_queue.o  myrg_write.o myrg_range.o  ha_myisammrg.o myrg_rnext_same.o
ranlib libmyisammrg.a
Making all in ndb
make: Fatal error in reader: Makefile, line 410: Unexpected end of line seen
Current working directory dir/src/mysql-5.1.23-ndb-6.2.15/storage/ndb
*** Error code 1
The following command caused the error:
failcom='exit 1'; \
for f in x $MAKEFLAGS; do \
  case $f in \
    *=* | --[!k]*);; \
    *k*) failcom='fail=yes';; \
  esac; \
done; \
dot_seen=no; \
target=`echo all-recursive | sed s/-recursive//`; \
list='archive blackhole csv example federated heap innobase myisam myisammrg ndb'; for subdir in $list; do \
  echo "Making $target in $subdir"; \
  if test "$subdir" = "."; then \
    dot_seen=yes; \
    local_target="$target-am"; \
  else \
    local_target="$target"; \
  fi; \
  (cd $subdir && make  $local_target) \
  || eval $failcom; \
done; \
if test "$dot_seen" = "no"; then \
  make  "$target-am" || exit 1; \
fi; test -z "$fail"
make: Fatal error: Command failed for target `all-recursive'
Current working directory /data/local/src/mysql-5.1.23-ndb-6.2.15/storage
*** Error code 1
The following command caused the error:
failcom='exit 1'; \
for f in x $MAKEFLAGS; do \
  case $f in \
    *=* | --[!k]*);; \
    *k*) failcom='fail=yes';; \
  esac; \
done; \
dot_seen=no; \
target=`echo all-recursive | sed s/-recursive//`; \
list='. include Docs   cmd-line-utils sql-common scripts   strings mysys dbug extra regex  libmysql  libmysql_r  client  unittest storage plugin  vio sql man tests  netware libmysqld  mysql-test support-files sql-bench server-tools  win'; for subdir in $list; do \
  echo "Making $target in $subdir"; \
  if test "$subdir" = "."; then \
    dot_seen=yes; \
    local_target="$target-am"; \
  else \
    local_target="$target"; \
  fi; \
  (cd $subdir && make  $local_target) \
  || eval $failcom; \
done; \
if test "$dot_seen" = "no"; then \
  make  "$target-am" || exit 1; \
fi; test -z "$fail"
make: Fatal error: Command failed for target `all-recursive'

How to repeat:

Try to compile MySQL version 5.1.23 (including NDB support) with Solaris make.

Suggested fix:
Avoid problem by using GNU make (with "gmake" command).

Fix should be done in NDB storage engine's Makefile (problem is found at least on line 410).
[5 Jun 2008 22:01] Sveta Smirnova
Thank you for the report.

Verified as described.
[27 Sep 2008 4:52] Hiroaki Kawai
Another suggestion, please automake(you need 1.9.6 installed) again.
$ rm storage/ndb/Makefile.in
$ automake
$ autoconf

Bundled Makefile has extra empty line. Perhaps, Makefile.in was generated long time ago, and it should be regenerated now.
[28 Sep 2010 18:44] Jonathan Perkin
We do not guarantee that all versions of make will be able to build MySQL, thus in the MySQL Manual we specify that you should use GNU make.

MySQL 5.5.5 and higher use CMake which is much better at producing Makefiles which do not require specific GNU make features, and thus you are likely to find that newer releases Just Work anyway.