Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
3.1.7
-
None
-
None
-
cmake
Description
I maintain the R bindings for mariadb-connector-c. I need to build a version of libmariadbclient for MacOS with only static plugins. This does not work (at least not as documented).
Accoring to the documentation it should be possible to:
cmake .. -DCLIENT_PLUGIN_{PLUGIN_NAME}=[STATIC|DYNAMIC|OFF]
|
However when I try this cmake says the following:
CMake Warning:
|
Manually-specified variables were not used by the project:
|
|
CLIENT_PLUGIN_AUTH_GSSAPI
|
And it still builds the following plugins as shared libraries:
auth_gssapi_client.so client_ed25519.so remote_io.so
|
caching_sha2_password.so mysql_clear_password.so
|
I also noticed that the documentation says that the CMAKE parameter AUTH_GSSAPI_PLUGIN_TYPE was recently renamed to CLIENT_PLUGIN_AUTH_GSSAPI, however the top level CMakeLists.txt still contains some reference to AUTH_GSSAPI_PLUGIN_TYPE, so perhaps that is the problem?
Attachments
Activity
Jeroen,
thanks for your bug report. Please note that the corrrect cmake parameter is
-DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=STATIC
|
Could you please give me a full cmake line to build all the plugins as static? Because I also noticed the documentation doesn't mention all plugin names.
I'm sorry but I don't think this fixed it. The bug is in cmake, but you only changed a line of C code?
I'm now building as follows:
cmake . -DCMAKE_C_FLAGS_RELEASE=-DNDEBUG -DCMAKE_CXX_FLAGS_RELEASE=-DNDEBUG -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/mariadb-connector-c/HEAD-1059275_1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -Wno-dev -DHAVE_CLOCK_GETTIME:INTERNAL=0 -DOPENSSL_INCLUDE_DIR=/usr/local/opt/openssl@1.1/include -DAUTH_GSSAPI_PLUGIN_TYPE=STATIC -DCLIENT_PLUGIN_DIALOG=STATIC -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=STATIC -DCLIENT_PLUGIN_CLIENT_ED25519=STATIC -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=STATIC -DCLIENT_PLUGIN_REMOTE_IO=OFF
|
-- The C compiler identification is AppleClang 8.0.0.8000042
|
-- Check for working C compiler: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang
|
-- Check for working C compiler: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang -- works
|
-- Detecting C compiler ABI info
|
-- Detecting C compiler ABI info - done
|
-- Detecting C compile features
|
-- Detecting C compile features - done
|
-- Found GSSAPI: -dynamic -Wl,-search_paths_first -lkrb5
|
-- Found Git: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/git (found version "2.10.1 (Apple Git-78)")
|
-- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.5")
|
...
|
Which eventually fails with:
[ 62%] Linking C shared library libmariadb.dylib
|
cd /tmp/mariadb-connector-c-20200315-28775-sex2lo/libmariadb && /usr/local/Cellar/cmake/3.12.2/bin/cmake -E cmake_link_script CMakeFiles/libmariadb.dir/link.txt --verbose=1
|
/usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang -DNDEBUG -DDBUG_OFF -dynamiclib -Wl,-headerpad_max_install_names -compatibility_version 3.0.0 -current_version 3.0.0 -o libmariadb.3.dylib -install_name /tmp/mariadb-connector-c-20200315-28775-sex2lo/libmariadb/libmariadb.3.dylib CMakeFiles/mariadb_obj.dir/__/plugins/auth/my_auth.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/dialog.c.o CMakeFiles/mariadb_obj.dir/get_password.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ed25519.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_0.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_isnegative.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_sub.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p1p1_to_p2.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p3_to_cached.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/open.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_1.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_isnonzero.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_tobytes.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p1p1_to_p3.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p3_to_p2.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/sc_muladd.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_add.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_mul.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_add.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p2_0.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_precomp_0.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/sc_reduce.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_cmov.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_neg.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_double_scalarmult.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p2_dbl.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_scalarmult_base.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/sign.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_copy.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_pow22523.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_frombytes.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p3_0.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_sub.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/verify.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_frombytes.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_sq2.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_madd.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p3_dbl.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_tobytes.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_invert.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/fe_sq.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_msub.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/ge_p3_tobytes.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/ref10/keypair.c.o CMakeFiles/mariadb_obj.dir/secure/openssl_crypt.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/caching_sha2_pw.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/auth_gssapi_client.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/gssapi_client.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/gssapi_errmsg.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/sha256_pw.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/old_password.c.o CMakeFiles/mariadb_obj.dir/__/plugins/auth/mariadb_cleartext.c.o CMakeFiles/mariadb_obj.dir/__/plugins/pvio/pvio_socket.c.o CMakeFiles/mariadb_obj.dir/ma_array.c.o CMakeFiles/mariadb_obj.dir/ma_charset.c.o CMakeFiles/mariadb_obj.dir/ma_hash.c.o CMakeFiles/mariadb_obj.dir/ma_net.c.o CMakeFiles/mariadb_obj.dir/mariadb_charset.c.o CMakeFiles/mariadb_obj.dir/ma_time.c.o CMakeFiles/mariadb_obj.dir/ma_default.c.o CMakeFiles/mariadb_obj.dir/ma_errmsg.c.o CMakeFiles/mariadb_obj.dir/mariadb_lib.c.o CMakeFiles/mariadb_obj.dir/ma_list.c.o CMakeFiles/mariadb_obj.dir/ma_pvio.c.o CMakeFiles/mariadb_obj.dir/ma_tls.c.o CMakeFiles/mariadb_obj.dir/ma_alloc.c.o CMakeFiles/mariadb_obj.dir/ma_compress.c.o CMakeFiles/mariadb_obj.dir/ma_init.c.o CMakeFiles/mariadb_obj.dir/ma_password.c.o CMakeFiles/mariadb_obj.dir/ma_ll2str.c.o CMakeFiles/mariadb_obj.dir/ma_sha1.c.o CMakeFiles/mariadb_obj.dir/mariadb_stmt.c.o CMakeFiles/mariadb_obj.dir/ma_loaddata.c.o CMakeFiles/mariadb_obj.dir/ma_stmt_codec.c.o CMakeFiles/mariadb_obj.dir/ma_string.c.o CMakeFiles/mariadb_obj.dir/ma_dtoa.c.o CMakeFiles/mariadb_obj.dir/mariadb_rpl.c.o CMakeFiles/mariadb_obj.dir/ma_client_plugin.c.o CMakeFiles/mariadb_obj.dir/ma_io.c.o CMakeFiles/mariadb_obj.dir/secure/openssl.c.o CMakeFiles/mariadb_obj.dir/mariadb_dyncol.c.o CMakeFiles/mariadb_obj.dir/mariadb_async.c.o CMakeFiles/mariadb_obj.dir/ma_context.c.o -dynamic -Wl,-search_paths_first -lkrb5 /usr/lib/libz.dylib /usr/lib/libiconv.dylib /usr/local/opt/openssl@1.1/lib/libssl.dylib /usr/local/opt/openssl@1.1/lib/libcrypto.dylib -dynamic -Wl,-search_paths_first -lkrb5 /usr/local/opt/openssl@1.1/lib/libssl.dylib /usr/local/opt/openssl@1.1/lib/libcrypto.dylib /usr/local/opt/openssl@1.1/lib/libssl.dylib /usr/local/opt/openssl@1.1/lib/libcrypto.dylib -dynamic -Wl,-search_paths_first -lkrb5 /usr/local/opt/openssl@1.1/lib/libssl.dylib /usr/local/opt/openssl@1.1/lib/libcrypto.dylib
|
Undefined symbols for architecture x86_64:
|
"_auth_gssapi_client_client_plugin", referenced from:
|
_mysql_client_builtins in ma_client_plugin.c.o
|
"_client_ed25519_client_plugin", referenced from:
|
_mysql_client_builtins in ma_client_plugin.c.o
|
Did you remove your CMakeCache.txt before.
I just checked on Linux,
CFLAGS=-DMYSQL_CLIENT=1 cmake .. -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=STATIC -DCLIENT_PLUGIN_DIALOG=STATIC -DCLIENT_PLUGIN_CLIENT_ED25519=STATIC -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=STATIC -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC -DCLIENT_PLUGIN_MYSQL_OLD_PASSWORD=STATIC
|
works fine for me.
Your command still generates a shared plugin for io. Does
-DCLIENT_PLUGIN_REMOTE_IO=STATIC
|
work for you?
OK shit, all this time I was building from your master branch, but i now see that you are pushing to the 3.1 branch. That explains why I wasn't seeing your fix
So when I build from the 3.1 branch I get the same result as you. That fixes the issue for the AUTH_GSSAPI plugin, but the same issue still persists for the REMOTE_IO plugin. Can you see if this if fixable as well?
Fixed in rev fbf1db627030b49e2c2f30d3c21baebd3b68ffc3
georg, you referenced this commit, but it doesn't exist in the Github MariaDB server repository (https://github.com/MariaDB/server/fbf1db627030b49e2c2f30d3c21baebd3b68ffc3).
Was it perhaps force-pushed-over? Or is it in a different repo, and never merged upstream?
UPDATE: Ah, found it (https://github.com/mariadb-corporation/mariadb-connector-c/commit/fbf1db627030b49e2c2f30d3c21baebd3b68ffc3).
Fixed in rev fbf1db627030b49e2c2f30d3c21baebd3b68ffc3