فهرست منبع

Merge pull request #3805 from PatTheMav/macos-cef-4183

CI: Add necessary changes for CEF 4183
Jim 4 سال پیش
والد
کامیت
ddc5af2e08

+ 56 - 26
.github/workflows/main.yml

@@ -136,7 +136,8 @@ jobs:
         run: |
           mkdir ./build
           cd ./build
-          cmake -DENABLE_UNIT_TESTS=YES -DENABLE_SPARKLE_UPDATER=ON -DDISABLE_PYTHON=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ env.MIN_MACOS_VERSION }} -DQTDIR="/tmp/obsdeps" -DSWIGDIR="/tmp/obsdeps" -DDepsPath="/tmp/obsdeps" -DVLCPath="${{ github.workspace }}/cmbuild/vlc-${{ env.VLC_VERSION }}" -DENABLE_VLC=ON -DBUILD_BROWSER=ON -DBROWSER_DEPLOY=ON -DWITH_RTMPS=ON -DCEF_ROOT_DIR="${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64" ..
+          LEGACY_BROWSER="$(test "${{ env.CEF_BUILD_VERSION }}" -le 3770 && echo "ON" || echo "OFF")"
+          cmake -DENABLE_UNIT_TESTS=YES -DENABLE_SPARKLE_UPDATER=ON -DDISABLE_PYTHON=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ env.MIN_MACOS_VERSION }} -DQTDIR="/tmp/obsdeps" -DSWIGDIR="/tmp/obsdeps" -DDepsPath="/tmp/obsdeps" -DVLCPath="${{ github.workspace }}/cmbuild/vlc-${{ env.VLC_VERSION }}" -DENABLE_VLC=ON -DBUILD_BROWSER=ON -DBROWSER_LEGACY=$LEGACY_BROWSER -DWITH_RTMPS=ON -DCEF_ROOT_DIR="${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64" ..
       - name: 'Build'
         shell: bash
         working-directory: ${{ github.workspace }}/build
@@ -169,9 +170,16 @@ jobs:
           mkdir -p OBS.app/Contents/MacOS
           mkdir OBS.app/Contents/PlugIns
           mkdir OBS.app/Contents/Resources
+          mkdir OBS.app/Contents/Frameworks
 
           cp rundir/RelWithDebInfo/bin/obs ./OBS.app/Contents/MacOS
           cp rundir/RelWithDebInfo/bin/obs-ffmpeg-mux ./OBS.app/Contents/MacOS
+          if ! [ "${{ env.CEF_BUILD_VERSION }}" -le 3770 ]; then
+            cp -R "rundir/RelWithDebInfo/bin/OBS Helper.app" "./OBS.app/Contents/Frameworks/OBS Helper.app"
+            cp -R "rundir/RelWithDebInfo/bin/OBS Helper (GPU).app" "./OBS.app/Contents/Frameworks/OBS Helper (GPU).app"
+            cp -R "rundir/RelWithDebInfo/bin/OBS Helper (Plugin).app" "./OBS.app/Contents/Frameworks/OBS Helper (Plugin).app"
+            cp -R "rundir/RelWithDebInfo/bin/OBS Helper (Renderer).app" "./OBS.app/Contents/Frameworks/OBS Helper (Renderer).app"
+          fi
           cp rundir/RelWithDebInfo/bin/libobsglad.0.dylib ./OBS.app/Contents/MacOS
           cp -R rundir/RelWithDebInfo/data ./OBS.app/Contents/Resources
           cp ../CI/scripts/macos/app/AppIcon.icns ./OBS.app/Contents/Resources
@@ -185,35 +193,47 @@ jobs:
             rm -rf ./OBS.app/Contents/Resources/data/obs-scripting/
           fi
 
