-
Notifications
You must be signed in to change notification settings - Fork 0
/
macdeployqt_enhanced.sh
69 lines (49 loc) · 1.93 KB
/
macdeployqt_enhanced.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
#
# Perform the dependecies fetching with macdeployqt and my code.
set -e
set -o pipefail
set -u
# ====== Input variables testing ======
# "set -u" takes effect.
echo "MACDEPLOYQT_PATH = '${MACDEPLOYQT_PATH}'"
echo "APP_FILE_PATH = '${APP_FILE_PATH}'"
# ====== Variables preparation ======
echo
# Remove the trailing slash from the app path
APP_FILE_PATH="$( dirname "${APP_FILE_PATH}" )/$( basename "${APP_FILE_PATH}" )"
echo "APP_FILE_PATH = '${APP_FILE_PATH}'"
# Framework dir in app bundle (non-existing)
FRAMEWORKS_DIR_PATH="${APP_FILE_PATH}/Contents/Frameworks"
echo "FRAMEWORKS_DIR_PATH = '${FRAMEWORKS_DIR_PATH}'"
# Call macdeployqt
echo
echo '====== Calling macdeployqt ======'
"${MACDEPLOYQT_PATH}" "${APP_FILE_PATH}" -verbose=3
# Process 3rd party dependencies
echo
echo '====== Process 3rd party dependencies ======'
find "${FRAMEWORKS_DIR_PATH}" -type f | \
while read -r lib_path; do
echo 'Log: Using otool:'
echo "Log: inspecting \"${lib_path}\""
otool -L "${lib_path}" | awk '{ if (NR > 1) { print $1 } }' | \
while read -r lib_depends; do
echo "Log: found dependency: ${lib_depends}"
if [[ "${lib_depends}" = '/usr/local/'* ]]; then
lib_depends_path_old="${lib_depends}"
lib_depends_path_new="@executable_path/../Frameworks/$( \
basename "${lib_depends_path_old}" \
)"
echo 'Log: Using install_name_tool:'
echo "Log: in \"${lib_path}\""
echo "Log: change reference \"${lib_depends_path_old}\""
echo "Log: to \"${lib_depends_path_new}\""
install_name_tool -change \
"${lib_depends_path_old}" \
"${lib_depends_path_new}" \
"${lib_path}"
fi
done
echo
done