[Maria-developers] Build fail of MariaDB10 with TokuDB enabled
On the (eventual) road to successfully building MariaDB10 + TokuDB, Building cd src/mariadb bzr log | head ------------------------------------------------------------ revno: 3911 committer: Alexander Barkov <bar@mnogosearch.org> branch nick: maria-10.0 timestamp: Tue 2013-11-26 10:53:21 +0400 message: Fixing malformed data in mysql-test/std_data/Index.xml ------------------------------------------------------------ revno: 3910 committer: Sergey Vojtovich <svoj@mariadb.org> on uname -a Linux dev1 3.7.10-1.16-desktop #1 SMP PREEMPT Fri May 31 20:21:23 UTC 2013 (97c14ba) x86_64 x86_64 x86_64 GNU/Linux lsb_release -ar LSB Version: core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch Distributor ID: openSUSE project Description: openSUSE 12.3 (x86_64) Release: 12.3 Codename: Dartmouth with gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.8/lto-wrapper Target: x86_64-suse-linux Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.8 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --enable-linux-futex --program-suffix=-4.8 --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux Thread model: posix gcc version 4.8.2 20131016 [gcc-4_8-branch revision 203692] (SUSE Linux) cmake --version cmake version 2.8.12.1 applying a needed src patch cd /usr/local/src/mariadb # BUG @ http://www.linuxfromscratch.org/blfs/view/svn/server/mariadb.html sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc after cmake, with gcc c++11 support NOT enabled, mkdir bld cd bld cmake .. \ ... \ -DWITHOUT_TOKUDB=1 build completes successfully, make ... ldd sql/mysqld linux-vdso.so.1 (0x00007fffb9dff000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9031e86000) libaio.so.1 => /lib64/libaio.so.1 (0x00007f9031c84000) libz.so.1 => /lib64/libz.so.1 (0x00007f9031a6e000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f9031832000) libssl.so.1.0.0 => /usr/local/ssl/lib64/libssl.so.1.0.0 (0x00007f90315c6000) libcrypto.so.1.0.0 => /usr/local/ssl/lib64/libcrypto.so.1.0.0 (0x00007f90311da000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f9030fd6000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f9030cce000) libm.so.6 => /lib64/libm.so.6 (0x00007f90309d0000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f90307b9000) libc.so.6 => /lib64/libc.so.6 (0x00007f903040b000) /lib64/ld-linux-x86-64.so.2 (0x00007f90320a2000) repeating, but with TokuDB build enabled, cd bld cmake .. \ ... \ - -DWITHOUT_TOKUDB=1 + -DWITHOUT_TOKUDB=0 build now fails, make ... [ 29%] Built target perfschema Scanning dependencies of target tokuportability_static_conv [ 29%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/huge_page_detection.cc.o [ 29%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/file.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/memory.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/os_malloc.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/portability.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/toku_assert.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/toku_crash.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/toku_fair_rwlock.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/toku_path.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/toku_pthread.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static_conv.dir/toku_time.cc.o Linking CXX static library libtokuportability_static_conv.a [ 30%] Built target tokuportability_static_conv [ 30%] Generating tokuportability_static_depends.cc Scanning dependencies of target tokuportability_static [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability_static.dir/tokuportability_static_depends.cc.o Linking CXX static library libtokuportability_static.a /usr/bin/ar: creating /usr/local/src/mariadb/bld/storage/tokudb/ft-index/portability/libtokuportability_static.a [ 30%] Built target tokuportability_static Scanning dependencies of target tokuportability [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/huge_page_detection.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/file.cc.o [ 30%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/memory.cc.o [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/os_malloc.cc.o [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/portability.cc.o [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/toku_assert.cc.o [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/toku_crash.cc.o [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/toku_fair_rwlock.cc.o [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/toku_path.cc.o [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/toku_pthread.cc.o [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/toku_time.cc.o Linking CXX shared library libtokuportability.so [ 31%] Built target tokuportability Scanning dependencies of target logformat [ 31%] Building CXX object storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/logformat.cc.o Linking CXX executable logformat [ 31%] Built target logformat Scanning dependencies of target generate_log_code [ 31%] Generating log_code.cc, log_print.cc, log_header.h ./logformat: error while loading shared libraries: libtokuportability.so: cannot open shared object file: No such file or directory make[2]: *** [storage/tokudb/ft-index/ft/log_code.cc] Error 127 make[1]: *** [storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/all] Error 2 make: *** [all] Error 2 yes, I'm aware that opensuse is not a currently "supported platform" for TokuDB. If that's a dealbreaker, I'd like to know MariaDB project's position, if any, on getting that support in place. If it's not, I'd like to keep trying to get it working, here. darx
Hi, darx! On Dec 02, darx@sent.com wrote:
On the (eventual) road to successfully building MariaDB10 + TokuDB,
applying a needed src patch
cd /usr/local/src/mariadb # BUG @ http://www.linuxfromscratch.org/blfs/view/svn/server/mariadb.html sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc
I do't know what it is (and couldn't find it on that page), but I suppose it's innodb only, so shouldn't matter here.
repeating, but with TokuDB build enabled,
cd bld cmake .. \ ... \ - -DWITHOUT_TOKUDB=1 + -DWITHOUT_TOKUDB=0
build now fails,
make ... [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/toku_time.cc.o Linking CXX shared library libtokuportability.so [ 31%] Built target tokuportability Scanning dependencies of target logformat [ 31%] Building CXX object storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/logformat.cc.o Linking CXX executable logformat [ 31%] Built target logformat Scanning dependencies of target generate_log_code [ 31%] Generating log_code.cc, log_print.cc, log_header.h ./logformat: error while loading shared libraries: libtokuportability.so: cannot open shared object file: No such file or directory make[2]: *** [storage/tokudb/ft-index/ft/log_code.cc] Error 127 make[1]: *** [storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/all] Error 2 make: *** [all] Error 2
yes, I'm aware that opensuse is not a currently "supported platform" for TokuDB.
If you mean this page: https://mariadb.com/kb/en/how-to-enable-tokudb-in-mariadb/ It only lists platforms where we build tokudb binaries. While we have an opensuse builder, it's openSUSE 11.1, with gcc 4.3.2 and cmake 2.6, so it cannot build TokuDB. That's why openSUSE is not in the list. I don't know of any reason why TokuDB cannot be built on openSUSE, presuming all build requirements are met. And in your case they obviously are.
If it's not, I'd like to keep trying to get it working, here.
Ah, wait a sec. SuSE. Cannot find .so library. This does ring a bell - may be it's not exactly your problem, but take a look at this: https://github.com/Tokutek/ft-index/issues/73 We have it fixed. But perhaps what you see is somehow related? Try to run 'make VERBOSE=1' instead of 'make', there can be a clue there. Or email the output and let me look at it. Regards, Sergei
The problem is that we're trying to run logformat and it can't find libtokuportability.so, even though a few lines up, it says we just build libtokuportability.so. Maybe the loader path is different on suse, can you try looking in the build directory for libtokuportability.so (it's supposed to land in portability/), and can you try running ldd on ft/logformat in the build directory? On Mon, Dec 2, 2013 at 4:00 PM, Sergei Golubchik <serg@mariadb.org> wrote:
Hi, darx!
On Dec 02, darx@sent.com wrote:
On the (eventual) road to successfully building MariaDB10 + TokuDB,
applying a needed src patch
cd /usr/local/src/mariadb # BUG @ http://www.linuxfromscratch.org/blfs/view/svn/server/mariadb.html sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc
I do't know what it is (and couldn't find it on that page), but I suppose it's innodb only, so shouldn't matter here.
repeating, but with TokuDB build enabled,
cd bld cmake .. \ ... \ - -DWITHOUT_TOKUDB=1 + -DWITHOUT_TOKUDB=0
build now fails,
make ... [ 31%] Building CXX object storage/tokudb/ft-index/portability/CMakeFiles/tokuportability.dir/toku_time.cc.o Linking CXX shared library libtokuportability.so [ 31%] Built target tokuportability Scanning dependencies of target logformat [ 31%] Building CXX object storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/logformat.cc.o Linking CXX executable logformat [ 31%] Built target logformat Scanning dependencies of target generate_log_code [ 31%] Generating log_code.cc, log_print.cc, log_header.h ./logformat: error while loading shared libraries: libtokuportability.so: cannot open shared object file: No such file or directory make[2]: *** [storage/tokudb/ft-index/ft/log_code.cc] Error 127 make[1]: *** [storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/all] Error 2 make: *** [all] Error 2
yes, I'm aware that opensuse is not a currently "supported platform" for TokuDB.
If you mean this page: https://mariadb.com/kb/en/how-to-enable-tokudb-in-mariadb/ It only lists platforms where we build tokudb binaries. While we have an opensuse builder, it's openSUSE 11.1, with gcc 4.3.2 and cmake 2.6, so it cannot build TokuDB. That's why openSUSE is not in the list.
I don't know of any reason why TokuDB cannot be built on openSUSE, presuming all build requirements are met. And in your case they obviously are.
If it's not, I'd like to keep trying to get it working, here.
Ah, wait a sec. SuSE. Cannot find .so library. This does ring a bell - may be it's not exactly your problem, but take a look at this:
https://github.com/Tokutek/ft-index/issues/73
We have it fixed. But perhaps what you see is somehow related?
Try to run 'make VERBOSE=1' instead of 'make', there can be a clue there. Or email the output and let me look at it.
Regards, Sergei
_______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp
-- Cheers, Leif
Hi On Mon, Dec 2, 2013, at 01:00 PM, Sergei Golubchik wrote:
I do't know what it is (and couldn't find it on that page), but I suppose it's innodb only, so shouldn't matter here.
Just following instructions. It's @ " Install MariaDB by running the following commands: sed -i "s@data/test@\${INSTALL_MYSQLTESTDIR}@g" sql/CMakeLists.txt && ==> sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc && "
yes, I'm aware that opensuse is not a currently "supported platform" for TokuDB.
If you mean this page: https://mariadb.com/kb/en/how-to-enable-tokudb-in-mariadb/ It only lists platforms where we build tokudb binaries. While we have an opensuse builder, it's openSUSE 11.1, with gcc 4.3.2 and cmake 2.6, so it cannot build TokuDB. That's why openSUSE is not in the list.
thanks
I don't know of any reason why TokuDB cannot be built on openSUSE, presuming all build requirements are met. And in your case they obviously are.
ok
If it's not, I'd like to keep trying to get it working, here.
Ah, wait a sec. SuSE. Cannot find .so library. This does ring a bell - may be it's not exactly your problem, but take a look at this:
https://github.com/Tokutek/ft-index/issues/73
We have it fixed. But perhaps what you see is somehow related?
/lib "vs" /lib64 still crops up every once in a rare while I'm not doing a "./configure ...", obviously, but my @MariaDB 'cmake' already _does_ include cmake .. \ ... -DINSTALL_LIBDIR=/lib64 \ ... perhaps it's not getting properly captured/passed?
Try to run 'make VERBOSE=1' instead of 'make', there can be a clue there. Or email the output and let me look at it.
make VERBOSE=1 ... ====> http://pastebin.com/Gqj5FP8N
The problem is that we're trying to run logformat and it can't find libtokuportability.so, even though a few lines up, it says we just build libtokuportability.so. Maybe the loader path is different on suse, can you try looking in the build directory for libtokuportability.so (it's supposed to land in portability/), and can you try running ldd on ft/logformat in the build directory?
find . | grep libtokuportability ./storage/tokudb/ft-index/portability/libtokuportability_static.a ./storage/tokudb/ft-index/portability/libtokuportability_static_conv.a ./storage/tokudb/ft-index/portability/libtokuportability.so find . | grep ft/logformat ./storage/tokudb/ft-index/ft/logformat ldd ./storage/tokudb/ft-index/ft/logformat linux-vdso.so.1 (0x00007fffb2bdf000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f506fb65000) libtokuportability.so => not found libdl.so.2 => /lib64/libdl.so.2 (0x00007f506f961000) librt.so.1 => /lib64/librt.so.1 (0x00007f506f759000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f506f451000) libm.so.6 => /lib64/libm.so.6 (0x00007f506f153000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f506ef3c000) libc.so.6 => /lib64/libc.so.6 (0x00007f506eb8e000) /lib64/ld-linux-x86-64.so.2 (0x00007f506fd81000) darx
Can you run objdump -x /path/to/logformat | grep RPATH? For example, I get this: % ldd logformat linux-vdso.so.1 (0x00007fffe03cd000) libtokuportability.so => /home/leif/git/ft-index/opt/portability/libtokuportability.so (0x00007fba00ec1000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fba00ca3000) libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fba00a9f000) librt.so.1 => /usr/lib/librt.so.1 (0x00007fba00897000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fba00593000) libm.so.6 => /usr/lib/libm.so.6 (0x00007fba00290000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fba0007a000) libc.so.6 => /usr/lib/libc.so.6 (0x00007fb9ffccf000) /lib64/ld-linux-x86-64.so.2 (0x00007fba010cd000) % objdump -x logformat | grep RPATH RPATH /home/leif/git/ft-index/opt/portability Maybe RPATH is set differently on suse and our cmake isn't doing it right. On Mon, Dec 2, 2013 at 4:47 PM, <darx@sent.com> wrote:
Hi
On Mon, Dec 2, 2013, at 01:00 PM, Sergei Golubchik wrote:
I do't know what it is (and couldn't find it on that page), but I suppose it's innodb only, so shouldn't matter here.
Just following instructions. It's @
" Install MariaDB by running the following commands:
sed -i "s@data/test@\${INSTALL_MYSQLTESTDIR}@g" sql/CMakeLists.txt && ==> sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc && "
yes, I'm aware that opensuse is not a currently "supported platform" for TokuDB.
If you mean this page: https://mariadb.com/kb/en/how-to-enable-tokudb-in-mariadb/ It only lists platforms where we build tokudb binaries. While we have an opensuse builder, it's openSUSE 11.1, with gcc 4.3.2 and cmake 2.6, so it cannot build TokuDB. That's why openSUSE is not in the list.
thanks
I don't know of any reason why TokuDB cannot be built on openSUSE, presuming all build requirements are met. And in your case they obviously are.
ok
If it's not, I'd like to keep trying to get it working, here.
Ah, wait a sec. SuSE. Cannot find .so library. This does ring a bell - may be it's not exactly your problem, but take a look at this:
https://github.com/Tokutek/ft-index/issues/73
We have it fixed. But perhaps what you see is somehow related?
/lib "vs" /lib64 still crops up every once in a rare while
I'm not doing a "./configure ...", obviously, but my @MariaDB 'cmake' already _does_ include
cmake .. \ ... -DINSTALL_LIBDIR=/lib64 \ ...
perhaps it's not getting properly captured/passed?
Try to run 'make VERBOSE=1' instead of 'make', there can be a clue there. Or email the output and let me look at it.
make VERBOSE=1 ... ====> http://pastebin.com/Gqj5FP8N
The problem is that we're trying to run logformat and it can't find libtokuportability.so, even though a few lines up, it says we just build libtokuportability.so. Maybe the loader path is different on suse, can you try looking in the build directory for libtokuportability.so (it's supposed to land in portability/), and can you try running ldd on ft/logformat in the build directory?
find . | grep libtokuportability ./storage/tokudb/ft-index/portability/libtokuportability_static.a
./storage/tokudb/ft-index/portability/libtokuportability_static_conv.a ./storage/tokudb/ft-index/portability/libtokuportability.so
find . | grep ft/logformat ./storage/tokudb/ft-index/ft/logformat ldd ./storage/tokudb/ft-index/ft/logformat linux-vdso.so.1 (0x00007fffb2bdf000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f506fb65000) libtokuportability.so => not found libdl.so.2 => /lib64/libdl.so.2 (0x00007f506f961000) librt.so.1 => /lib64/librt.so.1 (0x00007f506f759000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f506f451000) libm.so.6 => /lib64/libm.so.6 (0x00007f506f153000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f506ef3c000) libc.so.6 => /lib64/libc.so.6 (0x00007f506eb8e000) /lib64/ld-linux-x86-64.so.2 (0x00007f506fd81000)
darx
-- Cheers, Leif
hi On Mon, Dec 2, 2013, at 01:56 PM, Leif Walsh wrote:
Can you run objdump -x /path/to/logformat | grep RPATH?
cd bld objdump -x ./storage/tokudb/ft-index/ft/logformat | grep RPATH (empty) ??? objdump -x ./storage/tokudb/ft-index/ft/logformat ==> http://pastebin.com/svdneTx9 darx
Given your question, seems there's possibly an rpath issue. Not quite sure what's being done, or why, with rpath + libtokuportability here, but, _this_ may be of some relevance re: RPATH @ opensuse, http://en.opensuse.org/openSUSE:Packaging_checks#Beware_of_Rpath
Well, we aren't doing anything fancy with RPATH in this case, this is just what cmake does to binaries to make it so they can run from the build directory (which we do because logformat generates other source files, and isn't installed itself). You can use VERBOSE=1 as an argument to make to see how logformat is being linked, and look online for reports of problems with cmake and suse. Sent from my iPhone
On Dec 2, 2013, at 20:17, darx@sent.com wrote:
Given your question, seems there's possibly an rpath issue.
Not quite sure what's being done, or why, with rpath + libtokuportability here, but, _this_ may be of some relevance re: RPATH @ opensuse,
http://en.opensuse.org/openSUSE:Packaging_checks#Beware_of_Rpath
On Mon, Dec 2, 2013, at 05:21 PM, Leif Walsh wrote:
look online for reports of problems with cmake and suse.
cmake is used quite reglarly with no issues, here anyway. it is, after all, used for the MariaDB build successfully, when TokuDB is disabled. re: rpath, if it's being used for the build phase to get at locally installed libs, then I should note that I cmake with, cmake ..\ ... -DCMAKE_SKIP_BUILD_RPATH=0 \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=1 \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=1 \ ... these were (still are?) necessary to properly use & run-time link ssl libs external to the default sys paths -- e.g., ssl installed in /usr/local/ssl, so, together, cmake .. -LAH | egrep -i "crypto|ssl|rpath|suffix" -- suffixes <.a;.so> -- OPENSSL_INCLUDE_DIR = /usr/local/ssl/include -- OPENSSL_LIBRARIES = /usr/local/ssl/lib64/libssl.so -- CRYPTO_LIBRARY = /usr/local/ssl/lib64/libcrypto.so -- OPENSSL_MAJOR_VERSION = 1 -- SSL_LIBRARIES = /usr/local/ssl/lib64/libssl.so;/usr/local/ssl/lib64/libcrypto.so;dl CMAKE_SKIP_INSTALL_RPATH:BOOL=NO CMAKE_SKIP_RPATH:BOOL=NO CRYPTO_LIBRARY:FILEPATH=/usr/local/ssl/lib64/libcrypto.so OPENSSL_INCLUDE_DIR:PATH=/usr/local/ssl/include OPENSSL_LIBRARIES:FILEPATH=/usr/local/ssl/lib64/libssl.so OPENSSL_ROOT_DIR:PATH=/usr/local/ssl // path to custom SSL installation WITH_SSL_PATH:PATH=/usr/local/ssl results in mysqld --version mysqld Ver 10.0.7-MariaDB-log for Linux on x86_64 (Source distribution) ldd `which mysqld` `which mysql` | egrep "ssl|crypto|bin/" /usr/local/mariadb/bin/mysqld: libssl.so.1.0.0 => /usr/local/ssl/lib64/libssl.so.1.0.0 (0x00007fd80fea9000) libcrypto.so.1.0.0 => /usr/local/ssl/lib64/libcrypto.so.1.0.0 (0x00007fd80fabd000) /usr/local/mariadb/bin/mysql: libssl.so.1.0.0 => /usr/local/ssl/lib64/libssl.so.1.0.0 (0x00007f2d5e65d000) libcrypto.so.1.0.0 => /usr/local/ssl/lib64/libcrypto.so.1.0.0 (0x00007f2d5e271000) atm, I'm staring suspiciously at that "-DCMAKE_SKIP_BUILD_RPATH=0" ... darx
Yep, CMAKE_SKIP_BUILD_RPATH=0 would cause this exact problem. We should add something to our cmake to warn if that is set to 0. Sent from my iPhone
On Dec 2, 2013, at 20:36, darx@sent.com wrote:
On Mon, Dec 2, 2013, at 05:21 PM, Leif Walsh wrote: look online for reports of problems with cmake and suse.
cmake is used quite reglarly with no issues, here anyway.
it is, after all, used for the MariaDB build successfully, when TokuDB is disabled.
re: rpath, if it's being used for the build phase to get at locally installed libs, then I should note that I cmake with,
cmake ..\ ... -DCMAKE_SKIP_BUILD_RPATH=0 \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=1 \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=1 \ ...
these were (still are?) necessary to properly use & run-time link ssl libs external to the default sys paths -- e.g., ssl installed in /usr/local/ssl,
so, together,
cmake .. -LAH | egrep -i "crypto|ssl|rpath|suffix" -- suffixes <.a;.so> -- OPENSSL_INCLUDE_DIR = /usr/local/ssl/include -- OPENSSL_LIBRARIES = /usr/local/ssl/lib64/libssl.so -- CRYPTO_LIBRARY = /usr/local/ssl/lib64/libcrypto.so -- OPENSSL_MAJOR_VERSION = 1 -- SSL_LIBRARIES = /usr/local/ssl/lib64/libssl.so;/usr/local/ssl/lib64/libcrypto.so;dl CMAKE_SKIP_INSTALL_RPATH:BOOL=NO CMAKE_SKIP_RPATH:BOOL=NO CRYPTO_LIBRARY:FILEPATH=/usr/local/ssl/lib64/libcrypto.so OPENSSL_INCLUDE_DIR:PATH=/usr/local/ssl/include OPENSSL_LIBRARIES:FILEPATH=/usr/local/ssl/lib64/libssl.so OPENSSL_ROOT_DIR:PATH=/usr/local/ssl // path to custom SSL installation WITH_SSL_PATH:PATH=/usr/local/ssl
results in
mysqld --version mysqld Ver 10.0.7-MariaDB-log for Linux on x86_64 (Source distribution) ldd `which mysqld` `which mysql` | egrep "ssl|crypto|bin/" /usr/local/mariadb/bin/mysqld: libssl.so.1.0.0 => /usr/local/ssl/lib64/libssl.so.1.0.0 (0x00007fd80fea9000) libcrypto.so.1.0.0 => /usr/local/ssl/lib64/libcrypto.so.1.0.0 (0x00007fd80fabd000) /usr/local/mariadb/bin/mysql: libssl.so.1.0.0 => /usr/local/ssl/lib64/libssl.so.1.0.0 (0x00007f2d5e65d000) libcrypto.so.1.0.0 => /usr/local/ssl/lib64/libcrypto.so.1.0.0 (0x00007f2d5e271000)
atm, I'm staring suspiciously at that "-DCMAKE_SKIP_BUILD_RPATH=0" ...
darx
testing that premise, rm -rf bld mkdir bld cd bld cmake .. \ ... - -DCMAKE_SKIP_BUILD_RPATH=0 \ + -DCMAKE_SKIP_BUILD_RPATH=1 \ ... -DWITHOUT_TOKUDB=0 make VERBOSE=1 unfortunately still fails, ... [ 31%] Built target tokuportability make -f storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/build.make storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/depend make[2]: Entering directory `/usr/local/src/mariadb/bld' cd /usr/local/src/mariadb/bld && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /usr/local/src/mariadb /usr/local/src/mariadb/storage/tokudb/ft-index/ft /usr/local/src/mariadb/bld /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/DependInfo.cmake --color= Dependee "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/DependInfo.cmake" is newer than depender "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/depend.internal". Dependee "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/depend.internal". Scanning dependencies of target logformat make[2]: Leaving directory `/usr/local/src/mariadb/bld' make -f storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/build.make storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/build make[2]: Entering directory `/usr/local/src/mariadb/bld' /usr/bin/cmake -E cmake_progress_report /usr/local/src/mariadb/bld/CMakeFiles [ 31%] Building CXX object storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/logformat.cc.o cd /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft && /usr/bin/g++-4.8 -DHAVE_CONFIG_H -DTOKUDB_VERSION=\"7.0.4\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_SVID_SOURCE -D_XOPEN_SOURCE=600 -D__LONG_LONG_SUPPORTED -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -std=c++11 -Wall -Werror -Wcast-align -Wshadow -Wmissing-format-attribute -Wpointer-arith -Wmissing-declarations -Wno-missing-noreturn -Wextra -Wno-error=strict-overflow -Wpacked -fno-exceptions -fno-rtti -Wno-error=missing-format-attribute -Wmissing-format-attribute -Wlogical-op -Wtrampolines -Wswitch -Winit-self -Wstrict-null-sentinel -Wno-missing-field-initializers -Wall -felide-constructors -fno-exceptions -fno-rtti -Wall -Wno-unused-parameter -fno-exceptions -fno-rtti -flto -fuse-linker-plugin -O2 -g -DNDEBUG -DDBUG_OFF -DMY_PTHREAD_FASTMUTEX=1 -g -O3 -UNDEBUG -I/usr/local/src/mariadb/bld/storage/tokudb/ft-index/buildheader -I/usr/local/src/mariadb/bld/include -I/usr/local/src/mariadb/bld/storage/tokudb/ft-index/./xz/include -I/usr/local/src/mariadb/storage/tokudb/ft-index/include -I/usr/local/src/mariadb/storage/tokudb/ft-index/toku_include -I/usr/local/src/mariadb/storage/tokudb/ft-index/portability -I/usr/local/src/mariadb/storage/tokudb/ft-index -I/usr/local/src/mariadb/bld/storage/tokudb/ft-index -I/usr/local/src/mariadb/bld/storage/tokudb/ft-index/toku_include -isystem /usr/local/include -I/usr/local/src/mariadb/storage/tokudb/ft-index/ft -o CMakeFiles/logformat.dir/logformat.cc.o -c /usr/local/src/mariadb/storage/tokudb/ft-index/ft/logformat.cc Linking CXX executable logformat cd /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft && /usr/bin/cmake -E cmake_link_script CMakeFiles/logformat.dir/link.txt --verbose=1 /usr/bin/g++-4.8 -std=c++11 -Wall -Werror -Wcast-align -Wshadow -Wmissing-format-attribute -Wpointer-arith -Wmissing-declarations -Wno-missing-noreturn -Wextra -Wno-error=strict-overflow -Wpacked -fno-exceptions -fno-rtti -Wno-error=missing-format-attribute -Wmissing-format-attribute -Wlogical-op -Wtrampolines -Wswitch -Winit-self -Wstrict-null-sentinel -Wno-missing-field-initializers -Wall -felide-constructors -fno-exceptions -fno-rtti -Wall -Wno-unused-parameter -fno-exceptions -fno-rtti -flto -fuse-linker-plugin -O2 -g -DNDEBUG -DDBUG_OFF -DMY_PTHREAD_FASTMUTEX=1 -g -O3 -UNDEBUG -g -fuse-linker-plugin -Wno-error=strict-overflow CMakeFiles/logformat.dir/logformat.cc.o -o logformat -lpthread ../portability/libtokuportability.so -lpthread -ldl -lrt make[2]: Leaving directory `/usr/local/src/mariadb/bld' /usr/bin/cmake -E cmake_progress_report /usr/local/src/mariadb/bld/CMakeFiles [ 31%] Built target logformat make -f storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/build.make storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/depend make[2]: Entering directory `/usr/local/src/mariadb/bld' cd /usr/local/src/mariadb/bld && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /usr/local/src/mariadb /usr/local/src/mariadb/storage/tokudb/ft-index/ft /usr/local/src/mariadb/bld /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/DependInfo.cmake --color= Dependee "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/DependInfo.cmake" is newer than depender "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/depend.internal". Dependee "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/depend.internal". Scanning dependencies of target generate_log_code make[2]: Leaving directory `/usr/local/src/mariadb/bld' make -f storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/build.make storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/build make[2]: Entering directory `/usr/local/src/mariadb/bld' /usr/bin/cmake -E cmake_progress_report /usr/local/src/mariadb/bld/CMakeFiles [ 31%] Generating log_code.cc, log_print.cc, log_header.h cd /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft && ./logformat . ./logformat: error while loading shared libraries: libtokuportability.so: cannot open shared object file: No such file or directory make[2]: *** [storage/tokudb/ft-index/ft/log_code.cc] Error 127 make[2]: Leaving directory `/usr/local/src/mariadb/bld' make[1]: *** [storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/all] Error 2 make[1]: Leaving directory `/usr/local/src/mariadb/bld' make: *** [all] Error 2 checking objdump -x ./storage/tokudb/ft-index/ft/logformat | grep RPATH (still empty) find . | grep libtokuportability ./storage/tokudb/ft-index/portability/libtokuportability_static.a ./storage/tokudb/ft-index/portability/libtokuportability_static_conv.a ./storage/tokudb/ft-index/portability/libtokuportability.so find . | grep ft/logformat ./storage/tokudb/ft-index/ft/logformat ldd ./storage/tokudb/ft-index/ft/logformat linux-vdso.so.1 (0x00007fff5adff000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc4c1c69000) libtokuportability.so => not found libdl.so.2 => /lib64/libdl.so.2 (0x00007fc4c1a65000) librt.so.1 => /lib64/librt.so.1 (0x00007fc4c185d000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fc4c1555000) libm.so.6 => /lib64/libm.so.6 (0x00007fc4c1257000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc4c1040000) libc.so.6 => /lib64/libc.so.6 (0x00007fc4c0c92000) /lib64/ld-linux-x86-64.so.2 (0x00007fc4c1e85000) doesn't appear to have had any effect
Wait, "skip build RPATH off" is a double-negative that I missed earlier. I think if you fool around with cmake's RPATH-related settings you'll be able to find the right combination, I'm not at a computer right now. At the very least, you should be able to leave them all as their defaults and the build should succeed. Sent from my iPhone
On Dec 2, 2013, at 20:56, darx@sent.com wrote:
testing that premise,
rm -rf bld mkdir bld cd bld cmake .. \ ... - -DCMAKE_SKIP_BUILD_RPATH=0 \ + -DCMAKE_SKIP_BUILD_RPATH=1 \ ... -DWITHOUT_TOKUDB=0
make VERBOSE=1
unfortunately still fails,
... [ 31%] Built target tokuportability make -f storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/build.make storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/depend make[2]: Entering directory `/usr/local/src/mariadb/bld' cd /usr/local/src/mariadb/bld && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /usr/local/src/mariadb /usr/local/src/mariadb/storage/tokudb/ft-index/ft /usr/local/src/mariadb/bld /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/DependInfo.cmake --color= Dependee "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/DependInfo.cmake" is newer than depender "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/depend.internal". Dependee "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/depend.internal". Scanning dependencies of target logformat make[2]: Leaving directory `/usr/local/src/mariadb/bld' make -f storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/build.make storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/build make[2]: Entering directory `/usr/local/src/mariadb/bld' /usr/bin/cmake -E cmake_progress_report /usr/local/src/mariadb/bld/CMakeFiles [ 31%] Building CXX object storage/tokudb/ft-index/ft/CMakeFiles/logformat.dir/logformat.cc.o cd /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft && /usr/bin/g++-4.8 -DHAVE_CONFIG_H -DTOKUDB_VERSION=\"7.0.4\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_SVID_SOURCE -D_XOPEN_SOURCE=600 -D__LONG_LONG_SUPPORTED -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -std=c++11 -Wall -Werror -Wcast-align -Wshadow -Wmissing-format-attribute -Wpointer-arith -Wmissing-declarations -Wno-missing-noreturn -Wextra -Wno-error=strict-overflow -Wpacked -fno-exceptions -fno-rtti -Wno-error=missing-format-attribute -Wmissing-format-attribute -Wlogical-op -Wtrampolines -Wswitch -Winit-self -Wstrict-null-sentinel -Wno-missing-field-initializers -Wall -felide-constructors -fno-exceptions -fno-rtti -Wall -Wno-unused-parameter -fno-exceptions -fno-rtti -flto -fuse-linker-plugin -O2 -g -DNDEBUG -DDBUG_OFF -DMY_PTHREAD_FASTMUTEX=1 -g -O3 -UNDEBUG -I/usr/local/src/mariadb/bld/storage/tokudb/ft-index/buildheader -I/usr/local/src/mariadb/bld/include -I/usr/local/src/mariadb/bld/storage/tokudb/ft-index/./xz/include -I/usr/local/src/mariadb/storage/tokudb/ft-index/include -I/usr/local/src/mariadb/storage/tokudb/ft-index/toku_include -I/usr/local/src/mariadb/storage/tokudb/ft-index/portability -I/usr/local/src/mariadb/storage/tokudb/ft-index -I/usr/local/src/mariadb/bld/storage/tokudb/ft-index -I/usr/local/src/mariadb/bld/storage/tokudb/ft-index/toku_include -isystem /usr/local/include -I/usr/local/src/mariadb/storage/tokudb/ft-index/ft -o CMakeFiles/logformat.dir/logformat.cc.o -c /usr/local/src/mariadb/storage/tokudb/ft-index/ft/logformat.cc Linking CXX executable logformat cd /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft && /usr/bin/cmake -E cmake_link_script CMakeFiles/logformat.dir/link.txt --verbose=1 /usr/bin/g++-4.8 -std=c++11 -Wall -Werror -Wcast-align -Wshadow -Wmissing-format-attribute -Wpointer-arith -Wmissing-declarations -Wno-missing-noreturn -Wextra -Wno-error=strict-overflow -Wpacked -fno-exceptions -fno-rtti -Wno-error=missing-format-attribute -Wmissing-format-attribute -Wlogical-op -Wtrampolines -Wswitch -Winit-self -Wstrict-null-sentinel -Wno-missing-field-initializers -Wall -felide-constructors -fno-exceptions -fno-rtti -Wall -Wno-unused-parameter -fno-exceptions -fno-rtti -flto -fuse-linker-plugin -O2 -g -DNDEBUG -DDBUG_OFF -DMY_PTHREAD_FASTMUTEX=1 -g -O3 -UNDEBUG -g -fuse-linker-plugin -Wno-error=strict-overflow CMakeFiles/logformat.dir/logformat.cc.o -o logformat -lpthread ../portability/libtokuportability.so -lpthread -ldl -lrt make[2]: Leaving directory `/usr/local/src/mariadb/bld' /usr/bin/cmake -E cmake_progress_report /usr/local/src/mariadb/bld/CMakeFiles [ 31%] Built target logformat make -f storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/build.make storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/depend make[2]: Entering directory `/usr/local/src/mariadb/bld' cd /usr/local/src/mariadb/bld && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /usr/local/src/mariadb /usr/local/src/mariadb/storage/tokudb/ft-index/ft /usr/local/src/mariadb/bld /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/DependInfo.cmake --color= Dependee "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/DependInfo.cmake" is newer than depender "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/depend.internal". Dependee "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/depend.internal". Scanning dependencies of target generate_log_code make[2]: Leaving directory `/usr/local/src/mariadb/bld' make -f storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/build.make storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/build make[2]: Entering directory `/usr/local/src/mariadb/bld' /usr/bin/cmake -E cmake_progress_report /usr/local/src/mariadb/bld/CMakeFiles [ 31%] Generating log_code.cc, log_print.cc, log_header.h cd /usr/local/src/mariadb/bld/storage/tokudb/ft-index/ft && ./logformat . ./logformat: error while loading shared libraries: libtokuportability.so: cannot open shared object file: No such file or directory make[2]: *** [storage/tokudb/ft-index/ft/log_code.cc] Error 127 make[2]: Leaving directory `/usr/local/src/mariadb/bld' make[1]: *** [storage/tokudb/ft-index/ft/CMakeFiles/generate_log_code.dir/all] Error 2 make[1]: Leaving directory `/usr/local/src/mariadb/bld' make: *** [all] Error 2
checking
objdump -x ./storage/tokudb/ft-index/ft/logformat | grep RPATH (still empty)
find . | grep libtokuportability ./storage/tokudb/ft-index/portability/libtokuportability_static.a ./storage/tokudb/ft-index/portability/libtokuportability_static_conv.a ./storage/tokudb/ft-index/portability/libtokuportability.so
find . | grep ft/logformat ./storage/tokudb/ft-index/ft/logformat ldd ./storage/tokudb/ft-index/ft/logformat linux-vdso.so.1 (0x00007fff5adff000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc4c1c69000) libtokuportability.so => not found libdl.so.2 => /lib64/libdl.so.2 (0x00007fc4c1a65000) librt.so.1 => /lib64/librt.so.1 (0x00007fc4c185d000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fc4c1555000) libm.so.6 => /lib64/libm.so.6 (0x00007fc4c1257000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc4c1040000) libc.so.6 => /lib64/libc.so.6 (0x00007fc4c0c92000) /lib64/ld-linux-x86-64.so.2 (0x00007fc4c1e85000)
doesn't appear to have had any effect
On Mon, Dec 2, 2013, at 06:06 PM, Leif Walsh wrote:
Wait, "skip build RPATH off" is a double-negative that I missed earlier. I think if you fool around with cmake's RPATH-related settings you'll be able to find the right combination, I'm not at a computer right now. At the very least, you should be able to leave them all as their defaults and the build should succeed.
good news, rm -rf bld mkdir bld cd bld cmake .. \ - -DCMAKE_SKIP_BUILD_RPATH=0 \ - -DCMAKE_BUILD_WITH_INSTALL_RPATH=1 \ - -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=1 \ ... -DWITH_SSL=/usr/local/ssl \ -DOPENSSL_ROOT_DIR=/usr/local/ssl \ -DOPENSSL_INCLUDE_DIR=/usr/local/ssl/include \ -DOPENSSL_LIBRARIES=/usr/local/ssl/lib64/libssl.so \ -DCRYPTO_LIBRARY=/usr/local/ssl/lib64/libcrypto.so \ ... -DWITHOUT_TOKUDB=0 make VERBOSE=1 objdump -x ./storage/tokudb/ft-index/ft/logformat | grep RPATH (still empty) ldd ./storage/tokudb/ft-index/ft/logformat linux-vdso.so.1 (0x00007fffe4fff000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd70dfc0000) !! libtokuportability.so => /usr/local/src/mariadb/bld/storage/tokudb/ft-index/portability/libtokuportability.so (0x00007fd70dd65000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fd70db61000) librt.so.1 => /lib64/librt.so.1 (0x00007fd70d959000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fd70d651000) libm.so.6 => /lib64/libm.so.6 (0x00007fd70d353000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd70d13c000) libc.so.6 => /lib64/libc.so.6 (0x00007fd70cd8e000) /lib64/ld-linux-x86-64.so.2 (0x00007fd70e1dc000) AND, make install sql/mysqld --version sql/mysqld Ver 10.0.7-MariaDB-log for Linux on x86_64 (Source distribution) ldd `which mysql` `which mysqld` | egrep "ssl|crypto" libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007f1187191000) libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007f1186dbe000) libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007f6543007000) libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007f6542c34000) it appears something's changed since 'prior' versions, so that now run-time ssl links are maintained without having to mess with the CMAKE rpath settings. i'll recheck this, determine whether rm'ing the RPATH cmake opts I'd used has broken anything new, and figure out how to verify tokudb is correctly built/installed
Hi, Leif! On Dec 02, Leif Walsh wrote:
Yep, CMAKE_SKIP_BUILD_RPATH=0 would cause this exact problem. We should add something to our cmake to warn if that is set to 0.
I'd suggest this change: --- storage/tokudb/ft-index/ft/CMakeLists.txt 2013-11-19 14:35:31 +0000 +++ storage/tokudb/ft-index/ft/CMakeLists.txt 2013-12-03 09:04:29 +0000 @@ -11 +11 @@ -target_link_libraries(logformat ${LIBTOKUPORTABILITY}) +target_link_libraries(logformat ${LIBTOKUPORTABILITY}_static) logformat is used internally during the build, it's not going to be installed. Thus it can use static libraries and avoid the whole rpath issue altogether. This should probably be done for all binaries that are only used during the build. Regards, Sergei
That's a good solution, but I'd still be wary of messing around too much with cmake's RPATH handling. I'll do this in ft-index soon though. Sent from my iPhone
On Dec 3, 2013, at 4:09, Sergei Golubchik <serg@mariadb.org> wrote:
Hi, Leif!
On Dec 02, Leif Walsh wrote: Yep, CMAKE_SKIP_BUILD_RPATH=0 would cause this exact problem. We should add something to our cmake to warn if that is set to 0.
I'd suggest this change:
--- storage/tokudb/ft-index/ft/CMakeLists.txt 2013-11-19 14:35:31 +0000 +++ storage/tokudb/ft-index/ft/CMakeLists.txt 2013-12-03 09:04:29 +0000 @@ -11 +11 @@ -target_link_libraries(logformat ${LIBTOKUPORTABILITY}) +target_link_libraries(logformat ${LIBTOKUPORTABILITY}_static)
logformat is used internally during the build, it's not going to be installed. Thus it can use static libraries and avoid the whole rpath issue altogether.
This should probably be done for all binaries that are only used during the build.
Regards, Sergei
applying a needed src patch
cd /usr/local/src/mariadb # BUG @ http://www.linuxfromscratch.org/blfs/view/svn/server/mariadb.html sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc
I do't know what it is (and couldn't find it on that page), but I suppose it's innodb only, so shouldn't matter here.
FWIW it's http://bugs.mysql.com/bug.php?id=70047, no relation to TokuDB.
participants (4)
-
darx@sent.com
-
Laurynas Biveinis
-
Leif Walsh
-
Sergei Golubchik