From 35cc81b91e0564803efb083e9590e6d9855854be Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 00:03:49 +0200 Subject: [PATCH 01/15] Try to set sccache flags on the command line --- .github/workflows/build_and_test.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 8b8e2633..4bef3820 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -38,11 +38,10 @@ jobs: - name: Linux os: ubuntu-22.04 pluginval-binary: ./pluginval - extra-flags: -G Ninja - name: macOS os: macos-14 pluginval-binary: pluginval.app/Contents/MacOS/pluginval - extra-flags: -G Ninja -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" + extra-flags: -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" - name: Windows os: windows-latest pluginval-binary: ./pluginval.exe @@ -93,7 +92,7 @@ jobs: uses: mozilla-actions/sccache-action@v0.0.9 - name: Configure - run: cmake -B ${{ env.BUILD_DIR }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache ${{ matrix.extra-flags }} . + run: cmake -B ${{ env.BUILD_DIR }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -G Ninja ${{ matrix.extra-flags }} -DCMAKE_POLICY_DEFAULT_CMP0141=NEW -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded . - name: Build run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} From f7e98e22d6758aeb832efd4ac6d2a9e261f7c4ae Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 00:05:18 +0200 Subject: [PATCH 02/15] Fix sccache issues with cmake_policy --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b26f966..6468bd41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,7 @@ set(FORMATS Standalone AU VST3 AUv3) # Force JUCE to work with sccache # instruct MSVC to embed debug info (/Z7) instead of emitting a .pdb set(CMAKE_POLICY_DEFAULT_CMP0141 NEW CACHE STRING "" FORCE) +cmake_policy(SET CMP0141 NEW) set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded CACHE STRING "" FORCE) # For simplicity, the name of the CMake project is also the name of the target From 053d20637bfbf81eb51bb7eda4f5d361b137be4d Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 00:18:16 +0200 Subject: [PATCH 03/15] Try without build flags, just cmake settings --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 4bef3820..2dbc5fbf 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -92,7 +92,7 @@ jobs: uses: mozilla-actions/sccache-action@v0.0.9 - name: Configure - run: cmake -B ${{ env.BUILD_DIR }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -G Ninja ${{ matrix.extra-flags }} -DCMAKE_POLICY_DEFAULT_CMP0141=NEW -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded . + run: cmake -B ${{ env.BUILD_DIR }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -G Ninja ${{ matrix.extra-flags }} . - name: Build run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} From 323287b49603cc8066d2621c9c99c07a39e0070f Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 00:30:24 +0200 Subject: [PATCH 04/15] Don't bother using CMAKE_POLICY_DEFAULT since we use cmake_policy --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6468bd41..3938eb24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,7 +39,6 @@ set(FORMATS Standalone AU VST3 AUv3) # Force JUCE to work with sccache # instruct MSVC to embed debug info (/Z7) instead of emitting a .pdb -set(CMAKE_POLICY_DEFAULT_CMP0141 NEW CACHE STRING "" FORCE) cmake_policy(SET CMP0141 NEW) set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded CACHE STRING "" FORCE) From 8085738e1a2499f8a044f1c6c139e197f9ec6e1e Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 00:41:31 +0200 Subject: [PATCH 05/15] Move the sccache CMP0141 policy into cmake --- CMakeLists.txt | 5 ----- cmake | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3938eb24..19fbea4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,11 +37,6 @@ set(BUNDLE_ID "com.pamplejuce.pamplejuce") # Valid choices: AAX Unity VST VST3 AU AUv3 Standalone set(FORMATS Standalone AU VST3 AUv3) -# Force JUCE to work with sccache -# instruct MSVC to embed debug info (/Z7) instead of emitting a .pdb -cmake_policy(SET CMP0141 NEW) -set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded CACHE STRING "" FORCE) - # For simplicity, the name of the CMake project is also the name of the target project(${PROJECT_NAME} VERSION ${CURRENT_VERSION}) diff --git a/cmake b/cmake index 3c9a8210..59b73673 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 3c9a8210a456288b0679fdaf27e419a2ebe66fee +Subproject commit 59b73673973fde8d1ea7d9040eb80a259e3132ef From b71bb5e2bb0efd165e824c3ea0aa5629571f4b21 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 00:45:02 +0200 Subject: [PATCH 06/15] Bump cmake --- cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake b/cmake index 59b73673..61687434 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 59b73673973fde8d1ea7d9040eb80a259e3132ef +Subproject commit 616874347f1e6ebcf3dcabb7fcd609f703d20ae5 From 9e73581f85befb7887580204fa47d1c8ce0f0fd8 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 19:53:39 +0200 Subject: [PATCH 07/15] Set DEBUG_INFORMATION_FORMAT to None in Release --- cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake b/cmake index 61687434..3d8cf3ce 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 616874347f1e6ebcf3dcabb7fcd609f703d20ae5 +Subproject commit 3d8cf3cee63a6c830205dec08e701a8dbaec1e53 From 070043fa9eca057be4c7b05478a6cfa29e30f8d1 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 22:47:45 +0200 Subject: [PATCH 08/15] Strip symbols on mac/win --- .github/workflows/build_and_test.yml | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 2dbc5fbf..48a9d33d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -133,10 +133,22 @@ jobs: dev-id-installer-cert: ${{ secrets.DEV_ID_INSTALLER_CERT }} dev-id-installer-password: ${{ secrets.DEV_ID_INSTALLER_PASSWORD }} - - name: Codesign (macOS) + - name: Strip symbols and Codesign (macOS) if: ${{ matrix.name == 'macOS' }} timeout-minutes: 5 run: | + # Store debug symbols to use with symbolicatecrash + dsymutil "${{ env.VST3_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }} -o vst3.dSYM" + dsymutil "${{ env.AU_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }} -o au.dSYM" + dsymutil "${{ env.CLAP_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }} -o clap.dSYM" + dsymutil "${{ env.STANDALONE_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }} -o standalone.dSYM" + + # Strip the binaries, you can test via `nm -s __TEXT __text MyApp.app/Contents/MacOS/MyApp` + strip -x "${{ env.VST3_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" + strip -x "${{ env.AU_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" + strip -x "${{ env.CLAP_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" + strip -x "${{ env.STANDALONE_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" + # Each plugin must be code signed codesign --force -s "${{ secrets.DEVELOPER_ID_APPLICATION}}" -v "${{ env.VST3_PATH }}" --deep --strict --options=runtime --timestamp codesign --force -s "${{ secrets.DEVELOPER_ID_APPLICATION}}" -v "${{ env.AU_PATH }}" --deep --strict --options=runtime --timestamp @@ -187,11 +199,12 @@ jobs: working-directory: ${{ env.ARTIFACTS_PATH }} run: 7z a -tzip "${{ env.ARTIFACT_NAME }}.zip" "-xr!lib${{ env.PRODUCT_NAME }}_SharedCode.a" . - - name: Generate Installer + - name: Strip symbols and Generate Installer if: ${{ matrix.name == 'Windows' }} run: | iscc "packaging\installer.iss" mv "packaging/Output/${{ env.ARTIFACT_NAME }}.exe" "${{ env.ARTIFACTS_PATH }}/" + dumpbin /symbols "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.exe" 2>&1 | grep -v '^no symbols$' | grep -q . && { echo "❌ stray symbols!"; exit 1; } || { echo "✅ clean"; exit 0; } - name: Codesign with Azure Trusted Signing if: ${{ matrix.name == 'Windows' }} @@ -240,6 +253,12 @@ jobs: name: ${{ env.ARTIFACT_NAME }}.pkg path: packaging/${{ env.ARTIFACT_NAME }}.pkg + - name: Upload Symbols (macOS) + if: ${{ matrix.name == 'macOS' }} + uses: actions/upload-artifact@v4 + with: + name: symbols + release: if: contains(github.ref, 'tags/v') runs-on: ubuntu-latest From 758b9d9e4b81e85ce186e16777231e02a488e825 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 22:53:19 +0200 Subject: [PATCH 09/15] Fix paths to macOS symbol stripping --- .github/workflows/build_and_test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 48a9d33d..3c1bb4f0 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -138,10 +138,10 @@ jobs: timeout-minutes: 5 run: | # Store debug symbols to use with symbolicatecrash - dsymutil "${{ env.VST3_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }} -o vst3.dSYM" - dsymutil "${{ env.AU_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }} -o au.dSYM" - dsymutil "${{ env.CLAP_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }} -o clap.dSYM" - dsymutil "${{ env.STANDALONE_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }} -o standalone.dSYM" + dsymutil "${{ env.VST3_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" -o vst3.dSYM + dsymutil "${{ env.AU_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" -o au.dSYM + dsymutil "${{ env.CLAP_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" -o clap.dSYM + dsymutil "${{ env.STANDALONE_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" -o standalone.dSYM # Strip the binaries, you can test via `nm -s __TEXT __text MyApp.app/Contents/MacOS/MyApp` strip -x "${{ env.VST3_PATH }}/Contents/MacOS/${{ env.PRODUCT_NAME }}" From 4400e14c3afbdc4b53bb8a797e4ba9b0ff15972a Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 23:12:00 +0200 Subject: [PATCH 10/15] Don't upload symbols for now --- .github/workflows/build_and_test.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 3c1bb4f0..2a659299 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -253,12 +253,6 @@ jobs: name: ${{ env.ARTIFACT_NAME }}.pkg path: packaging/${{ env.ARTIFACT_NAME }}.pkg - - name: Upload Symbols (macOS) - if: ${{ matrix.name == 'macOS' }} - uses: actions/upload-artifact@v4 - with: - name: symbols - release: if: contains(github.ref, 'tags/v') runs-on: ubuntu-latest From c59525f5f86ce7e197e984267f47a243416cbabc Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 23:29:02 +0200 Subject: [PATCH 11/15] Bump to latest sccache strategy --- cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake b/cmake index 3d8cf3ce..f4b467a3 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 3d8cf3cee63a6c830205dec08e701a8dbaec1e53 +Subproject commit f4b467a3e50bc4f8581b1ef3cebb332273dd41cf From 9c21fcab6f961f9c92f6ae3e5e4966200eda3757 Mon Sep 17 00:00:00 2001 From: Sudara Date: Sun, 13 Jul 2025 23:37:51 +0200 Subject: [PATCH 12/15] Bump CMake --- cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake b/cmake index f4b467a3..b006dcfa 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit f4b467a3e50bc4f8581b1ef3cebb332273dd41cf +Subproject commit b006dcfa53b0b4c8ea60b1684074283c987d787e From dcc91ddb502550a074d0810204dc8f43dd874a67 Mon Sep 17 00:00:00 2001 From: Sudara Date: Mon, 14 Jul 2025 16:25:58 +0200 Subject: [PATCH 13/15] Another attempt, try generator config --- .github/workflows/build_and_test.yml | 1 - cmake | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 2a659299..25e99406 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -17,7 +17,6 @@ env: HOMEBREW_NO_INSTALL_CLEANUP: 1 SCCACHE_GHA_ENABLED: true SCCACHE_CACHE_MULTIARCH: 1 - IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp defaults: run: diff --git a/cmake b/cmake index b006dcfa..df29b023 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit b006dcfa53b0b4c8ea60b1684074283c987d787e +Subproject commit df29b0230f8aa50afc51c05022ca290337c82388 From d819e3e894e5da13a7729a02da57c850e29f43d9 Mon Sep 17 00:00:00 2001 From: Sudara Date: Mon, 14 Jul 2025 16:44:22 +0200 Subject: [PATCH 14/15] Bump JUCE --- JUCE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JUCE b/JUCE index 8d935b25..4ed15dbc 160000 --- a/JUCE +++ b/JUCE @@ -1 +1 @@ -Subproject commit 8d935b25b287cf23251d6973afcae6c7b5607710 +Subproject commit 4ed15dbc9e00367214333adbec2551edaf85d218 From 96c66077fae8b9e1207b822982a63e07512d5f33 Mon Sep 17 00:00:00 2001 From: Sudara Date: Tue, 15 Jul 2025 00:07:58 +0200 Subject: [PATCH 15/15] Attempt to purge cache to see if caching actually broken --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 25e99406..627040e2 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -16,6 +16,7 @@ env: DISPLAY: :0 # linux pluginval needs this HOMEBREW_NO_INSTALL_CLEANUP: 1 SCCACHE_GHA_ENABLED: true + SCCACHE_GHA_VERSION: 2 # bump this to purge cache SCCACHE_CACHE_MULTIARCH: 1 defaults: