mysql-router binary ships unnecessary shared objects in /usr/lib/mysql-router

Bug #1845661 reported by Robie Basak
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
mysql-8.0 (Ubuntu)
Invalid
Medium
Lars Tangvald

Bug Description

Since these aren't plugins and nor are they part of any public API/ABI, one would expect mysql-router to be statically built instead.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :
Download full text (11.2 KiB)

That code is reused between the binaries it provides.
Those in /usr/bin as well as the router plugins all link to those.

I might miss something, but are you sure this needs to change?

root@k:~# for f in /usr/bin/mysqlrouter* /usr/lib/mysqlrouter/plugin/*.so; do echo $f; ldd $f | grep -e '/usr/lib/mysql-router' ; done
/usr/bin/mysqlrouter
 libmysqlrouter.so.1 => /usr/lib/mysql-router/libmysqlrouter.so.1 (0x00007f4d6060e000)
 libmysqlharness.so.1 => /usr/lib/mysql-router/libmysqlharness.so.1 (0x00007f4d60545000)
 libmysqlharness_stdx.so.1 => /usr/lib/mysql-router/libmysqlharness_stdx.so.1 (0x00007f4d5fafa000)
/usr/bin/mysqlrouter_keyring
 libmysqlrouter.so.1 => /usr/lib/mysql-router/libmysqlrouter.so.1 (0x00007f3098d25000)
 libmysqlharness.so.1 => /usr/lib/mysql-router/libmysqlharness.so.1 (0x00007f3098c5c000)
 libmysqlharness_stdx.so.1 => /usr/lib/mysql-router/libmysqlharness_stdx.so.1 (0x00007f3098211000)
/usr/bin/mysqlrouter_passwd
 libmysqlrouter_http_auth_backend.so.1 => /usr/lib/mysql-router/libmysqlrouter_http_auth_backend.so.1 (0x00007f3f8c55b000)
 libmysqlrouter.so.1 => /usr/lib/mysql-router/libmysqlrouter.so.1 (0x00007f3f8bde2000)
 libmysqlharness.so.1 => /usr/lib/mysql-router/libmysqlharness.so.1 (0x00007f3f8bd19000)
 libmysqlharness_stdx.so.1 => /usr/lib/mysql-router/libmysqlharness_stdx.so.1 (0x00007f3f8b2ce000)
/usr/bin/mysqlrouter_plugin_info
 libmysqlharness.so.1 => /usr/lib/mysql-router/libmysqlharness.so.1 (0x00007f9518a09000)
/usr/lib/mysqlrouter/plugin/connection_pool.so
 libmysqlrouter_connection_pool.so.1 => /usr/lib/mysql-router/libmysqlrouter_connection_pool.so.1 (0x00007f8e8ebd9000)
 libmysqlharness.so.1 => /usr/lib/mysql-router/libmysqlharness.so.1 (0x00007f8e8eb10000)
/usr/lib/mysqlrouter/plugin/http_auth_backend.so
 libmysqlrouter_http_auth_backend.so.1 => /usr/lib/mysql-router/libmysqlrouter_http_auth_backend.so.1 (0x00007ff7a4eac000)
 libmysqlrouter_metadata_cache.so.1 => /usr/lib/mysql-router/libmysqlrouter_metadata_cache.so.1 (0x00007ff7a4e07000)
 libmysqlharness.so.1 => /usr/lib/mysql-router/libmysqlharness.so.1 (0x00007ff7a4d3e000)
 libmysqlrouter.so.1 => /usr/lib/mysql-router/libmysqlrouter.so.1 (0x00007ff7a3b81000)
 libmysqlrouter_mysqlxmessages.so.1 => /usr/lib/mysql-router/libmysqlrouter_mysqlxmessages.so.1 (0x00007ff7a3b32000)
 libmysqlharness_stdx.so.1 => /usr/lib/mysql-router/libmysqlharness_stdx.so.1 (0x00007ff7a3974000)
/usr/lib/mysqlrouter/plugin/http_auth_realm.so
 libmysqlrouter_http_auth_realm.so.1 => /usr/lib/mysql-router/libmysqlrouter_http_auth_realm.so.1 (0x00007fdd28557000)
 libmysqlharness.so.1 => /usr/lib/mysql-router/libmysqlharness.so.1 (0x00007fdd2848e000)
 libmysqlrouter_http_auth_backend.so.1 => /usr/lib/mysql-router/libmysqlrouter_http_auth_backend.so.1 (0x00007fdd27ffd000)
/usr/lib/mysqlrouter/plugin/http_server.so
 libmysqlrouter_http_auth_realm.so.1 => /usr/lib/mysql-router/libmysqlrouter_http_auth_realm.so.1 (0x00007f90068c6000)
 libmysqlrouter_http_auth_backend.so.1 => /usr/lib/mysql-router/libmysqlrouter_http_auth_backend.so.1 (0x00007f900620e000)
 libmysqlrouter_http.so.1 => /usr/lib/mysql-router/libmysqlrouter_http.so.1 (0x00007f90061fc000)
 libmysqlharness_tls.so.1 => /usr/...

Changed in mysql-8.0 (Ubuntu):
status: Triaged → Incomplete
Revision history for this message
Robie Basak (racb) wrote :

It was a while ago but I'm guessing I assumed it was only used by one binary. I guess if there are multiple binaries sharing then this makes sense.

I'd like it to be difficult for other packages to use something that isn't a public API/ABI, but I'm not sure there is an easy mechanism for that apart from to avoid packaging headers and/or pkg-config, etc.

Changed in mysql-8.0 (Ubuntu):
status: Incomplete → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.