Bug #52281 MySQL Connector/C++: "make install/fast" fails if static library is not built
Submitted: 22 Mar 2010 18:35 Modified: 2 Feb 2015 16:18
Reporter: Hanno Meyer-Thurow Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / C++ Severity:S3 (Non-critical)
Version:bazaar rev.814, 817 OS:Linux
Assigned to: Assigned Account CPU Architecture:Any

[22 Mar 2010 18:35] Hanno Meyer-Thurow
Description:
There are targets to build dynamic or static library. If you just build the dynamic library, then 'make install' will fail!

How to repeat:
# make mysqlcppconn
...
# make install
Install the project...
-- Install configuration: "Gentoo"
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/build_config.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/config.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/connection.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/datatype.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/driver.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/exception.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/metadata.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/parameter_metadata.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/prepared_statement.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/resultset.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/resultset_metadata.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/statement.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/sqlstring.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/include/cppconn/warning.h
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/lib/libmysqlcppconn.so.4.1.1.0
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/lib/libmysqlcppconn.so.4
-- Installing: /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/image/usr/lib/libmysqlcppconn.so
CMake Error at driver/cmake_install.cmake:56 (FILE):
  file INSTALL cannot find
  "/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/work/mysql-connector-c++-1.1.0~r814/driver/libmysqlcppconn-static.a".
Call Stack (most recent call first):
  cmake_install.cmake:46 (INCLUDE)

Suggested fix:
Please make the static library optional.
[23 Mar 2010 7:41] Sveta Smirnova
Thank you for the report.

Please provide all CMAKE flags you used.
[23 Mar 2010 11:18] Hanno Meyer-Thurow
That would be:

cmake -C /mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/temp/gentoo_common_config.cmake -DCMAKE_INSTALL_PREFIX=/usr -DMYSQLCPPCONN_TRACE_ENABLE:BOOL=0 -DMYSQLCPPCONN_BUILD_EXAMPLES:BOOL=0 MYSQLCPPCONN_GCOV_ENABLE:BOOL=0 -DMYSQLCPPCONN_ICU_ENABLE:BOOL=0 -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE=/mnt/data/tmp/portage/dev-db/mysql-connector-c++-1.1.0_pre814/temp/gentoo_rules.cmake  .

The content of gentoo_rules.cmake:
SET (CMAKE_C_COMPILER /usr/bin/x86_64-pc-linux-gnu-gcc CACHE FILEPATH "C compiler" FORCE)
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES>  -DNDEBUG <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE)
SET (CMAKE_CXX_COMPILER /usr/bin/x86_64-pc-linux-gnu-g++ CACHE FILEPATH "C++ compiler" FORCE)
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES>  -DNDEBUG <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
[23 Mar 2010 11:57] Valeriy Kravchuk
I can not repeat this with current sources from bzr (revno: 817):

