You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-11-03 17:13:17 +03:00 
			
		
		
		
	fix(installation): set selinux policy handling to the existing build/postInstall_storage_engine.sh and build/preUn_storage_engine.sh
This commit is contained in:
		
				
					committed by
					
						
						Leonid Fedorov
					
				
			
			
				
	
			
			
			
						parent
						
							06889082f1
						
					
				
				
					commit
					3fea9bf825
				
			@@ -8,3 +8,19 @@ fi
 | 
			
		||||
mkdir -p /var/lib/columnstore/local
 | 
			
		||||
columnstore-post-install --rpmmode=$rpmmode
 | 
			
		||||
 | 
			
		||||
# Attempt to load ColumnStore SELinux policy (best-effort, no hard dependency)
 | 
			
		||||
POLICY_PATH="/usr/share/columnstore/policy/selinux/columnstore.pp"
 | 
			
		||||
if command -v getenforce >/dev/null 2>&1 && command -v semodule >/dev/null 2>&1; then
 | 
			
		||||
  MODE=$(getenforce 2>/dev/null || echo Disabled)
 | 
			
		||||
  case "$MODE" in
 | 
			
		||||
    Enforcing|Permissive)
 | 
			
		||||
      if [ -r "$POLICY_PATH" ]; then
 | 
			
		||||
        semodule -i "$POLICY_PATH" || true
 | 
			
		||||
      fi
 | 
			
		||||
      ;;
 | 
			
		||||
    *)
 | 
			
		||||
      :
 | 
			
		||||
      ;;
 | 
			
		||||
  esac
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,13 @@ fi
 | 
			
		||||
 | 
			
		||||
if [ $rpmmode = erase ]; then
 | 
			
		||||
	columnstore-pre-uninstall
 | 
			
		||||
 | 
			
		||||
	# Best-effort removal of ColumnStore SELinux policy on erase
 | 
			
		||||
	if command -v semodule >/dev/null 2>&1; then
 | 
			
		||||
	  if semodule -l 2>/dev/null | grep -q '^columnstore\b'; then
 | 
			
		||||
	    semodule -r columnstore || true
 | 
			
		||||
	  fi
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
 
 | 
			
		||||
@@ -1,28 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# Post-install script to load ColumnStore SELinux policy if SELinux is enabled
 | 
			
		||||
# This script must not introduce new runtime dependencies; it only uses coreutils and typical SELinux tools if present.
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
POLICY_PATH="/usr/share/columnstore/policy/selinux/columnstore.pp"
 | 
			
		||||
 | 
			
		||||
# If SELinux tooling is not present, or policy file missing, silently exit
 | 
			
		||||
command -v getenforce >/dev/null 2>&1 || exit 0
 | 
			
		||||
command -v semodule >/dev/null 2>&1 || exit 0
 | 
			
		||||
 | 
			
		||||
# Only attempt to install when SELinux is enforcing or permissive
 | 
			
		||||
MODE=$(getenforce 2>/dev/null || echo Disabled)
 | 
			
		||||
case "$MODE" in
 | 
			
		||||
  Enforcing|Permissive)
 | 
			
		||||
    if [ -r "$POLICY_PATH" ]; then
 | 
			
		||||
      # Install or upgrade the module; do not fail the entire package if this fails
 | 
			
		||||
      semodule -i "$POLICY_PATH" || true
 | 
			
		||||
    fi
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
    # Disabled or unknown, do nothing
 | 
			
		||||
    :
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# Post-uninstall script to remove ColumnStore SELinux policy module if present
 | 
			
		||||
# No new runtime dependencies; use SELinux tools only if available.
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# If SELinux tooling is not present, silently exit
 | 
			
		||||
command -v semodule >/dev/null 2>&1 || exit 0
 | 
			
		||||
 | 
			
		||||
# Remove the module if it is installed; do not fail package removal if this fails
 | 
			
		||||
if semodule -l 2>/dev/null | grep -q '^columnstore\b'; then
 | 
			
		||||
  semodule -r columnstore || true
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
@@ -63,38 +63,3 @@ install(
 | 
			
		||||
    COMPONENT columnstore-engine
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Register RPM post-install and post-uninstall scripts for the component
 | 
			
		||||
set(_selinux_post "${CMAKE_CURRENT_LIST_DIR}/../build/selinux_policy_rpm_post.sh")
 | 
			
		||||
set(_selinux_postun "${CMAKE_CURRENT_LIST_DIR}/../build/selinux_policy_rpm_postun.sh")
 | 
			
		||||
 | 
			
		||||
# POST_INSTALL: preserve existing script if set by wrapping it
 | 
			
		||||
if(EXISTS "${_selinux_post}")
 | 
			
		||||
    if(DEFINED CPACK_RPM_columnstore-engine_POST_INSTALL_SCRIPT_FILE
 | 
			
		||||
       AND CPACK_RPM_columnstore-engine_POST_INSTALL_SCRIPT_FILE
 | 
			
		||||
    )
 | 
			
		||||
        set(_orig_post "${CPACK_RPM_columnstore-engine_POST_INSTALL_SCRIPT_FILE}")
 | 
			
		||||
        set(_wrap_post "${SELINUX_BUILD_DIR}/post_install_wrapper.sh")
 | 
			
		||||
        file(WRITE "${_wrap_post}" "#!/bin/sh\n\n'${_orig_post}' \"$@\" || true\n'${_selinux_post}' \"$@\" || true\n")
 | 
			
		||||
        execute_process(COMMAND ${CMAKE_COMMAND} -E chmod +x "${_wrap_post}")
 | 
			
		||||
        set(CPACK_RPM_columnstore-engine_POST_INSTALL_SCRIPT_FILE "${_wrap_post}")
 | 
			
		||||
    else()
 | 
			
		||||
        set(CPACK_RPM_columnstore-engine_POST_INSTALL_SCRIPT_FILE "${_selinux_post}")
 | 
			
		||||
    endif()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# POST_UNINSTALL: preserve existing script if set by wrapping it
 | 
			
		||||
if(EXISTS "${_selinux_postun}")
 | 
			
		||||
    if(DEFINED CPACK_RPM_columnstore-engine_POST_UNINSTALL_SCRIPT_FILE
 | 
			
		||||
       AND CPACK_RPM_columnstore-engine_POST_UNINSTALL_SCRIPT_FILE
 | 
			
		||||
    )
 | 
			
		||||
        set(_orig_postun "${CPACK_RPM_columnstore-engine_POST_UNINSTALL_SCRIPT_FILE}")
 | 
			
		||||
        set(_wrap_postun "${SELINUX_BUILD_DIR}/post_uninstall_wrapper.sh")
 | 
			
		||||
        file(WRITE "${_wrap_postun}"
 | 
			
		||||
             "#!/bin/sh\n\n'${_orig_postun}' \"$@\" || true\n'${_selinux_postun}' \"$@\" || true\n"
 | 
			
		||||
        )
 | 
			
		||||
        execute_process(COMMAND ${CMAKE_COMMAND} -E chmod +x "${_wrap_postun}")
 | 
			
		||||
        set(CPACK_RPM_columnstore-engine_POST_UNINSTALL_SCRIPT_FILE "${_wrap_postun}")
 | 
			
		||||
    else()
 | 
			
		||||
        set(CPACK_RPM_columnstore-engine_POST_UNINSTALL_SCRIPT_FILE "${_selinux_postun}")
 | 
			
		||||
    endif()
 | 
			
		||||
endif()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user