Unverified Commit b8c519e9 authored by Martin Weinelt's avatar Martin Weinelt Committed by GitHub
Browse files

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

parents 00b541f8 24c57a58
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -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.