dev-db/percona-xtrabackup: Fix build problems
authorThomas Deutschmann <whissi@gentoo.org>
Tue, 17 Apr 2018 13:20:05 +0000 (15:20 +0200)
committerThomas Deutschmann <whissi@gentoo.org>
Tue, 17 Apr 2018 13:20:18 +0000 (15:20 +0200)
Ebuild changes:
===============
- Re-spin "fix-gcc6-isystem" patch.

- Keep lz4 source for "xxhash.c".

- Force gnu++03 instead of GCC 7's default C++14 to avoid
  -fpermissive build error. [Bug 87956]

Bug: https://bugs.mysql.com/bug.php?id=87956
Closes: https://bugs.gentoo.org/653360
Package-Manager: Portage-2.3.28, Repoman-2.3.9

dev-db/percona-xtrabackup/files/percona-xtrabackup-2.4.10-fix-gcc6-isystem.patch [new file with mode: 0644]
dev-db/percona-xtrabackup/percona-xtrabackup-2.4.10.ebuild

diff --git a/dev-db/percona-xtrabackup/files/percona-xtrabackup-2.4.10-fix-gcc6-isystem.patch b/dev-db/percona-xtrabackup/files/percona-xtrabackup-2.4.10-fix-gcc6-isystem.patch
new file mode 100644 (file)
index 0000000..c38398a
--- /dev/null
@@ -0,0 +1,112 @@
+Do not use -isystem to add headers, as they break GCC 6's header wrapping.
+See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129
+
+--- a/client/CMakeLists.txt
++++ b/client/CMakeLists.txt
+@@ -52,7 +52,7 @@ IF(NOT WITHOUT_SERVER)
+     upgrade/program.cc
+   )
+ ADD_COMPILE_FLAGS(
+-  upgrade/program.cc COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++  upgrade/program.cc COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+ )
+ TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient client_base mysqlcheck_core)
+ ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs GenSysSchema)
+--- a/client/base/CMakeLists.txt
++++ b/client/base/CMakeLists.txt
+@@ -49,7 +49,7 @@ ADD_COMPILE_FLAGS(
+   mutex.cc
+   mysql_query_runner.cc
+   show_variable_query_extractor.cc
+-  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+ )
+ 
+ TARGET_LINK_LIBRARIES(client_base mysqlclient)
+--- a/client/dump/CMakeLists.txt
++++ b/client/dump/CMakeLists.txt
+@@ -50,7 +50,7 @@ IF(USING_LOCAL_BOOST)
+ 
+   ADD_COMPILE_FLAGS(
+     ${BOOST_LIB_SOURCES}
+-    COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++    COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+     )
+ 
+   IF(HAVE_clock_gettime_IN_rt)
+@@ -145,7 +145,7 @@ TARGET_LINK_LIBRARIES(mysqlpump_lib
+ 
+ ADD_COMPILE_FLAGS(
+   ${MYSQLPUMP_LIB_SOURCES}
+-  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+   )
+ 
+ # Files that use Boost sources that trigger compilation warnings
+@@ -179,7 +179,7 @@ ADD_COMPILE_FLAGS(
+ )
+ MYSQL_ADD_EXECUTABLE(mysqlpump  program.cc)
+ ADD_COMPILE_FLAGS(
+-  program.cc COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++  program.cc COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+ )
+ 
+ TARGET_LINK_LIBRARIES(mysqlpump mysqlpump_lib ${LOCAL_BOOST_LIB})
+--- a/libmysqld/CMakeLists.txt
++++ b/libmysqld/CMakeLists.txt
+@@ -123,7 +123,7 @@ ADD_COMPILE_FLAGS(
+   ../sql/item_geofunc_setops.cc
+   ../sql/item_json_func.cc
+   ../sql/spatial.cc
+-  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+ )
+ 
+ ADD_COMPILE_FLAGS(
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -311,7 +311,7 @@ ADD_COMPILE_FLAGS(
+   item_geofunc_setops.cc
+   item_json_func.cc
+   spatial.cc
+-  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+ )
+ 
+ ADD_COMPILE_FLAGS(
+--- a/storage/innobase/xtrabackup/src/CMakeLists.txt
++++ b/storage/innobase/xtrabackup/src/CMakeLists.txt
+@@ -79,7 +79,7 @@ SET(keyring_source_files
+ 
+ ADD_COMPILE_FLAGS(
+   ${keyring_source_files}
+-  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++  COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+   -DEMBEDDED_LIBRARY
+ )
+ 
+--- a/unittest/gunit/CMakeLists.txt
++++ b/unittest/gunit/CMakeLists.txt
+@@ -385,7 +385,7 @@ IF (MERGE_UNITTESTS)
+   ENDIF()
+   ADD_COMPILE_FLAGS(
+     ${MERGE_SMALL_TESTS}
+-    COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++    COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+   )
+   # Fixes "C1128: number of sections exceeded object file format limit" in MSVC
+   IF(WIN32)
+@@ -467,11 +467,11 @@ ENDIF(MERGE_UNITTESTS)
+   ENDIF()
+   ADD_COMPILE_FLAGS(
+     bounded_queue-t.cc
+-    COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++    COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+   )
+   ADD_COMPILE_FLAGS(
+     pump_object_filter-t.cc
+-    COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -isystem ${BOOST_INCLUDE_DIR}
++    COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
+   )
+ 
+   FOREACH(test ${SERVER_TESTS})
index 6ff3b357bbfe0607a71c781cb286893d3e5d0147..ec724c075e65ffc0a9392203d428bddf6c66a960 100644 (file)
@@ -25,7 +25,7 @@ DEPEND="
        dev-libs/libgpg-error
        dev-python/sphinx
        net-misc/curl
-       sys-libs/zlib"
+       sys-libs/zlib:="
 
 RDEPEND="
        ${DEPEND}
@@ -34,16 +34,16 @@ RDEPEND="
 
 PATCHES=(
        "${FILESDIR}"/${PN}-2.4.6-remove-boost-version-check.patch
-       "${FILESDIR}"/${PN}-2.4.6-fix-gcc6-isystem.patch
+       "${FILESDIR}"/${PN}-2.4.10-fix-gcc6-isystem.patch
 )
 
 src_prepare() {
        cmake-utils_src_prepare
 
-       # remove bundled lz4, boost, libedit, libevent, zlib
+       # remove bundled boost, libedit, libevent, zlib
        # just to be safe...
+       # We keep lz4 directory because we use extra/lz4/xxhash.c in cmake/libutils.cmake
        rm -rv \
-               extra/lz4 \
                include/boost_1_59_0 \
                cmd-line-utils/libedit \
                libevent \
@@ -57,6 +57,10 @@ src_configure() {
        #
        append-cppflags -DDBUG_OFF
 
+       # Upstream doesn't support C++14 -- build will fail with -fpermissive error
+       # https://bugs.mysql.com/bug.php?id=87956
+       append-cxxflags $(test-flags-CXX -std=gnu++03) -std=gnu++03
+
        local mycmakeargs=(
                -DBUILD_CONFIG=xtrabackup_release
                -DWITH_EDITLINE=system