+          BUNDLE_PLUGINS=(
+            ./OBS.app/Contents/PlugIns/coreaudio-encoder.so
+            ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so
+            ./OBS.app/Contents/PlugIns/decklink-captions.so
+            ./OBS.app/Contents/PlugIns/frontend-tools.so
+            ./OBS.app/Contents/PlugIns/image-source.so
+            ./OBS.app/Contents/PlugIns/linux-jack.so
+            ./OBS.app/Contents/PlugIns/mac-avcapture.so
+            ./OBS.app/Contents/PlugIns/mac-capture.so
+            ./OBS.app/Contents/PlugIns/mac-decklink.so
+            ./OBS.app/Contents/PlugIns/mac-syphon.so
+            ./OBS.app/Contents/PlugIns/mac-vth264.so
+            ./OBS.app/Contents/PlugIns/mac-virtualcam.so
+            ./OBS.app/Contents/PlugIns/obs-browser.so
+            ./OBS.app/Contents/PlugIns/obs-ffmpeg.so
+            ./OBS.app/Contents/PlugIns/obs-filters.so
+            ./OBS.app/Contents/PlugIns/obs-transitions.so
+            ./OBS.app/Contents/PlugIns/obs-vst.so
+            ./OBS.app/Contents/PlugIns/rtmp-services.so
+            ./OBS.app/Contents/MacOS/obs-ffmpeg-mux
+            ./OBS.app/Contents/MacOS/obslua.so
+            ./OBS.app/Contents/PlugIns/obs-x264.so
+            ./OBS.app/Contents/PlugIns/text-freetype2.so
+            ./OBS.app/Contents/PlugIns/obs-libfdk.so
+            ./OBS.app/Contents/PlugIns/obs-outputs.so
+          )
+
+          if ! [ "${{ env.CEF_BUILD_VERSION }}" -le 3770 ]; then
           ../CI/scripts/macos/app/dylibBundler -cd -of -a ./OBS.app -q -f \
             -s ./OBS.app/Contents/MacOS \
             -s "${{ github.workspace }}/cmbuild/sparkle/Sparkle.framework" \
             -s ./rundir/RelWithDebInfo/bin \
-            -x ./OBS.app/Contents/PlugIns/coreaudio-encoder.so \
-            -x ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so \
-            -x ./OBS.app/Contents/PlugIns/decklink-captions.so \
-            -x ./OBS.app/Contents/PlugIns/frontend-tools.so \
-            -x ./OBS.app/Contents/PlugIns/image-source.so \
-            -x ./OBS.app/Contents/PlugIns/linux-jack.so \
-            -x ./OBS.app/Contents/PlugIns/mac-avcapture.so \
-            -x ./OBS.app/Contents/PlugIns/mac-capture.so \
-            -x ./OBS.app/Contents/PlugIns/mac-decklink.so \
-            -x ./OBS.app/Contents/PlugIns/mac-syphon.so \
-            -x ./OBS.app/Contents/PlugIns/mac-vth264.so \
-            -x ./OBS.app/Contents/PlugIns/mac-virtualcam.so \
-            -x ./OBS.app/Contents/PlugIns/obs-browser.so \
-            -x ./OBS.app/Contents/PlugIns/obs-browser-page \
-            -x ./OBS.app/Contents/PlugIns/obs-ffmpeg.so \
-            -x ./OBS.app/Contents/PlugIns/obs-filters.so \
-            -x ./OBS.app/Contents/PlugIns/obs-transitions.so \
-            -x ./OBS.app/Contents/PlugIns/obs-vst.so \
-            -x ./OBS.app/Contents/PlugIns/rtmp-services.so \
-            -x ./OBS.app/Contents/MacOS/obs-ffmpeg-mux \
-            -x ./OBS.app/Contents/MacOS/obslua.so \
-            -x ./OBS.app/Contents/PlugIns/obs-x264.so \
-            -x ./OBS.app/Contents/PlugIns/text-freetype2.so \
-            -x ./OBS.app/Contents/PlugIns/obs-libfdk.so \
-            -x ./OBS.app/Contents/PlugIns/obs-outputs.so
+            $(echo "${BUNDLE_PLUGINS[@]/#/-x }")
+          else
+          ../CI/scripts/macos/app/dylibBundler -cd -of -a ./OBS.app -q -f \
+            -s ./OBS.app/Contents/MacOS \
+            -s "${{ github.workspace }}/cmbuild/sparkle/Sparkle.framework" \
+            -s ./rundir/RelWithDebInfo/bin \
+            $(echo "${BUNDLE_PLUGINS[@]/#/-x }") \
+            -x ./OBS.app/Contents/PlugIns/obs-browser-page
+          fi
 
           mv ./libobs-opengl/libobs-opengl.so ./OBS.app/Contents/Frameworks
 
@@ -250,12 +270,22 @@ jobs:
           codesign --force --options runtime --sign "${SIGN_IDENTITY:--}" "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/libswiftshader_libEGL.dylib"
           codesign --force --options runtime --sign "${SIGN_IDENTITY:--}" "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/libGLESv2.dylib"
           codesign --force --options runtime --sign "${SIGN_IDENTITY:--}" "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/libswiftshader_libGLESv2.dylib"
