Bug #11538 mysql compile fails with certain ndb options
Submitted: 23 Jun 2005 23:33 Modified: 18 Aug 2005 21:08
Reporter: Kevin Benton (Candidate Quality Contributor) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S1 (Critical)
Version:4.1.11, 4.1.12 OS:Solaris (Solaris 8, Redhat 9)
Assigned to: Stewart Smith CPU Architecture:Any

[23 Jun 2005 23:33] Kevin Benton
Description:
Compiling MySQL (with the options listed below) blows up.  This has not been fixed in 4.1.12, contrary to bug 10002.  This prevents users from being able to use/run MySQL.  I'd like to see the source installs become just as reliable as the packaged distributions if we compile it with the same options listed in the build instructions for that binary distribution.  If I only compile in the options in the script below up to and but including not those after --with-ndbcluster

How to repeat:
#!/bin/bash

doit() {
  echo "---" >> $BUILD_LOG
  echo "---" >> $BUILD_LOG
  echo "---" >> $BUILD_LOG
  echo "--- $* ---" >> $BUILD_LOG
  echo "---" >> $BUILD_LOG
  echo "---" >> $BUILD_LOG
  echo "---" >> $BUILD_LOG
  $* 2>&1 | cat >>$BUILD_LOG
  if [ $? -ne 0 ]
  then
    echo "********************************************************************"
    echo "Critical Error Occurred at or above this point.  Exiting!"
    echo "********************************************************************"
    sleep 2
    kill $tailpid
    exit 1
  fi
}

###############################################################################

export BUILD_LOG=MYBUILD.log
export PATH="/mypath/bin:$PATH"
rm -f $BUILD_LOG
touch $BUILD_LOG
tail -f $BUILD_LOG &
export tailpid=$!
echo "Tailing $BUILD_LOG for you.  Will kill tail process on exit: $tailpid"
export CC="gcc"
export CFLAGS="-O3 -fno-omit-frame-pointer"
export CXX="gcc"
export LDFLAGS="-R/m/lib -L/tool/pandora/lib"
doit date
if [ -f Makefile ]
then
  make distclean 2>/dev/null >/dev/null
fi
if [ -f config.cache ]
then
  doit rm -f config.cache
fi

doit ./configure                                                  \
     --prefix=/bugzilla                                           \
     --with-gnu-ld                                                \
     --enable-local-infile                                        \
     --with-mysqld-user=kbenton                                   \
     --with-zlib-dir=/bugzilla/                                   \
     --without-debug                                              \
     --with-mysqlfs                                               \
     --with-vio                                                   \
     --with-extra-charsets=all                                    \
     --with-big-tables                                            \
     --with-isam                                                  \
     --with-innodb                                                \
     --enable-thread-safe-client                                  \
     --with-embedded-server                                       \
     --with-embedded-privilege-control                            \
     --with-raid                                                  \
     --with-openssl=/usr/bin                                      \
     --with-openssl-includes=/usr/include/openssl                 \
     --with-openssl-libs=/lib                                     \
     --with-example-storage-engine                                \
     --with-archive-storage-engine                                \
     --with-csv-storage-engine                                    \
     --with-ndbcluster                                            \
     --with-ndb-test                                              \
     --with-ndb-docs                                              \
     --with-ndb-port                                              \
     --with-ndb-port-base                                         \
     --with-ndb-ccflags

doit make clean

doit make

doit date

kill $tailpid
[24 Jun 2005 18:03] Kevin Benton
May also be related to bug 9938
[24 Jun 2005 18:10] Kevin Benton
FYI all - I should have changed the following...

export LDFLAGS="-R/m/lib -L/tool/pandora/lib"

to drop the -L...  It's not required to reproduce the issue.
[25 Jun 2005 15:30] Jorge del Conde
Testing with the following configure line:

