firefox: Don't rely on file extension to identify dynamic libraries (#488112)

This commit is contained in:
Martin Weinelt
2026-02-24 01:01:21 +00:00
committed by GitHub
@@ -423,10 +423,21 @@ let
# Maybe related to how omni.ja file is mmapped into memory. See:
# https://github.com/mozilla/gecko-dev/blob/b1662b447f306e6554647914090d4b73ac8e1664/modules/libjar/nsZipArchive.cpp#L204
#
# The *.dylib files are copied, otherwise some basic functionality, e.g. Crypto API, is broken.
for file in $(find . -name "omni.ja" -o -name "*.dylib"); do
# Mach-O shared libraries must be copied, not symlinked, otherwise some
# functionality like the Crypto API and audio decoding is broken.
find . -type l -print0 |
while IFS= read -r -d "" file; do
case "$(basename "$file")" in
omni.ja)
;;
*)
# Copy if the symlink resolves to a Mach-O dylib
otool -l "$file" 2>/dev/null | grep -q 'LC_ID_DYLIB' || continue
;;
esac
rm "$file"
cp "${browser}/${appPath}/$file" "$file"
cp "${browser}/${appPath}/''${file#./}" "$file"
done
# Copy any embedded .app directories; plugin-container fails to start otherwise.