ReSigning macOS package

This commit is contained in:
Paulchen-Panther 2024-11-16 18:59:12 +01:00
parent b76ccd200b
commit 2b926b969e
2 changed files with 37 additions and 28 deletions

View File

@ -9,14 +9,15 @@ macro(DeployMacOS TARGET)
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE
) )
install(CODE "set(TARGET_FILE \"${TARGET_FILE}\")" COMPONENT "Hyperion") install(CODE "set(TARGET_FILE \"${TARGET_FILE}\")" COMPONENT "Hyperion")
install(CODE "set(TARGET_BUNDLE_NAME \"${TARGET}.app\")" COMPONENT "Hyperion") install(CODE "set(TARGET_BUNDLE_NAME \"${TARGET}.app\")" COMPONENT "Hyperion")
install(CODE "set(PLUGIN_DIR \"${QT_PLUGIN_DIR}\")" COMPONENT "Hyperion") install(CODE "set(PLUGIN_DIR \"${QT_PLUGIN_DIR}\")" COMPONENT "Hyperion")
install(CODE "set(BUILD_DIR \"${CMAKE_BINARY_DIR}\")" COMPONENT "Hyperion")
install(CODE "set(ENABLE_EFFECTENGINE \"${ENABLE_EFFECTENGINE}\")" COMPONENT "Hyperion") install(CODE "set(ENABLE_EFFECTENGINE \"${ENABLE_EFFECTENGINE}\")" COMPONENT "Hyperion")
install(CODE [[ install(CODE [[
set(BUNDLE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}")
file(GET_RUNTIME_DEPENDENCIES file(GET_RUNTIME_DEPENDENCIES
EXECUTABLES ${TARGET_FILE} EXECUTABLES ${TARGET_FILE}
RESOLVED_DEPENDENCIES_VAR resolved_deps RESOLVED_DEPENDENCIES_VAR resolved_deps
@ -28,13 +29,13 @@ macro(DeployMacOS TARGET)
if (${_index} GREATER -1) if (${_index} GREATER -1)
file(INSTALL file(INSTALL
FILES "${dependency}" FILES "${dependency}"
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/Frameworks" DESTINATION "${BUNDLE_INSTALL_DIR}/Contents/Frameworks"
TYPE SHARED_LIBRARY TYPE SHARED_LIBRARY
) )
else() else()
file(INSTALL file(INSTALL
FILES "${dependency}" FILES "${dependency}"
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/lib" DESTINATION "${BUNDLE_INSTALL_DIR}/Contents/lib"
TYPE SHARED_LIBRARY TYPE SHARED_LIBRARY
FOLLOW_SYMLINK_CHAIN FOLLOW_SYMLINK_CHAIN
) )
@ -58,7 +59,7 @@ macro(DeployMacOS TARGET)
foreach(DEPENDENCY ${PLUGINS}) foreach(DEPENDENCY ${PLUGINS})
file(INSTALL file(INSTALL
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/lib" DESTINATION "${BUNDLE_INSTALL_DIR}/Contents/lib"
TYPE SHARED_LIBRARY TYPE SHARED_LIBRARY
FILES ${DEPENDENCY} FILES ${DEPENDENCY}
FOLLOW_SYMLINK_CHAIN FOLLOW_SYMLINK_CHAIN
@ -66,10 +67,10 @@ macro(DeployMacOS TARGET)
endforeach() endforeach()
get_filename_component(singleQtLib ${file} NAME) get_filename_component(singleQtLib ${file} NAME)
list(APPEND QT_PLUGINS "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/plugins/${PLUGIN}/${singleQtLib}") list(APPEND QT_PLUGINS "${BUNDLE_INSTALL_DIR}/Contents/plugins/${PLUGIN}/${singleQtLib}")
file(INSTALL file(INSTALL
FILES ${file} FILES ${file}
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/plugins/${PLUGIN}" DESTINATION "${BUNDLE_INSTALL_DIR}/Contents/plugins/${PLUGIN}"
TYPE SHARED_LIBRARY TYPE SHARED_LIBRARY
) )
@ -78,10 +79,10 @@ macro(DeployMacOS TARGET)
endforeach() endforeach()
include(BundleUtilities) include(BundleUtilities)
fixup_bundle("${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}" "${QT_PLUGINS}" "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/lib" IGNORE_ITEM "python;python3;Python;Python3;.Python;.Python3") fixup_bundle("${BUNDLE_INSTALL_DIR}" "${QT_PLUGINS}" "${BUNDLE_INSTALL_DIR}/Contents/lib" IGNORE_ITEM "python;python3;Python;Python3;.Python;.Python3")
file(REMOVE_RECURSE "${BUNDLE_INSTALL_DIR}/Contents/lib")
if(ENABLE_EFFECTENGINE) if(ENABLE_EFFECTENGINE)
# Detect the Python version and modules directory # Detect the Python version and modules directory
if(NOT CMAKE_VERSION VERSION_LESS "3.12") if(NOT CMAKE_VERSION VERSION_LESS "3.12")
find_package(Python3 COMPONENTS Interpreter Development REQUIRED) find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
@ -98,24 +99,37 @@ macro(DeployMacOS TARGET)
# Copy Python modules to '/../Frameworks/Python.framework/Versions/Current/lib/PythonMAJOR.MINOR' and ignore the unnecessary stuff listed below # Copy Python modules to '/../Frameworks/Python.framework/Versions/Current/lib/PythonMAJOR.MINOR' and ignore the unnecessary stuff listed below
if (PYTHON_MODULES_DIR) if (PYTHON_MODULES_DIR)
set(PYTHON_FRAMEWORK "${BUNDLE_INSTALL_DIR}/Contents/Frameworks/Python.framework")
file( file(
COPY ${PYTHON_MODULES_DIR}/ COPY ${PYTHON_MODULES_DIR}/
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/Frameworks/Python.framework/Versions/Current/lib/python${PYTHON_VERSION_MAJOR_MINOR}" DESTINATION "${PYTHON_FRAMEWORK}/Versions/Current/lib/python${PYTHON_VERSION_MAJOR_MINOR}"
PATTERN "*.pyc" EXCLUDE # compiled bytecodes PATTERN "*.pyc" EXCLUDE # compiled bytecodes
PATTERN "__pycache__" EXCLUDE # any cache PATTERN "__pycache__" EXCLUDE # any cache
PATTERN "config-${PYTHON_VERSION_MAJOR_MINOR}*" EXCLUDE # static libs PATTERN "config-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}*" EXCLUDE # static libs
PATTERN "lib2to3" EXCLUDE # automated Python 2 to 3 code translation PATTERN "lib2to3" EXCLUDE # automated Python 2 to 3 code translation
PATTERN "tkinter" EXCLUDE # Tk interface PATTERN "tkinter" EXCLUDE # Tk interface
PATTERN "turtledemo" EXCLUDE # Tk demo folder PATTERN "lib-dynload/_tkinter.*" EXCLUDE
PATTERN "turtle.py" EXCLUDE # Tk demo file PATTERN "idlelib" EXCLUDE
PATTERN "test" EXCLUDE # unittest module PATTERN "turtle.py" EXCLUDE # Tk demo
PATTERN "sitecustomize.py" EXCLUDE # site-specific configs PATTERN "test" EXCLUDE # unittest module
PATTERN "sitecustomize.py" EXCLUDE # site-specific configs
) )
endif(PYTHON_MODULES_DIR) endif(PYTHON_MODULES_DIR)
endif(ENABLE_EFFECTENGINE) endif(ENABLE_EFFECTENGINE)
file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/lib") file(GLOB_RECURSE LIBS FOLLOW_SYMLINKS "${BUNDLE_INSTALL_DIR}/*.dylib")
file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/share") file(GLOB FRAMEWORKS FOLLOW_SYMLINKS LIST_DIRECTORIES ON "${BUNDLE_INSTALL_DIR}/Contents/Frameworks/*")
foreach(item ${LIBS} ${FRAMEWORKS} ${PYTHON_FRAMEWORK} ${BUNDLE_INSTALL_DIR})
set(cmd codesign --deep --force --sign - "${item}")
execute_process(
COMMAND ${cmd}
RESULT_VARIABLE codesign_result
)
if(NOT codesign_result EQUAL 0)
message(WARNING "macOS signing failed; ${cmd} returned ${codesign_result}")
endif()
endforeach()
]] COMPONENT "Hyperion") ]] COMPONENT "Hyperion")

View File

@ -49,11 +49,6 @@ on run argv
delay 1 delay 1
close close
-- one last open and close so you can see everything looks correct
open
delay 5
close
end tell end tell
delay 1 delay 1