Bug #73490 mysql-connector-cpp fails on mac os 10 update 5
Submitted: 6 Aug 2014 20:54 Modified: 7 Aug 2014 13:00
Reporter: Eduardo Hering Email Updates:
Status: Not a Bug Impact on me:
None 
Category:Connector / C++ Severity:S2 (Serious)
Version:1.1.4 OS:MacOS
Assigned to: CPU Architecture:Any

[6 Aug 2014 20:54] Eduardo Hering
Description:
$ cmake -D MYSQL_CONFIG_EXECUTABLE=/opt/local/lib/mysql56/bin/mysql_config -D MYSQL_INCLUDE_DIR=/opt/local/include/mysql56/ -D MYSQL_LIB=/opt/local/lib/mysql56/ -DMYSQLCPPCONN_BUILD_EXAMPLES:BOOL=0 .

CMake Warning (dev) in CMakeLists.txt:
  Syntax Warning in cmake code at

    /Users/enhering/tmp/mysql-connector-c++-1.1.4/CMakeLists.txt:61:24

  Argument not separated from preceding token by whitespace.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) in CMakeLists.txt:
  Syntax Warning in cmake code at

    /Users/enhering/tmp/mysql-connector-c++-1.1.4/CMakeLists.txt:61:43

  Argument not separated from preceding token by whitespace.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Environment compile flags:   
-- Environment link flags: 
-- Boost version: 1.55.0
-- BOOST_INCLUDE_DIRS=/opt/local/include
-- mysql_config was found /opt/local/lib/mysql56/bin/mysql_config
-- ENV{MYSQL_DIR} = 
-- MySQL Include dir: /opt/local/include/mysql56
-- MySQL Library    : /opt/local/lib/mysql56;z
-- MySQL Library dir: /opt/local/lib/mysql56/mysql
-- MySQL CXXFLAGS: -I/opt/local/include/mysql56/mysql -pipe -Os  -stdlib=libc++  -Os -g -fno-strict-aliasing
-- MySQL Link flags: 
-- MySQL Version: 5.6.19
-- MySQL Include dir: /opt/local/include/mysql56
-- MySQL Library dir: /opt/local/lib/mysql56/mysql
-- MySQL CXXFLAGS: -I/opt/local/include/mysql56/mysql -pipe -Os  -stdlib=libc++  -Os -g -fno-strict-aliasing
-- MySQL Link flags: 
-- Installation path is: /usr/local   (overwrite with -DCMAKE_INSTALL_PREFIX=/your/path)
-- BOOST_INCLUDE_DIRS=/opt/local/include
-- Using static libmysql binding
-- DT_RPATH will not be set
ar: /opt/local/lib/mysql56: Inappropriate file type or format
-- Configuring driver
-- Configuring examples
-- Configuring test cases
-- Configuring tests framework lib
-- Configuring C/J junit tests port
-- MySQL dynamic load test library: MYSQLCPPCONN_DYNLOAD_MYSQL_LIB-NOTFOUND
-- Configuring unit tests
-- Configuring unit tests - examples
-- Configuring unit tests - connection
-- Configuring unit tests - databasemetadata
-- Configuring unit tests - resultsetmetadata
-- Configuring unit tests - resultset
-- Configuring unit tests - savepoint
-- Configuring unit tests - preparedstatement
-- Configuring unit tests - parametermetadata
-- Configuring unit tests - art_resultset
-- Configuring unit tests - statement
-- Configuring unit tests - uri
-- Configuring performance test - statement
-- Configuring bugs test cases - unsorted
-- Configuring unit tests - group template_bug
-- Configuring done
CMake Warning (dev) in driver/CMakeLists.txt:
  Policy CMP0022 is not set: INTERFACE_LINK_LIBRARIES defines the link
  interface.  Run "cmake --help-policy CMP0022" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  Target "mysqlcppconn" has an INTERFACE_LINK_LIBRARIES property which
  differs from its LINK_INTERFACE_LIBRARIES properties.

  INTERFACE_LINK_LIBRARIES:

    /opt/local/lib/mysql56;z

  LINK_INTERFACE_LIBRARIES:

    

This warning is for project developers.  Use -Wno-dev to suppress it.

WARNING: Target "mysqlcppconn" requests linking to directory "/opt/local/lib/mysql56".  Targets may link only to libraries.  CMake is dropping the item.
WARNING: Target "mysqlcppconn-static" requests linking to directory "/opt/local/lib/mysql56".  Targets may link only to libraries.  CMake is dropping the item.
CMake Warning (dev):
  Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake
  --help-policy CMP0042" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  MACOSX_RPATH is not specified for the following targets:

   mysqlcppconn

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /Users/enhering/tmp/mysql-connector-c++-1.1.4

$ make
[  0%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/mysql_art_resultset.cpp.o

...

[ 13%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/mysql_warning.cpp.o
[ 13%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/mysql_uri.cpp.o
/Users/enhering/tmp/mysql-connector-c++-1.1.4/driver/mysql_uri.cpp:62:10: warning: enumeration value
      'PROTOCOL_COUNT' not handled in switch [-Wswitch]
        switch (Protocol())
                ^
1 warning generated.
[ 14%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/nativeapi/mysql_client_api.cpp.o
[ 15%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/nativeapi/library_loader.cpp.o
[ 16%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/nativeapi/mysql_native_driver_wrapper.cpp.o
[ 17%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/nativeapi/mysql_native_connection_wrapper.cpp.o
[ 18%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/nativeapi/mysql_native_statement_wrapper.cpp.o
[ 18%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/nativeapi/mysql_native_resultset_wrapper.cpp.o
Linking CXX shared library libmysqlcppconn.dylib
Undefined symbols for architecture x86_64:
  "_mysql_affected_rows", referenced from:
      sql::mysql::NativeAPI::LibmysqlStaticProxy::affected_rows(st_mysql*) in mysql_client_api.cpp.o
  "_mysql_autocommit", referenced from:
      sql::mysql::NativeAPI::LibmysqlStaticProxy::autocommit(st_mysql*, char) in mysql_client_api.cpp.o
  "_mysql_close", referenced from:
      sql::mysql::NativeAPI::LibmysqlStaticProxy::close(st_mysql*) in mysql_client_api.cpp.o
 
...

  "_mysql_use_result", referenced from:
      sql::mysql::NativeAPI::LibmysqlStaticProxy::use_result(st_mysql*) in mysql_client_api.cpp.o
  "_mysql_warning_count", referenced from:
      sql::mysql::NativeAPI::LibmysqlStaticProxy::warning_count(st_mysql*) in mysql_client_api.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [driver/libmysqlcppconn.7.1.1.4.dylib] Error 1
make[1]: *** [driver/CMakeFiles/mysqlcppconn.dir/all] Error 2
make: *** [all] Error 2
enhering:mysql-connector-c++-1.1.4 enhering$ 

How to repeat:
Look above.

Suggested fix:
There seems to be a missing link.
[7 Aug 2014 13:00] Eduardo Hering
Sorry for the bug opening. These make flags fixed that problem.

cmake -D MYSQL_CONFIG_EXECUTABLE=/opt/local/lib/mysql56/bin/mysql_config -D MYSQL_INCLUDE_DIR=/opt/local/include/mysql56/mysql -D MYSQL_LIB=/opt/local/lib/mysql56/mysql/libmysqlclient.a  .