openxs@ubuntu:/home2/openxs/bzr/connector-cpp-trunk$ make mysqlcppconn
[  5%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/mysql_art_resultset.cpp.o
...
[100%] Building CXX object driver/CMakeFiles/mysqlcppconn.dir/nativeapi/library_loader.cpp.o
Linking CXX shared library libmysqlcppconn.so
[100%] Built target mysqlcppconn

openxs@ubuntu:/home2/openxs/bzr/connector-cpp-trunk$ sudo make install
[sudo] password for openxs: 
[ 17%] Built target mysqlcppconn
[ 18%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_art_resultset.cpp.o
[ 19%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_art_rset_metadata.cpp.o
[ 20%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_connection.cpp.o
[ 20%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_debug.cpp.o
[ 21%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_driver.cpp.o
[ 22%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_metadata.cpp.o
[ 23%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_parameter_metadata.cpp.o
[ 24%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_prepared_statement.cpp.o
[ 24%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_ps_resultset.cpp.o
[ 25%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_ps_resultset_metadata.cpp.o
[ 26%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_resultbind.cpp.o
[ 27%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_resultset.cpp.o
[ 28%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_resultset_metadata.cpp.o
[ 28%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_statement.cpp.o
[ 29%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_util.cpp.o
[ 30%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/mysql_warning.cpp.o
[ 31%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/nativeapi/mysql_native_connection_wrapper.cpp.o
[ 32%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/nativeapi/mysql_native_statement_wrapper.cpp.o
[ 32%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/nativeapi/mysql_client_api.cpp.o
/home2/openxs/bzr/connector-cpp-trunk/driver/nativeapi/mysql_client_api.cpp:35: warning: unused parameter ‘name’
[ 33%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/nativeapi/mysql_native_resultset_wrapper.cpp.o
[ 34%] Building CXX object driver/CMakeFiles/mysqlcppconn-static.dir/nativeapi/library_loader.cpp.o
Linking CXX static library libmysqlcppconn-static.a
[ 34%] Built target mysqlcppconn-static
[ 35%] Building CXX object examples/CMakeFiles/connect.dir/connect.cpp.o
Linking CXX executable connect
...
[100%] Built target bug456
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/./README
-- Installing: /usr/local/./COPYING
-- Installing: /usr/local/include/cppconn/build_config.h
-- Installing: /usr/local/include/cppconn/config.h
-- Installing: /usr/local/include/cppconn/connection.h
-- Installing: /usr/local/include/cppconn/datatype.h
-- Installing: /usr/local/include/cppconn/driver.h
-- Installing: /usr/local/include/cppconn/exception.h
-- Installing: /usr/local/include/cppconn/metadata.h
-- Installing: /usr/local/include/cppconn/parameter_metadata.h
-- Installing: /usr/local/include/cppconn/prepared_statement.h
-- Installing: /usr/local/include/cppconn/resultset.h
-- Installing: /usr/local/include/cppconn/resultset_metadata.h
-- Installing: /usr/local/include/cppconn/statement.h
-- Installing: /usr/local/include/cppconn/sqlstring.h
-- Installing: /usr/local/include/cppconn/warning.h
-- Installing: /usr/local/lib/libmysqlcppconn.so.4.1.1.0
-- Installing: /usr/local/lib/libmysqlcppconn.so.4
-- Installing: /usr/local/lib/libmysqlcppconn.so
-- Installing: /usr/local/lib/libmysqlcppconn-static.a
-- Installing: /usr/local/include/mysql_connection.h
-- Installing: /usr/local/include/mysql_driver.h
openxs@ubuntu:/home2/openxs/bzr/connector-cpp-trunk$ bzr log | more
------------------------------------------------------------
revno: 817
committer: Ulf Wendel <nixnutz@ulflinux>
branch nick: trunk
timestamp: Wed 2010-03-10 16:21:31 +0100
message:
  Oh what fun it is to work with legal
...
[23 Mar 2010 12:28] Hanno Meyer-Thurow
o, yes, I used 'make install/fast' because 'make install' builds the static library what should not be.
[23 Mar 2010 12:38] Hanno Meyer-Thurow
It would be cool to have alternative install targets. Like:

# make install-lib
# make install-static-lib

# make install

Because on Gentoo, one can set a flag to either build or not build the static library for the process.

For the build stage there are already two targets for the dynamic and static library but not for the install stage.
[23 Mar 2010 12:42] Valeriy Kravchuk
With "make install/fast" it is easily repeatable. Thank you for the clarification and solutions suggested.
[25 Aug 2010 12:12] Ulf Wendel
Andrey, what do you think: sounds like a reasonable request to me. Can you take it?
[19 Jan 2015 13:12] Hemant Dangi
patch

Attachment: bug_52281.diff (application/octet-stream, text), 1.90 KiB.

[19 Jan 2015 13:19] Hemant Dangi
To build minimal static and dynamic library use cmake option ENABLE_BUILD_DYNAMIC and ENABLE_BUILD_STATIC.

> cmake -DENABLE_BUILD_DYNAMIC=1 -DENABLE_BUILD_STATIC=1 .
> make mysqlcppconn
> make mysqlcppconn-static
> make install/fast
[21 Jan 2015 14:49] Hemant Dangi
Committed as rev#1023.
[21 Jan 2015 14:50] Hemant Dangi
Posted by developer:
 
Committed as rev#1023.
[2 Feb 2015 16:18] Paul DuBois
Noted in 1.1.6 changelog.

For Connector/C++ builds from source, make install failed if only the
static library had been built without the dynamic library.