diff options
author | Mukilan Thiyagarajan <me@mukilan.in> | 2023-05-12 19:03:47 +0530 |
---|---|---|
committer | Mukilan Thiyagarajan <me@mukilan.in> | 2023-05-12 19:03:47 +0530 |
commit | 80087f31c885692569a8ba235327efd055b7e565 (patch) | |
tree | 89888158dea09aa69d1062c1276aad6bcf780b57 /python/servo/build_commands.py | |
parent | d798376d7ce218ccf45b49073e104c0eb80dd470 (diff) | |
download | servo-80087f31c885692569a8ba235327efd055b7e565.tar.gz servo-80087f31c885692569a8ba235327efd055b7e565.zip |
Workaround bug in gstreamer binaries
The official gstreamer .pkg distribution should contain
'relocatable' dylibs, but as discovered in #29732,
some dylibs have absolute links to liblzma.5.dylibs
Since /opt/homebrew is the default install location
on Apple Silicion, this will cause the packaging &
build steps to fail, even if 'xz' package is installed
via homebrew.
This is a temporary fix until upstream fixes the bug
and makes the package truly 'relocatable'.
Signed-off-by: Mukilan Thiyagarajan <me@mukilan.in>
Diffstat (limited to 'python/servo/build_commands.py')
-rw-r--r-- | python/servo/build_commands.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index f5c6e2aa749..6cd4bdc7c45 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -872,6 +872,17 @@ def copy_dependencies(binary_path, lib_path, gst_root): if is_system_library(f): continue full_path = resolve_rpath(f, gst_root) + # fixme(mukilan): this is a temporary solution to a bug + # in the official gstreamer packages. Few gstreamer dylibs + # like 'libavcodec.59.dylib' have absolute paths to liblzma + # instead of @rpath based to be relocatable. The homebrew + # prefix is configurable in general and is /opt/homebrew + # on Apple Silicon + if full_path == "/usr/local/opt/xz/lib/liblzma.5.dylib" and ( + not path.exists("/usr/local/opt/xz") + and path.exists("/opt/homebrew/")): + full_path = "/opt/homebrew/lib/liblzma.5.dylib" + need_relinked = set(otool(full_path)) new_path = path.join(lib_path, path.basename(full_path)) if not path.exists(new_path): |