Bug #93744 | Can't compile mysql-5.7 source in the git repository | ||
---|---|---|---|
Submitted: | 26 Dec 2018 18:57 | Modified: | 28 Dec 2018 13:06 |
Reporter: | Justin Swanhart | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Compiling | Severity: | S1 (Critical) |
Version: | 5.7.24 | OS: | Debian (9.6) |
Assigned to: | CPU Architecture: | Other (amd64) |
[26 Dec 2018 18:57]
Justin Swanhart
[27 Dec 2018 0:04]
Justin Swanhart
Here is a patch to fix two issues with building, but others remain. diff --git a/rapid/plugin/group_replication/configure.cmake b/rapid/plugin/group_replication/configure.cmake index 16544429543..851b2ef9e7f 100644 --- a/rapid/plugin/group_replication/configure.cmake +++ b/rapid/plugin/group_replication/configure.cmake @@ -76,8 +76,9 @@ CHECK_STRUCT_HAS_MEMBER("struct ifreq" ifr_name net/if.h CHECK_STRUCT_HAS_MEMBER("struct xdr_ops" x_putint32 rpc/xdr.h HAVE_XDR_OPS_X_PUTINT32) + CHECK_STRUCT_HAS_MEMBER("struct xdr_ops" x_getint32 rpc/xdr.h - HAVE_XDR_OPS_X_GETINT32) + HAVE_XDR_OPS_X_GETINT32) CHECK_C_SOURCE_COMPILES( " @@ -110,7 +111,7 @@ IF(NOT APPLE CHECK_C_SOURCE_COMPILES( " #include <rpc/xdr.h> - int main() { XDR xdr; xdr.x_handy = -1; return (int)xdr.x_handy; } + int main() { XDR xdr; xdr.x_handy = -1ul; return (int)xdr.x_handy; } " OLD_XDR) @@ -140,8 +141,8 @@ IF(NOT APPLE CHECK_C_SOURCE_COMPILES( " #include <rpc/xdr.h> - bool_t putlong(XDR* xdr, long *longp) - { return (bool_t)(*longp + xdr->x_handy); } + bool_t putlong(XDR* __xdrs, const long *__lp) + { return (bool_t)(*__lp + __xdrs->x_handy); } int main() { XDR xdr; struct xdr_ops ops;
[27 Dec 2018 9:58]
Terje Røsten
hi! Thanks for your report! Are you using MySQL 8.0 or MySQL 5.7? The wolfSSL option is only present in MySQL 8.0 I think? Any special reason you want wolfSSL and not OpenSSL (the default)?
[27 Dec 2018 12:16]
Tor Didriksen
the xdr/rpc warning is a red herring, something else must have gone wrong during the configure step (like wolfssl not being supported in 5.7) The putlong test is *supposed* to fail on debian, note the result variable is called X_PUTLONG_NOT_USE_CONST, and see the corresponding usage of the C macro in xcom_transport.c
[27 Dec 2018 14:25]
Justin Swanhart
Oops, I guess you don’t build 5.7 with wolfSSL. That is just a typo. 8.0 can’t find OpenSSL on my box, or it doesn’t work with the version I have. I didn’t dig into the issue further, and instead used wolfSSL. 5.7 works with th my OpenSSL though.
[27 Dec 2018 14:25]
Justin Swanhart
Oops, I guess you don’t build 5.7 with wolfSSL. That is just a typo. 8.0 can’t find OpenSSL on my box, or it doesn’t work with the version I have. I didn’t dig into the issue further, and instead used wolfSSL. 5.7 works with th my OpenSSL though.
[27 Dec 2018 18:05]
Justin Swanhart
I am not using wolfSSL with 5.7. This is my steps: 1) clone mysql-server 2) checkout 5.7 branch 3) mkdir build 4) cd build/ 5) cmake .. -DDOWNLOAD_BOOST -DWITH_BOOST=../boost 6) make -j32
[27 Dec 2018 18:12]
Justin Swanhart
Tor, apparently my Debian stretch requires const even though that apparently wasn’t the case the case before.
[27 Dec 2018 21:47]
MySQL Verification Team
Then there isn't bug here regarding 5.7 and wolfssl, right?.
[27 Dec 2018 22:53]
Justin Swanhart
The problem is building from source causing errors in cmake. There are type conversion errors and problems with pointer conversion. WolfSSL is not involved.
[27 Dec 2018 22:58]
Justin Swanhart
updated debian version and CPU architecture
[28 Dec 2018 9:37]
Tor Didriksen
That particular cmake check (and many others) is expected to fail on Debian 9. You end up with file ./rapid/plugin/group_replication/include/xcom/xcom.h which contains this: /*Definitions*/ /* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */ #define HAVE_STRUCT_IFREQ_IFR_NAME 1 /* #undef HAVE_RPC_INLINE_T */ #define HAVE_XDR_OPS_X_PUTINT32 1 #define HAVE_XDR_OPS_X_GETINT32 1 /* #undef OLD_XDR */ #define X_GETPOSTN_NOT_USE_CONST 1 /* #undef X_PUTLONG_NOT_USE_CONST */ And you will use the last alternative int this #if #elif code, i.e. 'const long *longp' /* ARGSUSED */ static bool_t x_putlong (XDR *xdrs, #if defined(__APPLE__) && defined(__LP64__) const int *intp MY_ATTRIBUTE((unused)) #elif defined(X_PUTLONG_NOT_USE_CONST) long *longp MY_ATTRIBUTE((unused)) #else const long *longp MY_ATTRIBUTE((unused)) #endif So 'tail CMakeFiles/CMakeError.log is a red herring. What *other* cmake warnings/errors are you getting?
[28 Dec 2018 9:52]
Terje Røsten
> 8.0 can’t find OpenSSL on my box, or it doesn’t work with the version I have. Please make sure libssl-dev is installed, do: $ apt install libssl-dev You should then get: $ dpkg -l libssl-dev | tail -1 ii libssl-dev:amd64 1.1.0f-3+deb9u2 amd64 Secure Sockets Layer toolkit - development files Remove previous build/ directory and try again: $ mkdir build && cd build $ cmake .. -DWITH_SSL=system $ make -j32 If this fails, run: $ make -j1 and post error messages here.
[28 Dec 2018 13:06]
Justin Swanhart
I pulled a brand new copy of the source repo and now I can't reproduce the problem. Closing.