./configure                                                  \
     --prefix=/bugzilla                                           \
     --with-gnu-ld                                                \
     --enable-local-infile                                        \
     --with-mysqld-user=kbenton                                   \
     --without-debug                                              \
     --with-vio                                                   \
     --with-extra-charsets=all                                    \
     --with-big-tables                                            \
     --with-isam                                                  \
     --with-innodb                                                \
     --enable-thread-safe-client                                  \
     --with-embedded-server                                       \
     --with-embedded-privilege-control                            \
     --with-raid                                                  \
     --with-example-storage-engine                                \
     --with-archive-storage-engine                                \
     --with-csv-storage-engine                                    \
     --with-ndbcluster                                            \
     --with-ndb-test                                              \
     --with-ndb-docs                                              \
     --with-ndb-port                                              \
     --with-ndb-port-base                                         \
     --with-ndb-ccflags

The difference between the above and the original one are the following lines:

--with-zlib-dir=/bugzilla/                                   \
--with-openssl=/usr/bin                                      \
--with-openssl-includes=/usr/include/openssl                 \
--with-openssl-libs=/lib                                     \
--with-mysqlfs                                               \

If I can't reproduce this bug with my current configure line, I'll fix my OrBIT, Zlib & OpenSSL installations
[25 Jun 2005 15:32] Jorge del Conde
then mv -f ".deps/NdbTCP.Tpo" ".deps/NdbTCP.Plo"; else rm -f ".deps/NdbTCP.Tpo"; exit 1; fi
 gcc -DHAVE_CONFIG_H -DNDEBUG -I. -I. -I../../../.. -I. -I../../../../include -I../../../../ndb/include -I../../../../ndb/include/util -I../../../../ndb/include/portlib -I../../../../ndb/include/logger -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -DUSE_MYSYS_NEW -DDEFINE_CXA_PURE_VIRTUAL yes -MT NdbTCP.lo -MD -MP -MF .deps/NdbTCP.Tpo -c NdbTCP.cpp  -fPIC -DPIC -o .libs/NdbTCP.o
gcc: cannot specify -o with -c or -S and multiple compilations
make[5]: *** [NdbTCP.lo] Error 1
make[5]: Leaving directory `/home/jorge/mysql-4.1.12/ndb/src/common/portlib'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/home/jorge/mysql-4.1.12/ndb/src/common'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/jorge/mysql-4.1.12/ndb/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/jorge/mysql-4.1.12/ndb'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/jorge/mysql-4.1.12'
make: *** [all] Error 2
[jorge@linux mysql-4.1.12]$
[25 Jun 2005 15:33] Jorge del Conde
I used Fedora Core 2, & 4.1.12 to test this bug.
[25 Jul 2005 6:57] Graham Gower
$ ./configure --help |  grep ndb-ccflags
  --with-ndb-ccflags    Extra CC options for ndb compile

Correct me if I'm wrong, but isn't this for adding extra compile options?
e.g. ./configure --with-ndb-ccflags="-L/path/foo -I/path/bar -O17"

Specifying just --with-ndb-ccflags probably sets the config variable to "yes".
Hence the "yes" here (third line from bottom):

gcc -DHAVE_CONFIG_H -DNDEBUG -I. -I. -I../../../.. -I. -I../../../../include
-I../../../../ndb/include -I../../../../ndb/include/util
-I../../../../ndb/include/portlib -I../../../../ndb/include/logger -O3
-DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -DUSE_MYSYS_NEW
-DDEFINE_CXA_PURE_VIRTUAL yes -MT NdbTCP.lo -MD -MP -MF .deps/NdbTCP.Tpo -c
NdbTCP.cpp  -fPIC -DPIC -o .libs/NdbTCP.o
gcc: cannot specify -o with -c or -S and multiple compilations

gcc should actually tell you that "yes" isn't a file, but it's dumb...
[3 Aug 2005 7:55] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/internals/27840
[18 Aug 2005 14:27] Stewart Smith
Pushed to 4.1.15.
[18 Aug 2005 14:34] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/internals/28458
[18 Aug 2005 21:08] Mike Hillyer
Documented in 4.1.15 changelog:

<listitem><para>MySQL failed to compile when <option>--with-ndb-ccflags</option> was specified. (Bug #11538)</para></listitem>