Adjust macos dylib references to keep gatekeeper happy. (#3482)

macOS gatekeeper wil block a properly signed/notarized .app from running if it contains absolute rpath references pointing outside the .app.
This commit is contained in:
karliss 2025-05-06 10:19:34 +03:00 committed by GitHub
parent ae2ca5b50d
commit 2f8d76f1e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 21 additions and 2 deletions

View file

@ -459,6 +459,7 @@ jobs:
run: |
export MACOSX_DEPLOYMENT_TARGET=10.15
scripts/fetch_deps.sh
install_name_tool -delete_rpath /Users/runner/work/cutter-deps/cutter-deps/qt/lib ./cutter-deps/pyside/lib/libpyside6.cpython-312-darwin.6.7.2.dylib #TODO: do this in cutter-deps
source cutter-deps/env.sh
set -euo pipefail
export PATH=/usr/local/opt/llvm/bin:$PATH

View file

@ -63,7 +63,7 @@ set (RZ_LIBS rz_core rz_config rz_cons rz_io rz_util rz_flag rz_arch rz_debug
rz_hash rz_bin rz_lang rz_il rz_bp rz_egg rz_reg rz_search rz_syscall
rz_socket rz_magic rz_crypto rz_type rz_diff rz_sign rz_demangler)
set (RZ_EXTRA_LIBS rz_main)
set (RZ_BIN rz-bin rizin rz-diff rz-find rz-gg rz-hash rz-run rz-asm rz-ax)
set (RZ_BIN rz-bin rizin rz-diff rz-find rz-gg rz-hash rz-run rz-asm rz-ax rz-sign)
target_link_libraries(Rizin INTERFACE
${RZ_LIBS})
@ -87,5 +87,6 @@ if (WIN32)
COMPONENT Devel
PATTERN "*.pdb" EXCLUDE)
else ()
install(DIRECTORY "${RIZIN_INSTALL_DIR}/" DESTINATION "." USE_SOURCE_PERMISSIONS)
install(DIRECTORY "${RIZIN_INSTALL_DIR}/" DESTINATION "." USE_SOURCE_PERMISSIONS
PATTERN "rz-test" EXCLUDE)
endif()

3
dist/CMakeLists.txt vendored
View file

@ -106,6 +106,9 @@ if(APPLE)
foreach(_lib ${RZ_LIBS})
list(APPEND ADJUST_RIZIN_LIBS "${RIZIN_INSTALL_DIR}/lib/lib${_lib}.dylib")
endforeach()
foreach(_lib ${RZ_EXTRA_LIBS})
list(APPEND ADJUST_RIZIN_LIBS "${RIZIN_INSTALL_DIR}/lib/lib${_lib}.dylib")
endforeach()
if(CUTTER_PACKAGE_DEPENDENCIES AND CUTTER_ENABLE_PYTHON)
set(EMBED_PYTHON_SH "${CMAKE_CURRENT_SOURCE_DIR}/appbundle_embed_python.sh")

View file

@ -5,6 +5,8 @@ set(INFO_PLIST_PATH "@CPACK_BUNDLE_PLIST@")
set(ADJUST_RIZIN_LIBS "@ADJUST_RIZIN_LIBS@")
set(CUTTER_PACKAGE_DEPENDENCIES "@CUTTER_PACKAGE_DEPENDENCIES@")
set(CUTTER_ENABLE_PYTHON "@CUTTER_ENABLE_PYTHON@")
set(RZ_BIN "@RZ_BIN@")
macro(run_or_die)
execute_process(${ARGV} RESULT_VARIABLE PROC_RESULT)
@ -50,6 +52,18 @@ foreach(_lib ${ADJUST_RIZIN_LIBS})
"${CMAKE_INSTALL_PREFIX}/lib/${_name}")
endforeach()
endforeach()
foreach(_lib ${RZ_BIN})
get_filename_component(_lib "${_lib}" REALPATH)
get_filename_component(_name "${_lib}" NAME)
# Fix every lib for every lib too
foreach(_lib2 ${ADJUST_RIZIN_LIBS})
get_filename_component(_lib2 "${_lib2}" REALPATH)
get_filename_component(_name2 "${_lib2}" NAME)
run_or_die(COMMAND install_name_tool
-change "${_lib2}" "@rpath/${_name2}"
"${CMAKE_INSTALL_PREFIX}/bin/${_name}")
endforeach()
endforeach()
# Add rpaths because macdeployqt fails to do that properly
run_or_die(COMMAND install_name_tool