Skip to content

Commit 21d157a

Browse files
committed
MDEV-14560 Extra engines enabled through additional config are not loaded on first installation
RPM solution: Make all server plugins to restart the server when installed. To avoid multiple server restarts, do it only once in posttrans scriptlet. Add support for CPACK_RPM_<component>_POST_TRANS_SCRIPT_FILE
1 parent 5c83305 commit 21d157a

File tree

6 files changed

+52
-7
lines changed

6 files changed

+52
-7
lines changed

cmake/CPackRPM.cmake

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
# Wrapper for CPackRPM.cmake
33
#
44

5+
#
6+
# Support for per-component LICENSE and VENDOR
7+
#
8+
# per component values, if present, are copied into global CPACK_RPM_PACKAGE_xxx
9+
#
510
macro(set_from_component WHAT)
611
set(orig_CPACK_RPM_PACKAGE_${WHAT} ${CPACK_RPM_PACKAGE_${WHAT}})
712
if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_${WHAT})
@@ -15,6 +20,33 @@ endmacro()
1520
set_from_component(LICENSE)
1621
set_from_component(VENDOR)
1722

23+
#
24+
# Support for the %posttrans scriptlet
25+
#
26+
# the scriptlet, if present, is appended (together with the %posttrans tag)
27+
# to the pre-uninstall scriptlet
28+
#
29+
set(base_time "PRE")
30+
set(base_type "UNINSTALL")
31+
set(base_var CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_${base_time}_${base_type}_SCRIPT_FILE)
32+
set(acc)
33+
34+
macro(read_one_file time_ type_ tag_)
35+
set(var CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_${time_}_${type_}_SCRIPT_FILE)
36+
if (${var})
37+
file(READ ${${var}} content)
38+
set(acc "${tag_}\n${content}\n\n${acc}")
39+
endif()
40+
endmacro()
41+
42+
read_one_file("POST" "TRANS" "%posttrans")
43+
if (acc)
44+
set(orig_${base_var} ${${base_var}})
45+
read_one_file(${base_time} ${base_type} "")
46+
set(${base_var} ${CPACK_TOPLEVEL_DIRECTORY}/SPECS/${CPACK_RPM_PACKAGE_COMPONENT}_${base_time}_${base_type}.scriptlet)
47+
file(WRITE ${${base_var}} "${acc}")
48+
endif()
49+
1850
# load the original CPackRPM.cmake
1951
set(orig_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
2052
unset(CMAKE_MODULE_PATH)
@@ -23,10 +55,10 @@ set(CMAKE_MODULE_PATH ${orig_CMAKE_MODULE_PATH})
2355

2456
restore(LICENSE)
2557
restore(VENDOR)
58+
set(${base_var} ${orig_${base_var}})
2659

2760
# per-component cleanup
2861
foreach(_RPM_SPEC_HEADER URL REQUIRES SUGGESTS PROVIDES OBSOLETES PREFIX CONFLICTS AUTOPROV AUTOREQ AUTOREQPROV)
2962
unset(TMP_RPM_${_RPM_SPEC_HEADER})
3063
unset(CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP)
3164
endforeach()
32-

cmake/cpack_rpm.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ SET(CPACK_RPM_SPEC_MORE_DEFINE "
8181
%define _bindir ${INSTALL_BINDIRABS}
8282
%define _sbindir ${INSTALL_SBINDIRABS}
8383
%define _sysconfdir ${INSTALL_SYSCONFDIR}
84+
%define restart_flag %{_localstatedir}/lib/rpm-state/mariadb-restart
8485
")
8586

8687
# this creative hack is described here: http://www.cmake.org/pipermail/cmake/2012-January/048416.html
@@ -179,6 +180,7 @@ SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/r
179180
SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh)
180181
SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh)
181182
SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh)
183+
SET(CPACK_RPM_server_POST_TRANS_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-posttrans.sh)
182184
SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
183185
SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
184186
SET(CPACK_RPM_compat_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)

cmake/plugin.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,8 @@ MACRO(MYSQL_ADD_PLUGIN)
243243
ENDIF()
244244
INSTALL(FILES ${ARG_CONFIG} COMPONENT ${ARG_COMPONENT} DESTINATION ${INSTALL_SYSCONF2DIR})
245245
SET(CPACK_RPM_${ARG_COMPONENT}_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR}/*" PARENT_SCOPE)
246+
SET(CPACK_RPM_${ARG_COMPONENT}_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/plugin-postin.sh PARENT_SCOPE)
247+
SET(CPACK_RPM_${ARG_COMPONENT}_POST_TRANS_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-posttrans.sh PARENT_SCOPE)
246248
ENDIF()
247249
ENDIF()
248250
ELSE()

support-files/rpm/plugin-postin.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# request the server restart
2+
echo > %{restart_flag}

support-files/rpm/server-posttrans.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
if [ -r %{restart_flag} ] ; then
2+
rm %{restart_flag}
3+
if [ -x /usr/bin/systemctl ] ; then
4+
/usr/bin/systemctl daemon-reload > /dev/null 2>&1
5+
fi
6+
7+
# only restart the server if it was alredy running
8+
if %{_sysconfdir}/init.d/mysql status > /dev/null 2>&1; then
9+
%{_sysconfdir}/init.d/mysql restart
10+
fi
11+
fi

support-files/rpm/server-postun.sh

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
if [ $1 -ge 1 ]; then
2-
if [ -x %{_sysconfdir}/init.d/mysql ] ; then
3-
# only restart the server if it was alredy running
4-
if %{_sysconfdir}/init.d/mysql status > /dev/null 2>&1; then
5-
%{_sysconfdir}/init.d/mysql restart
6-
fi
7-
fi
2+
# request the server restart
3+
echo > %{restart_flag}
84
fi
95

106
if [ $1 = 0 ] ; then

0 commit comments

Comments
 (0)