Skip to content

Commit 4995584

Browse files
committed
MDEV-37463 Avoid libaio/liburing dependencies in mariadb-import
On Linux, mariadb-import may depend on liburing and libaio. To avoid pulling in these dependencies when tpool is only used as a generic thread pool (submit_task), introduce a minimalistic variant of the tpool library, tpool_min. This variant has no new library dependencies, and exists only on Linux. Elsewhere, tpool_min is the same as tpool
1 parent d9e83d2 commit 4995584

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

client/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ TARGET_LINK_LIBRARIES(import_util PRIVATE pcre2-posix pcre2-8)
6464
TARGET_INCLUDE_DIRECTORIES(import_util PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
6565

6666
MYSQL_ADD_EXECUTABLE(mariadb-import mysqlimport.cc)
67-
TARGET_INCLUDE_DIRECTORIES(mariadb-import PRIVATE ${CMAKE_SOURCE_DIR}/tpool)
68-
TARGET_LINK_LIBRARIES(mariadb-import PRIVATE tpool ${CLIENT_LIB} import_util)
67+
TARGET_LINK_LIBRARIES(mariadb-import PRIVATE tpool_min ${CLIENT_LIB} import_util)
6968

7069

7170
MYSQL_ADD_EXECUTABLE(mariadb-upgrade mysql_upgrade.c COMPONENT Server)

tpool/CMakeLists.txt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
ADD_LIBRARY(tpool STATIC
1+
2+
SET(SOURCES
23
aio_simulated.cc
34
tpool_structs.h
4-
CMakeLists.txt
55
tpool.h
66
tpool_generic.cc
77
task_group.cc
88
task.cc
99
wait_notification.cc
1010
)
1111

12-
TARGET_INCLUDE_DIRECTORIES(tpool PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}"
13-
PRIVATE ${PROJECT_SOURCE_DIR}/include)
12+
ADD_LIBRARY(tpool OBJECT ${SOURCES})
1413

14+
TARGET_INCLUDE_DIRECTORIES(tpool PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}"
15+
${PROJECT_SOURCE_DIR}/include)
1516
IF(WIN32)
1617
TARGET_SOURCES(tpool PRIVATE tpool_win.cc aio_win.cc)
1718
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
@@ -31,6 +32,7 @@ ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
3132
TARGET_LINK_LIBRARIES(tpool PRIVATE ${URING_LIBRARIES})
3233
TARGET_INCLUDE_DIRECTORIES(tpool PUBLIC ${URING_INCLUDE_DIRS})
3334
TARGET_SOURCES(tpool PRIVATE aio_liburing.cc)
35+
ADD_DEPENDENCIES(tpool GenError)
3436
SET(CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES})
3537
SET(CMAKE_REQUIRED_LIBRARIES_SAVE ${CMAKE_REQUIRED_LIBRARIES})
3638
SET(CMAKE_REQUIRED_INCLUDES ${URING_INCLUDE_DIRS})
@@ -50,8 +52,17 @@ ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
5052
TARGET_LINK_LIBRARIES(tpool PRIVATE ${LIBAIO_LIBRARIES})
5153
TARGET_SOURCES(tpool PRIVATE aio_libaio.cc)
5254
ENDIF()
55+
56+
IF(LIBAIO_FOUND OR URING_FOUND)
57+
# Create a "light" version of the library that does not link
58+
# to additional io libs, and is not compiled with
59+
# -DHAVE_LIBAIO or -DHAVE_URING flags.
60+
ADD_LIBRARY(tpool_min STATIC ${SOURCES} aio_linux.cc)
61+
TARGET_INCLUDE_DIRECTORIES(tpool_min
62+
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/include)
63+
ENDIF()
5364
ENDIF()
5465

55-
IF(URING_FOUND)
56-
ADD_DEPENDENCIES(tpool GenError)
66+
IF(NOT TARGET tpool_min)
67+
ADD_LIBRARY(tpool_min ALIAS tpool)
5768
ENDIF()

0 commit comments

Comments
 (0)