+          if ! [ "${{ env.CEF_BUILD_VERSION }}" -le 3770 ]; then
+            codesign --force --options runtime --sign "${SIGN_IDENTITY:--}" "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/libvk_swiftshader.dylib"
+          fi
           codesign --force --options runtime --sign "${SIGN_IDENTITY:--}" --deep "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework"
 
           codesign --force --options runtime --deep --sign "${SIGN_IDENTITY:--}" "./OBS.app/Contents/Resources/data/obs-mac-virtualcam.plugin"
 
           codesign --force --options runtime --entitlements "../CI/scripts/macos/app/entitlements.plist" --sign "${SIGN_IDENTITY:--}" --deep ./OBS.app
 
+          if ! [ "${{ env.CEF_BUILD_VERSION }}" -le 3770 ]; then
+            codesign --force --options runtime --sign "${SIGN_IDENTITY:--}" --deep "./OBS.app/Contents/Frameworks/OBS Helper.app"
+            codesign --force --options runtime --entitlements "../CI/scripts/macos/helpers/helper-gpu-entitlements.plist" --sign "${SIGN_IDENTITY:--}" --deep "./OBS.app/Contents/Frameworks/OBS Helper (GPU).app"
+            codesign --force --options runtime --entitlements "../CI/scripts/macos/helpers/helper-plugin-entitlements.plist" --sign "${SIGN_IDENTITY:--}" --deep "./OBS.app/Contents/Frameworks/OBS Helper (Plugin).app"
+            codesign --force --options runtime --entitlements "../CI/scripts/macos/helpers/helper-renderer-entitlements.plist" --sign "${SIGN_IDENTITY:--}" --deep "./OBS.app/Contents/Frameworks/OBS Helper (Renderer).app"
+          fi
+
           codesign -dvv ./OBS.app
       - name: 'Package'
         if: success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1')

+ 65 - 32
CI/full-build-macos.sh

