Make macdeploy properly handle loader_path and libicudata

This commit is contained in:
Jonas Kvinge 2020-08-02 17:02:28 +02:00
parent db1a6b3e38
commit b3d06c0868
2 changed files with 13 additions and 6 deletions

View File

@ -1,7 +1,5 @@
add_custom_target(dmg
COMMAND /usr/local/opt/qt5/bin/macdeployqt strawberry.app
# macdeploy.py is not picking up libicudata.dylib so manually copy it for now.
COMMAND cp "/usr/local/opt/icu4c/lib/libicudata*.dylib" "${CMAKE_BINARY_DIR}/strawberry.app/Contents/Frameworks"
COMMAND ${CMAKE_SOURCE_DIR}/dist/macos/macdeploy.py strawberry.app
COMMAND create-dmg --volname strawberry --background "${CMAKE_SOURCE_DIR}/dist/macos/dmg_background.png" --app-drop-link 450 218 --icon strawberry.app 150 218 --window-size 600 450 strawberry-${STRAWBERRY_VERSION_PACKAGE}.dmg strawberry.app
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}

View File

@ -27,7 +27,7 @@ import traceback
LOGGER = logging.getLogger('macdeploy')
LIBRARY_SEARCH_PATH = ['/usr/local/lib']
LIBRARY_SEARCH_PATH = ['/usr/local/lib', '/usr/local/opt/icu4c/lib']
FRAMEWORK_SEARCH_PATH = [
'/Library/Frameworks',
@ -193,11 +193,20 @@ def GetBrokenLibraries(binary):
continue # unix style system library
elif re.match(r'^\s*@executable_path', line) or re.match(r'^\s*@rpath', line) or re.match(r'^\s*@loader_path', line):
# Potentially already fixed library
path = line.split('/')[3:]
if path:
relative_path = os.path.join(*path)
if line.count('/') == 1:
relative_path = os.path.join(*line.split('/')[1:])
if not os.path.exists(os.path.join(frameworks_dir, relative_path)):
broken_libs['libs'].append(relative_path)
elif line.count('/') == 2:
relative_path = os.path.join(*line.split('/')[2:])
if not os.path.exists(os.path.join(frameworks_dir, relative_path)):
broken_libs['libs'].append(relative_path)
elif line.count('/') >= 3:
relative_path = os.path.join(*line.split('/')[3:])
if not os.path.exists(os.path.join(frameworks_dir, relative_path)):
broken_libs['frameworks'].append(relative_path)
else:
print "GetBrokenLibraries Error: %s" % line
elif re.search(r'\w+\.framework', line):
broken_libs['frameworks'].append(line)
else: