Bug #89168 | Sun RPC removed from glibc, add option to detect and use libtirpc as replacement | ||
---|---|---|---|
Submitted: | 10 Jan 2018 11:34 | Modified: | 13 Feb 2018 3:24 |
Reporter: | Terje Røsten | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
Version: | 5.7.20 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[10 Jan 2018 11:34]
Terje Røsten
[13 Feb 2018 3:24]
Paul DuBois
Posted by developer: Fixed in 5.7.22, 8.0.5. Sun RPC is being removed from glibc. CMake now detects and uses libtirpc if glibc does not contain Sun RPC. (You might find it necessary to install libtirpc and rpcgen to take advantage of this CMake feature.)
[3 Mar 2018 20:39]
Terje Røsten
Marked as dup: https://bugs.mysql.com/bug.php?id=89776
[16 Nov 2018 22:31]
Björn Voigt
MySQL 8.0.13 still does not compile with Glibc 2.27 (tested on openSUSE Tumbleweed 20181112): [ 73%] Building C object plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/xcom_transport.c.o /home/bv/rpmbuild/BUILD/mysql-8.0.13/mysql-8.0.13/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c: In function ‘xdr_proto_sizeof’: /home/bv/rpmbuild/BUILD/mysql-8.0.13/mysql-8.0.13/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c:511:18: error: assignment to ‘u_int (*)(struct __rpc_xdr *)’ {aka ‘unsigned int (*)(struct __rpc_xdr *)’} from incompatible pointer type ‘u_int (*)(const XDR *)’ {aka ‘unsigned int (*)(const struct __rpc_xdr *)’} [-Werror=incompatible-pointer-types] ops.x_getpostn = x_getpostn; ^ /home/bv/rpmbuild/BUILD/mysql-8.0.13/mysql-8.0.13/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c:519:17: error: assignment to ‘bool_t (*)(struct __rpc_xdr *, long int *)’ {aka ‘int (*)(struct __rpc_xdr *, long int *)’} from incompatible pointer type ‘bool_t (*)(const XDR *, long int *)’ {aka ‘int (*)(const struct __rpc_xdr *, long int *)’} [-Werror=incompatible-pointer-types] ops.x_getlong = (dummyfunc1)harmless; ^ /home/bv/rpmbuild/BUILD/mysql-8.0.13/mysql-8.0.13/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c:520:18: error: assignment to ‘bool_t (*)(struct __rpc_xdr *, char *, u_int)’ {aka ‘int (*)(struct __rpc_xdr *, char *, unsigned int)’} from incompatible pointer type ‘bool_t (*)(const XDR *, char *, u_int)’ {aka ‘int (*)(const struct __rpc_xdr *, char *, unsigned int)’} [-Werror=incompatible-pointer-types] ops.x_getbytes = (dummyfunc2)harmless; ^ cc1: all warnings being treated as errors
[21 Nov 2018 10:09]
Terje Røsten
Hi! I am not able to reproduce on openSUSE Tumbleweed 20181118: $ head -2 /etc/os-release NAME="openSUSE Tumbleweed" # VERSION="20181118" $ rpm -q glibc glibc-2.27-6.1.x86_64 $ rpm -q libtirpc-devel libtirpc-devel-1.0.3-2.1.x86_64 $ gcc --version|head -1 gcc (SUSE Linux) 8.2.1 20181025 [gcc-8-branch revision 265488] $ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.13.tar.gz $ tar xf mysql-boost-8.0.13.tar.gz $ cd mysql-8.0.13 $ mkdir build && cd build $ cmake .. -DWITH_BOOST=../boost $ make -j$(nproc) $ bin/mysqld -V /w/mysql-8.0.13/build/runtime_output_directory/mysqld Ver 8.0.13 for Linux on x86_64 (Source distribution)
[22 Nov 2018 13:10]
Björn Voigt
Okay, with your build configuration I can also compile without errors. But I can not compile a RPM for openSUSE Tumbleweed with the source RPM from SLES (SUSE Linux Enterprise Server) 15. (In this post (https://mysqlrelease.com/2018/10/adding-support-in-mysql-8-for-opensuse-and-sle-15/) openSUSE RPMs are announced, but I do not find them here: https://dev.mysql.com/downloads/mysql/. This is why I tried the SLES 15 RPMs for openSUSE) The following example configuration (shortened from SLES 15 RPM) does not compile on openSUSE Tumbleweed: [...same start like you described (download, mkdir build etc. ...] cmake .. \ -DBUILD_CONFIG=mysql_release \ -DINSTALL_LAYOUT=RPM \ -DPIDFILE_RPM="/var/run/mysql/mysqld.pid" \ -DLOGFILE_RPM="/var/log/mysql/mysqld.log" \ -DCMAKE_BUILD_TYPE=Debug \ -DWITH_BOOST=../boost \ -DWITH_SYSTEMD=1 \ -DSYSTEMD_SERVICE_NAME="mysql" \ -DSYSTEMD_PID_DIR="/var/run/mysql" \ -DWITH_NDBCLUSTER=1 \ -DWITH_MEB=1 \ -DWITH_INNODB_MEMCACHED=1 \ -DROUTER_INSTALL_PLUGINDIR="%{_lib}/mysqlrouter" \ -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock" \ -DMYSQLX_UNIX_ADDR="/var/run/mysql/mysqlx.sock" \ -DFEATURE_SET="community" \ -DWITH_NUMA=ON make [...] [ 72%] Building C object plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/xcom_transport.c.o /data2/tmp/mysql-bug-89168/mysql-8.0.13/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c: In function ‘xdr_proto_sizeof’: /data2/tmp/mysql-bug-89168/mysql-8.0.13/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c:504:18: error: assignment to ‘u_int (*)(struct __rpc_xdr *)’ {aka ‘unsigned int (*)(struct __rpc_xdr *)’} from incompatible pointer type ‘u_int (*)(const XDR *)’ {aka ‘unsigned int (*)(const struct __rpc_xdr *)’} [-Werror=incompatible-pointer-types] ops.x_getpostn = x_getpostn; ^ cc1: all warnings being treated as errors
[23 Nov 2018 8:42]
Terje Røsten
Hi again! Please visit: https://dev.mysql.com/downloads/repo/suse/ to get RPMS and SRPMS for openSUSE 15 or browse directly: http://repo.mysql.com/yum/mysql-8.0-community/suse/15/x86_64/ Due to glibc changes and need of libtirpc, these RPMS might not rebuild clean on openSUSE Tumbleweed.
[26 Nov 2018 10:35]
Terje Røsten
hi! Problem is related to location of tirpc headers on openSUSE, which confuses cmake checks in MySQL. I have created: https://bugs.mysql.com/bug.php?id=93341 to track this.