@@ -278,7 +278,7 @@ configure_obs_build() {
         -DDepsPath="/tmp/obsdeps" \
         -DVLCPath="${DEPS_BUILD_DIR}/vlc-${VLC_VERSION:-${CI_VLC_VERSION}}" \
         -DBUILD_BROWSER=ON \
-        -DBROWSER_DEPLOY=ON \
+        -DBROWSER_LEGACY="$(test "${CEF_BUILD_VERSION:-${CI_CEF_VERSION}}" -le 3770 && echo "ON" || echo "OFF")" \
         -DWITH_RTMPS=ON \
         -DCEF_ROOT_DIR="${DEPS_BUILD_DIR}/cef_binary_${CEF_BUILD_VERSION:-${CI_CEF_VERSION}}_macosx64" \
         -DCMAKE_BUILD_TYPE="${BUILD_CONFIG}" \
@@ -304,37 +304,49 @@ bundle_dylibs() {
     hr "Bundle dylibs for macOS application"
 
     step "Run dylibBundler.."
-    ${CI_SCRIPTS}/app/dylibbundler -cd -of -a ./OBS.app -q -f \
-        -s ./OBS.app/Contents/MacOS \
-        -s "${DEPS_BUILD_DIR}/sparkle/Sparkle.framework" \
-        -s ./rundir/${BUILD_CONFIG}/bin/ \
-        -x ./OBS.app/Contents/PlugIns/coreaudio-encoder.so \
-        -x ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so \
-        -x ./OBS.app/Contents/PlugIns/decklink-captions.so \
-        -x ./OBS.app/Contents/PlugIns/frontend-tools.so \
-        -x ./OBS.app/Contents/PlugIns/image-source.so \
-        -x ./OBS.app/Contents/PlugIns/linux-jack.so \
-        -x ./OBS.app/Contents/PlugIns/mac-avcapture.so \
-        -x ./OBS.app/Contents/PlugIns/mac-capture.so \
-        -x ./OBS.app/Contents/PlugIns/mac-decklink.so \
-        -x ./OBS.app/Contents/PlugIns/mac-syphon.so \
-        -x ./OBS.app/Contents/PlugIns/mac-vth264.so \
-        -x ./OBS.app/Contents/PlugIns/mac-virtualcam.so \
-        -x ./OBS.app/Contents/PlugIns/obs-browser.so \
-        -x ./OBS.app/Contents/PlugIns/obs-browser-page \
-        -x ./OBS.app/Contents/PlugIns/obs-ffmpeg.so \
-        -x ./OBS.app/Contents/PlugIns/obs-filters.so \
-        -x ./OBS.app/Contents/PlugIns/obs-transitions.so \
-        -x ./OBS.app/Contents/PlugIns/obs-vst.so \
-        -x ./OBS.app/Contents/PlugIns/rtmp-services.so \
-        -x ./OBS.app/Contents/MacOS/obs-ffmpeg-mux \
-        -x ./OBS.app/Contents/MacOS/obslua.so \
-        -x ./OBS.app/Contents/PlugIns/obs-x264.so \
-        -x ./OBS.app/Contents/PlugIns/text-freetype2.so \
-        -x ./OBS.app/Contents/PlugIns/obs-libfdk.so \
-        -x ./OBS.app/Contents/PlugIns/obs-outputs.so
-    step "Move libobs-opengl to final destination"
 
+    BUNDLE_PLUGINS=(
+        ./OBS.app/Contents/PlugIns/coreaudio-encoder.so
+        ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so
+        ./OBS.app/Contents/PlugIns/decklink-captions.so
+        ./OBS.app/Contents/PlugIns/frontend-tools.so
+        ./OBS.app/Contents/PlugIns/image-source.so
+        ./OBS.app/Contents/PlugIns/linux-jack.so
+        ./OBS.app/Contents/PlugIns/mac-avcapture.so
+        ./OBS.app/Contents/PlugIns/mac-capture.so
+        ./OBS.app/Contents/PlugIns/mac-decklink.so
+        ./OBS.app/Contents/PlugIns/mac-syphon.so
+        ./OBS.app/Contents/PlugIns/mac-vth264.so
+        ./OBS.app/Contents/PlugIns/mac-virtualcam.so
+        ./OBS.app/Contents/PlugIns/obs-browser.so
+        ./OBS.app/Contents/PlugIns/obs-ffmpeg.so
+        ./OBS.app/Contents/PlugIns/obs-filters.so
+        ./OBS.app/Contents/PlugIns/obs-transitions.so
+        ./OBS.app/Contents/PlugIns/obs-vst.so
+        ./OBS.app/Contents/PlugIns/rtmp-services.so
+        ./OBS.app/Contents/MacOS/obs-ffmpeg-mux
+        ./OBS.app/Contents/MacOS/obslua.so
+        ./OBS.app/Contents/PlugIns/obs-x264.so
+        ./OBS.app/Contents/PlugIns/text-freetype2.so
+        ./OBS.app/Contents/PlugIns/obs-libfdk.so
+        ./OBS.app/Contents/PlugIns/obs-outputs.so
+        )
+    if ! [ "${CEF_BUILD_VERSION:-${CI_CEF_VERSION}}" -le 3770 ]; then
+        ${CI_SCRIPTS}/app/dylibbundler -cd -of -a ./OBS.app -q -f \
+            -s ./OBS.app/Contents/MacOS \
+            -s "${DEPS_BUILD_DIR}/sparkle/Sparkle.framework" \
+            -s ./rundir/${BUILD_CONFIG}/bin/ \
+            $(echo "${BUNDLE_PLUGINS[@]/#/-x }")
+    else
+        ${CI_SCRIPTS}/app/dylibbundler -cd -of -a ./OBS.app -q -f \
+            -s ./OBS.app/Contents/MacOS \
+            -s "${DEPS_BUILD_DIR}/sparkle/Sparkle.framework" \
+            -s ./rundir/${BUILD_CONFIG}/bin/ \
+            $(echo "${BUNDLE_PLUGINS[@]/#/-x }") \
+            -x ./OBS.app/Contents/PlugIns/obs-browser-page
+    fi
+
+    step "Move libobs-opengl to final destination"
     if [ -f "./libobs-opengl/libobs-opengl.so" ]; then
         cp ./libobs-opengl/libobs-opengl.so ./OBS.app/Contents/Frameworks
     else
@@ -380,10 +392,17 @@ prepare_macos_bundle() {
     mkdir -p OBS.app/Contents/MacOS
     mkdir OBS.app/Contents/PlugIns
     mkdir OBS.app/Contents/Resources
+    mkdir OBS.app/Contents/Frameworks
 
     cp rundir/${BUILD_CONFIG}/bin/obs ./OBS.app/Contents/MacOS
     cp rundir/${BUILD_CONFIG}/bin/obs-ffmpeg-mux ./OBS.app/Contents/MacOS
     cp rundir/${BUILD_CONFIG}/bin/libobsglad.0.dylib ./OBS.app/Contents/MacOS
+    if ! [ "${CEF_BUILD_VERSION:-${CI_CEF_VERSION}}" -le 3770 ]; then
+        cp -R "rundir/${BUILD_CONFIG}/bin/OBS Helper.app" "./OBS.app/Contents/Frameworks/OBS Helper.app"
+        cp -R "rundir/${BUILD_CONFIG}/bin/OBS Helper (GPU).app" "./OBS.app/Contents/Frameworks/OBS Helper (GPU).app"
+        cp -R "rundir/${BUILD_CONFIG}/bin/OBS Helper (Plugin).app" "./OBS.app/Contents/Frameworks/OBS Helper (Plugin).app"
+        cp -R "rundir/${BUILD_CONFIG}/bin/OBS Helper (Renderer).app" "./OBS.app/Contents/Frameworks/OBS Helper (Renderer).app"
+    fi
     cp -R rundir/${BUILD_CONFIG}/data ./OBS.app/Contents/Resources
     cp ${CI_SCRIPTS}/app/AppIcon.icns ./OBS.app/Contents/Resources
     cp -R rundir/${BUILD_CONFIG}/obs-plugins/ ./OBS.app/Contents/PlugIns
@@ -507,7 +526,10 @@ codesign_bundle() {
     codesign --force --options runtime --sign "${CODESIGN_IDENT}" "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/libswiftshader_libEGL.dylib"
     codesign --force --options runtime --sign "${CODESIGN_IDENT}" "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/libGLESv2.dylib"
     codesign --force --options runtime --sign "${CODESIGN_IDENT}" "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/libswiftshader_libGLESv2.dylib"
-    codesign --force --options runtime --sign "${CODESIGN_IDENT}" --deep "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework"
+    if ! [ "${CEF_BUILD_VERSION:-${CI_CEF_VERSION}}" -le 3770 ]; then
+        codesign --force --options runtime --sign "${CODESIGN_IDENT}" "./OBS.app/Contents/Frameworks/Chromium Embedded Framework.framework/Libraries/libvk_swiftshader.dylib"
+    fi
+
     echo -n "${COLOR_RESET}"
 
     step "Code-sign DAL Plugin..."
@@ -519,6 +541,17 @@ codesign_bundle() {
     echo -n "${COLOR_ORANGE}"
     codesign --force --options runtime --entitlements "${CI_SCRIPTS}/app/entitlements.plist" --sign "${CODESIGN_IDENT}" --deep ./OBS.app
     echo -n "${COLOR_RESET}"
+
+    if ! [ "${CEF_BUILD_VERSION:-${CI_CEF_VERSION}}" -le 3770 ]; then
+        step "Code-sign CEF helper apps..."
+        echo -n "${COLOR_ORANGE}"
+        codesign --force --options runtime --sign "${CODESIGN_IDENT}" --deep "./OBS.app/Contents/Frameworks/OBS Helper.app"
+        codesign --force --options runtime --entitlements "${CI_SCRIPTS}/helpers/helper-gpu-entitlements.plist" --sign "${CODESIGN_IDENT}" --deep "./OBS.app/Contents/Frameworks/OBS Helper (GPU).app"
+        codesign --force --options runtime --entitlements "${CI_SCRIPTS}/helpers/helper-plugin-entitlements.plist" --sign "${CODESIGN_IDENT}" --deep "./OBS.app/Contents/Frameworks/OBS Helper (Plugin).app"
+        codesign --force --options runtime --entitlements "${CI_SCRIPTS}/helpers/helper-renderer-entitlements.plist" --sign "${CODESIGN_IDENT}" --deep "./OBS.app/Contents/Frameworks/OBS Helper (Renderer).app"
+        echo -n "${COLOR_RESET}"
+    fi
+
     step "Check code-sign result..."
     codesign -dvv ./OBS.app
 }

+ 8 - 0
CI/scripts/macos/helpers/helper-gpu-entitlements.plist

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+    <key>com.apple.security.cs.allow-jit</key>
+    <true/>
+</dict>
+</plist>

+ 10 - 0
CI/scripts/macos/helpers/helper-plugin-entitlements.plist

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
+    <true/>
+    <key>com.apple.security.cs.disable-library-validation</key>
+    <true/>
+</dict>
+</plist>

+ 8 - 0
CI/scripts/macos/helpers/helper-renderer-entitlements.plist

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+    <key>com.apple.security.cs.allow-jit</key>
+    <true/>
+</dict>
+</plist>