Skip to content

Commit 2b926b9

Browse files
ReSigning macOS package
1 parent b76ccd2 commit 2b926b9

File tree

2 files changed

+37
-28
lines changed

2 files changed

+37
-28
lines changed

cmake/Dependencies.cmake

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@ macro(DeployMacOS TARGET)
99
OUTPUT_STRIP_TRAILING_WHITESPACE
1010
)
1111

12-
install(CODE "set(TARGET_FILE \"${TARGET_FILE}\")" COMPONENT "Hyperion")
13-
install(CODE "set(TARGET_BUNDLE_NAME \"${TARGET}.app\")" COMPONENT "Hyperion")
14-
install(CODE "set(PLUGIN_DIR \"${QT_PLUGIN_DIR}\")" COMPONENT "Hyperion")
15-
install(CODE "set(BUILD_DIR \"${CMAKE_BINARY_DIR}\")" COMPONENT "Hyperion")
12+
install(CODE "set(TARGET_FILE \"${TARGET_FILE}\")" COMPONENT "Hyperion")
13+
install(CODE "set(TARGET_BUNDLE_NAME \"${TARGET}.app\")" COMPONENT "Hyperion")
14+
install(CODE "set(PLUGIN_DIR \"${QT_PLUGIN_DIR}\")" COMPONENT "Hyperion")
1615
install(CODE "set(ENABLE_EFFECTENGINE \"${ENABLE_EFFECTENGINE}\")" COMPONENT "Hyperion")
1716

