diff --git a/CMakeLists.txt b/CMakeLists.txt index 72b9f8611ab..e54ea2b068d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -392,7 +392,7 @@ CHECK_PCRE() ADD_SUBDIRECTORY(tpool) CHECK_SYSTEMD() -IF(CMAKE_CROSSCOMPILING) +IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR) SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build") INCLUDE(${IMPORT_EXECUTABLES}) ENDIF() @@ -473,7 +473,7 @@ ADD_SUBDIRECTORY(scripts) ADD_SUBDIRECTORY(support-files) ADD_SUBDIRECTORY(extra/aws_sdk) -IF(NOT CMAKE_CROSSCOMPILING) +IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR) SET(EXPORTED comp_err comp_sql factorial) IF(NOT WITHOUT_SERVER) SET(EXPORTED ${EXPORTED} gen_lex_hash gen_lex_token) diff --git a/configure.cmake b/configure.cmake index 3d6ff53164b..03bb6b044fe 100644 --- a/configure.cmake +++ b/configure.cmake @@ -134,6 +134,7 @@ IF(UNIX) IF(NOT LIBRT) MY_SEARCH_LIBS(clock_gettime rt LIBRT) ENDIF() + set(THREADS_PREFER_PTHREAD_FLAG ON) FIND_PACKAGE(Threads) SET(CMAKE_REQUIRED_LIBRARIES @@ -670,10 +671,10 @@ int main() " HAVE_PTHREAD_YIELD_ZERO_ARG) IF(NOT STACK_DIRECTION) - IF(CMAKE_CROSSCOMPILING) - MESSAGE(FATAL_ERROR - "STACK_DIRECTION is not defined. Please specify -DSTACK_DIRECTION=1 " - "or -DSTACK_DIRECTION=-1 when calling cmake.") + IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR) + MESSAGE(FATAL_ERROR + "STACK_DIRECTION is not defined. Please specify -DSTACK_DIRECTION=1 " + "or -DSTACK_DIRECTION=-1 when calling cmake.") ELSE() TRY_RUN(STACKDIR_RUN_RESULT STACKDIR_COMPILE_RESULT ${CMAKE_BINARY_DIR} diff --git a/dbug/CMakeLists.txt b/dbug/CMakeLists.txt index 842099f03f3..d45401be290 100644 --- a/dbug/CMakeLists.txt +++ b/dbug/CMakeLists.txt @@ -25,7 +25,7 @@ MAYBE_DISABLE_IPO(dbug) ADD_EXECUTABLE(tests tests.c) TARGET_LINK_LIBRARIES(tests dbug) -IF(NOT CMAKE_CROSSCOMPILING) +IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR) ADD_EXECUTABLE(factorial my_main.c factorial.c) TARGET_LINK_LIBRARIES(factorial dbug) ENDIF() diff --git a/debian/rules b/debian/rules index 8c37b1dbdb5..aaab10c9e6e 100755 --- a/debian/rules +++ b/debian/rules @@ -104,6 +104,7 @@ endif -DSYSTEM_TYPE="debian-$(DEB_HOST_GNU_SYSTEM)" \ -DCMAKE_SYSTEM_PROCESSOR=$(DEB_HOST_ARCH) \ -DBUILD_CONFIG=mysql_release \ + -DCONC_DEFAULT_CHARSET=utf8mb4 \ -DPLUGIN_AWS_KEY_MANAGEMENT=NO \ -DPLUGIN_COLUMNSTORE=NO \ -DIGNORE_AIO_CHECK=YES \ diff --git a/debian/salsa-ci.yml b/debian/salsa-ci.yml index 816d4959320..43f59b4e493 100644 --- a/debian/salsa-ci.yml +++ b/debian/salsa-ci.yml @@ -175,6 +175,40 @@ blhc: - pkg-config --cflags --libs libmariadb - pkg-config --cflags --libs mariadb - apt-get install -y --no-install-recommends g++ + - | + # Build a test binary that depends on libmysqlclient + cat > b933063.cpp < + #include + #include + int main() + { + MYSQL h; + if (!mysql_init(&h) + || mysql_options(&h, MYSQL_READ_DEFAULT_GROUP, "") + // || mysql_options(&h, MYSQL_SET_CHARSET_NAME, "utf8mb4") + || !mysql_real_connect(&h, "", "", NULL, "", 0, NULL, 0)) + throw std::runtime_error(mysql_error(&h)); + std::string q = "show variables like '%char%'"; + if (mysql_real_query(&h, q.data(), q.size())) + throw std::runtime_error(mysql_error(&h)); + MYSQL_RES* result = mysql_store_result(&h); + if (!result && mysql_errno(&h)) + throw std::runtime_error(mysql_error(&h)); + while (MYSQL_ROW row = mysql_fetch_row(result)) + { + std::cout << row[0] << ": " << row[1] << "\n"; + } + return 0; + } + EOF + apt-get install -y ./*.deb # Server must be installed for client to connect + echo "Testing -l mysqlclient" + g++ b933063.cpp -l mysqlclient && ./a.out | tee result + if grep --quiet latin result; then echo "ERROR: Charset latin found!"; exit 1; fi + echo "Testing -l mariadbclient" + g++ b933063.cpp -l mariadbclient && ./a.out | tee result + if grep --quiet latin result; then echo "ERROR: Charset latin found!"; exit 1; fi .test-install-all-libs: &test-install-all-libs - apt-get install -y ./libmariadb3_*.deb ./libmariadb-dev_*.deb ./libmariadb-dev-compat_*.deb ./libmariadbd19_*.deb ./libmariadbd-dev_*.deb ./mariadb-common_*.deb diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index 16de75f4e6a..5021128ed35 100644 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -18,7 +18,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${ZLIB_INCLUDE_DIR}) # Default install component for the files is Server here SET(MYSQL_INSTALL_COMPONENT Server) -IF(NOT CMAKE_CROSSCOMPILING) +IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR) ADD_EXECUTABLE(comp_err comp_err.c) TARGET_LINK_LIBRARIES(comp_err mysys) ENDIF() diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index a689e6dc057..7d1f10e5ba2 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -28,14 +28,14 @@ MACRO(INSTALL_LINK old new destination component) ) ENDMACRO() -IF(NOT CMAKE_CROSSCOMPILING) +IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) ADD_EXECUTABLE(comp_sql comp_sql.c ../sql/sql_bootstrap.cc) TARGET_LINK_LIBRARIES(comp_sql) ENDIF() # Build mysql_fix_privilege_tables.sql (concatenate 3 sql scripts) -IF(NOT WIN32 OR CMAKE_CROSSCOMPILING) +IF(NOT WIN32 OR (CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)) FIND_PROGRAM(CAT_EXECUTABLE cat DOC "path to the executable") MARK_AS_ADVANCED(CAT_EXECUTABLE) ENDIF() diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 6b83cbcc01e..b172059373c 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -355,7 +355,7 @@ ELSE() COMPILE_FLAGS "-p ORA") ENDIF() -IF(NOT CMAKE_CROSSCOMPILING) +IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR) ADD_EXECUTABLE(gen_lex_token gen_lex_token.cc ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.hh) ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc) @@ -405,7 +405,7 @@ ADD_CUSTOM_TARGET(distclean ) # Install initial database (default on windows, optional target elsewhere) -IF(TARGET mariadbd AND NOT CMAKE_CROSSCOMPILING) +IF(TARGET mariadbd AND (NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR)) IF(GENERATOR_IS_MULTI_CONFIG) SET (CONFIG_PARAM -DCONFIG=${CMAKE_CFG_INTDIR}) ENDIF() diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc index 3a373e597d3..55b261c6c4d 100644 --- a/storage/innobase/buf/buf0flu.cc +++ b/storage/innobase/buf/buf0flu.cc @@ -40,13 +40,6 @@ Created 11/11/1995 Heikki Tuuri #include "log0crypt.h" #include "srv0mon.h" #include "fil0pagecompress.h" -#ifdef UNIV_LINUX -/* include defs for CPU time priority settings */ -#include -#include -#include -#include -#endif /* UNIV_LINUX */ #ifdef HAVE_LZO # include "lzo/lzo1x.h" #elif defined HAVE_SNAPPY @@ -2038,21 +2031,6 @@ static void buf_flush_page_cleaner() ut_ad(!srv_read_only_mode); ut_ad(buf_page_cleaner_is_active); -#ifdef UNIV_DEBUG_THREAD_CREATION - ib::info() << "page_cleaner thread running, id " - << os_thread_get_curr_id(); -#endif /* UNIV_DEBUG_THREAD_CREATION */ -#ifdef UNIV_LINUX - /* linux might be able to set different setting for each thread. - worth to try to set high priority for the page cleaner thread */ - const pid_t tid= static_cast(syscall(SYS_gettid)); - setpriority(PRIO_PROCESS, tid, -20); - if (getpriority(PRIO_PROCESS, tid) != -20) - ib::info() << "If the mysqld execution user is authorized," - " page cleaner thread priority can be changed." - " See the man page of setpriority()."; -#endif /* UNIV_LINUX */ - ulint last_pages= 0; timespec abstime; set_timespec(abstime, 1); diff --git a/storage/mroonga/vendor/groonga/CMakeLists.txt b/storage/mroonga/vendor/groonga/CMakeLists.txt index d271d4c4eb9..ebb8b6906ec 100644 --- a/storage/mroonga/vendor/groonga/CMakeLists.txt +++ b/storage/mroonga/vendor/groonga/CMakeLists.txt @@ -405,7 +405,7 @@ if(NOT ${GRN_WITH_MECAB} STREQUAL "no") set(MECAB_LIBRARIES libmecab) else() set(GRN_MECAB_CONFIG "mecab-config" CACHE FILEPATH "mecab-config path") - if(NOT CMAKE_CROSSCOMPILING) + if(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR) find_program(GRN_MECAB_CONFIG_ABSOLUTE_PATH "${GRN_MECAB_CONFIG}") endif() if(EXISTS "${GRN_MECAB_CONFIG_ABSOLUTE_PATH}")