1817
install(CODE [[
1918

19+
set(BUNDLE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}")
20+
2021
file(GET_RUNTIME_DEPENDENCIES
2122
EXECUTABLES ${TARGET_FILE}
2223
RESOLVED_DEPENDENCIES_VAR resolved_deps
@@ -28,13 +29,13 @@ macro(DeployMacOS TARGET)
2829
if (${_index} GREATER -1)
2930
file(INSTALL
3031
FILES "${dependency}"
31-
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/Frameworks"
32+
DESTINATION "${BUNDLE_INSTALL_DIR}/Contents/Frameworks"
3233
TYPE SHARED_LIBRARY
3334
)
3435
else()
3536
file(INSTALL
3637
FILES "${dependency}"
37-
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/lib"
38+
DESTINATION "${BUNDLE_INSTALL_DIR}/Contents/lib"
3839
TYPE SHARED_LIBRARY
3940
FOLLOW_SYMLINK_CHAIN
4041
)
@@ -58,18 +59,18 @@ macro(DeployMacOS TARGET)
5859

5960
foreach(DEPENDENCY ${PLUGINS})
6061
file(INSTALL
61-
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/lib"
62+
DESTINATION "${BUNDLE_INSTALL_DIR}/Contents/lib"
6263
TYPE SHARED_LIBRARY
6364
FILES ${DEPENDENCY}
6465
FOLLOW_SYMLINK_CHAIN
6566
)
6667
endforeach()
6768

6869
get_filename_component(singleQtLib ${file} NAME)
69-
list(APPEND QT_PLUGINS "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/plugins/${PLUGIN}/${singleQtLib}")
70+
list(APPEND QT_PLUGINS "${BUNDLE_INSTALL_DIR}/Contents/plugins/${PLUGIN}/${singleQtLib}")
7071
file(INSTALL
7172
FILES ${file}
72-
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/plugins/${PLUGIN}"
73+
DESTINATION "${BUNDLE_INSTALL_DIR}/Contents/plugins/${PLUGIN}"
7374
TYPE SHARED_LIBRARY
7475
)
7576

@@ -78,10 +79,10 @@ macro(DeployMacOS TARGET)
7879
endforeach()
7980

8081
include(BundleUtilities)
81-
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")
82+
fixup_bundle("${BUNDLE_INSTALL_DIR}" "${QT_PLUGINS}" "${BUNDLE_INSTALL_DIR}/Contents/lib" IGNORE_ITEM "python;python3;Python;Python3;.Python;.Python3")
83+
file(REMOVE_RECURSE "${BUNDLE_INSTALL_DIR}/Contents/lib")
8284

8385
if(ENABLE_EFFECTENGINE)
84-
8586
# Detect the Python version and modules directory
8687
if(NOT CMAKE_VERSION VERSION_LESS "3.12")
8788
find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
@@ -98,24 +99,37 @@ macro(DeployMacOS TARGET)
9899

99100
# Copy Python modules to '/../Frameworks/Python.framework/Versions/Current/lib/PythonMAJOR.MINOR' and ignore the unnecessary stuff listed below
100101
if (PYTHON_MODULES_DIR)
102+
set(PYTHON_FRAMEWORK "${BUNDLE_INSTALL_DIR}/Contents/Frameworks/Python.framework")
101103
file(
102104
COPY ${PYTHON_MODULES_DIR}/
103-
DESTINATION "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/Frameworks/Python.framework/Versions/Current/lib/python${PYTHON_VERSION_MAJOR_MINOR}"
104-
PATTERN "*.pyc" EXCLUDE # compiled bytecodes
105-
PATTERN "__pycache__" EXCLUDE # any cache
106-
PATTERN "config-${PYTHON_VERSION_MAJOR_MINOR}*" EXCLUDE # static libs
107-
PATTERN "lib2to3" EXCLUDE # automated Python 2 to 3 code translation
108-
PATTERN "tkinter" EXCLUDE # Tk interface
109-
PATTERN "turtledemo" EXCLUDE # Tk demo folder
110-
PATTERN "turtle.py" EXCLUDE # Tk demo file
111-
PATTERN "test" EXCLUDE # unittest module
112-
PATTERN "sitecustomize.py" EXCLUDE # site-specific configs
105+
DESTINATION "${PYTHON_FRAMEWORK}/Versions/Current/lib/python${PYTHON_VERSION_MAJOR_MINOR}"
106+
PATTERN "*.pyc" EXCLUDE # compiled bytecodes
107+
PATTERN "__pycache__" EXCLUDE # any cache
108+
PATTERN "config-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}*" EXCLUDE # static libs
109+
PATTERN "lib2to3" EXCLUDE # automated Python 2 to 3 code translation
110+
PATTERN "tkinter" EXCLUDE # Tk interface
111+
PATTERN "lib-dynload/_tkinter.*" EXCLUDE
112+
PATTERN "idlelib" EXCLUDE
113+
PATTERN "turtle.py" EXCLUDE # Tk demo
114+
PATTERN "test" EXCLUDE # unittest module
115+
PATTERN "sitecustomize.py" EXCLUDE # site-specific configs
113116
)
114117
endif(PYTHON_MODULES_DIR)
115118
endif(ENABLE_EFFECTENGINE)
116119

117-
file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/${TARGET_BUNDLE_NAME}/Contents/lib")
118-
file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/share")
120+
file(GLOB_RECURSE LIBS FOLLOW_SYMLINKS "${BUNDLE_INSTALL_DIR}/*.dylib")
121+
file(GLOB FRAMEWORKS FOLLOW_SYMLINKS LIST_DIRECTORIES ON "${BUNDLE_INSTALL_DIR}/Contents/Frameworks/*")
122+
foreach(item ${LIBS} ${FRAMEWORKS} ${PYTHON_FRAMEWORK} ${BUNDLE_INSTALL_DIR})
123+
set(cmd codesign --deep --force --sign - "${item}")
124+
execute_process(
125+
COMMAND ${cmd}
126+
RESULT_VARIABLE codesign_result
127+
)
128+
129+
if(NOT codesign_result EQUAL 0)
130+
message(WARNING "macOS signing failed; ${cmd} returned ${codesign_result}")
131+
endif()
132+
endforeach()
119133

120134
]] COMPONENT "Hyperion")
121135

cmake/osxbundle/AppleScript.scpt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,6 @@ on run argv
4949
delay 1
5050
close
5151

52-
-- one last open and close so you can see everything looks correct
53-
open
54-
delay 5
55-
close
56-
5752
end tell
5853

5954
delay 1

0 commit comments

Comments
 (0)