From 4eaeb5646b325e138261900831db6922ca70fb06 Mon Sep 17 00:00:00 2001 From: zsliu98 Date: Tue, 13 Aug 2024 23:09:44 -0400 Subject: [PATCH] ci: add standalone [skip ci] --- .github/workflows/bump_tag.yml | 20 --- .github/workflows/cmake_standalone.yml | 235 +++++++++++++++++++++++++ .github/workflows/sync_release.yml | 3 - CMakeLists.txt | 9 +- packaging/icon.png | Bin 0 -> 9847 bytes packaging/packager_Windows.py | 29 +-- packaging/packager_macOS.py | 7 +- 7 files changed, 262 insertions(+), 41 deletions(-) delete mode 100644 .github/workflows/bump_tag.yml create mode 100644 .github/workflows/cmake_standalone.yml create mode 100644 packaging/icon.png diff --git a/.github/workflows/bump_tag.yml b/.github/workflows/bump_tag.yml deleted file mode 100644 index 739a05b..0000000 --- a/.github/workflows/bump_tag.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Bump tag -on: - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-22.04 - permissions: - contents: write - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: '0' - - - name: Bump version and push tag - uses: anothrNick/github-tag-action@1.70.0 # Don't use @master or @v1 unless you're happy to test the latest version - env: - DEFAULT_BUMP: patch - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token - WITH_V: false diff --git a/.github/workflows/cmake_standalone.yml b/.github/workflows/cmake_standalone.yml new file mode 100644 index 0000000..5bd70b2 --- /dev/null +++ b/.github/workflows/cmake_standalone.yml @@ -0,0 +1,235 @@ +name: Standalone + +on: + workflow_dispatch: + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +env: + BUILD_TYPE: Release + BUILD_DIR: Builds + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DISPLAY: :0 # linux pluginval needs this + CMAKE_BUILD_PARALLEL_LEVEL: 3 # Use up to 3 cpus to build juceaide, etc + HOMEBREW_NO_INSTALL_CLEANUP: 1 + IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp + +# jobs are run in paralell on different machines +# all steps run in series +jobs: + build_and_test: + name: ${{ matrix.name }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false # show all errors for each platform (vs. cancel jobs on error) + matrix: + include: + - name: Linux + os: ubuntu-22.04 + boost_platform_version: "22.04" + boost_toolset: "gcc" + plugin_os_format: "Standalone" + app_suffix: "" + - name: macOS + os: macos-14 + boost_platform_version: "11" + boost_toolset: "clang" + plugin_os_format: "Standalone" + app_suffix: "app" + - name: Windows + os: windows-latest + boost_platform_version: "2022" + boost_toolset: "msvc" + plugin_os_format: "Standalone" + app_suffix: "exe" + + steps: + - name: Set up MSVC Developer Command Prompt (Windows) + if: runner.os == 'Windows' + uses: ilammy/msvc-dev-cmd@v1 + + - name: Set up Clang (Linux) + if: runner.os == 'Linux' + uses: egor-tensin/setup-clang@v1 + + # This also starts up our "fake" display Xvfb, needed for pluginval + - name: Install JUCE's Linux Deps + if: runner.os == 'Linux' + # Thanks to McMartin & co https://forum.juce.com/t/list-of-juce-dependencies-under-linux/15121/44 + run: | + sudo apt-get update && sudo apt install libasound2-dev libx11-dev libxinerama-dev libxext-dev libfreetype-dev libfontconfig1-dev libwebkit2gtk-4.1-dev libglu1-mesa-dev xvfb ninja-build + sudo /usr/bin/Xvfb $DISPLAY & + + - name: Cache IPP (Windows) + if: runner.os == 'Windows' + id: cache-ipp + uses: actions/cache@v4 + with: + key: ipp-v5 + path: C:\Program Files (x86)\Intel + + - name: Install IPP (Windows) + if: (runner.os == 'Windows') && (steps.cache-ipp.outputs.cache-hit != 'true') + shell: bash + run: | + curl --output oneapi.exe https://registrationcenter-download.intel.com/akdlm/IRC_NAS/b4adec02-353b-4144-aa21-f2087040f316/w_ipp_oneapi_p_2021.11.0.533_offline.exe + ./oneapi.exe -s -x -f oneapi + ./oneapi/bootstrapper.exe -s -c --action install --components=intel.oneapi.win.ipp.devel --eula=accept -p=NEED_VS2022_INTEGRATION=1 --log-dir=. + + - name: Save IPP cache (even on CI fail) + if: runner.os == 'Windows' && (steps.cache-ipp.outputs.cache-hit != 'true') + uses: actions/cache/save@v4 + with: + path: C:\Program Files (x86)\Intel + key: ipp-v5 + + - name: Install Ninja (Windows) + if: runner.os == 'Windows' + shell: bash + run: choco install ninja + + - name: Install macOS Deps + if: ${{ matrix.name == 'macOS' }} + run: brew install ninja osxutils + + # This block can be removed once 15.1 is default (JUCE requires it when building on macOS 14) + - name: Use latest Xcode on system (macOS) + if: ${{ matrix.name == 'macOS' }} + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: true + + - name: Install boost + uses: MarkusJx/install-boost@v2.4.5 + id: install-boost + with: + boost_version: 1.80.0 + platform_version: ${{ matrix.boost_platform_version }} + toolset: ${{ matrix.boost_toolset }} + link: "static" + + - name: Cache the build + uses: mozilla-actions/sccache-action@v0.0.5 + + - name: Import Certificates (macOS) + uses: apple-actions/import-codesign-certs@v3 # only exists as a tag right now + if: ${{ (matrix.name == 'macOS') && (env.p12-file-base64 != '')}} + with: + p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} + p12-password: ${{ secrets.DEV_ID_APP_PASSWORD }} + env: + p12-file-base64: ${{ secrets.DEV_ID_APP_CERT }} + + - name: Configure + shell: bash + run: cmake -B ${{ env.BUILD_DIR }} -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ matrix.ccache }} -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" . + env: + BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} + PLUGIN_OS_FORMAT: ${{ matrix.plugin_os_format }} + + - name: Build + shell: bash + run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} --parallel 4 + + - name: Test + working-directory: ${{ env.BUILD_DIR }} + run: ctest --output-on-failure -j4 -VV + + - name: Read in .env from CMake # see GitHubENV.cmake + shell: bash + run: | + cat .env # show us the config + cat .env >> $GITHUB_ENV # pull in our PRODUCT_NAME, etc + + - name: Set additional env vars for next steps + shell: bash + run: | + ARTIFACTS_PATH=${{ env.BUILD_DIR }}/${{ env.PROJECT_NAME }}_artefacts/${{ env.BUILD_TYPE }} + echo "ARTIFACTS_PATH=$ARTIFACTS_PATH" >> $GITHUB_ENV + echo "VST3_PATH=$ARTIFACTS_PATH/VST3/${{ env.PRODUCT_NAME }}.vst3" >> $GITHUB_ENV + echo "AU_PATH=$ARTIFACTS_PATH/AU/${{ env.PRODUCT_NAME }}.component" >> $GITHUB_ENV + echo "LV2_PATH=$ARTIFACTS_PATH/LV2/${{ env.PRODUCT_NAME }}.lv2" >> $GITHUB_ENV + echo "Standalone_PATH=$ARTIFACTS_PATH/Standalone/${{ env.PRODUCT_NAME }}.${{ matrix.app_suffix }}" >> $GITHUB_ENV + echo "ARTIFACT_NAME=${{ env.PRODUCT_NAME }}-${{ env.VERSION }}-${{ matrix.name }}" >> $GITHUB_ENV + + - name: Codesign and Create Individual Packages (macOS) + if: ${{ matrix.name == 'macOS' }} + run: | + python3 -u packaging/packager_macOS.py + env: + DEVELOPER_ID_APPLICATION: ${{ secrets.DEVELOPER_ID_APPLICATION }} + + - name: Sign Final Package (macOS) + if: ${{ (matrix.name == 'macOS') && (env.APPLE_INSTALLER_DEV != '') }} + run: productsign --sign "${{ secrets.APPLE_INSTALLER_DEV }}" "${{ env.ARTIFACT_NAME }}_unsigned.pkg" "${{ env.ARTIFACT_NAME }}.pkg" + env: + APPLE_INSTALLER_DEV: ${{ secrets.APPLE_INSTALLER_DEV }} + + - name: Rename Final Package (macOS) + if: ${{ (matrix.name == 'macOS') && (env.APPLE_INSTALLER_DEV == '') }} + run: mv "${{ env.ARTIFACT_NAME }}_unsigned.pkg" "${{ env.ARTIFACT_NAME }}.pkg" + env: + APPLE_INSTALLER_DEV: ${{ secrets.APPLE_INSTALLER_DEV }} + + - name: Notarize and Staple PKG (macOS) + if: ${{ (matrix.name == 'macOS') && (env.NOTARIZATION_USERNAME != '')}} + run: | + xcrun notarytool submit "${{ env.ARTIFACT_NAME }}.pkg" --apple-id ${{ secrets.NOTARIZATION_USERNAME }} --password ${{ secrets.NOTARIZATION_PASSWORD }} --team-id ${{ secrets.TEAM_ID }} --wait + xcrun stapler staple "${{ env.ARTIFACT_NAME }}.pkg" + env: + NOTARIZATION_USERNAME: ${{ secrets.NOTARIZATION_USERNAME }} + + - name: Create DMG (macOS) + if: ${{ matrix.name == 'macOS' }} + run: | + mkdir "${{ env.ARTIFACTS_PATH }}/dmgtmp" + mv "${{ env.ARTIFACT_NAME }}.pkg" "${{ env.ARTIFACTS_PATH }}/dmgtmp" + hdiutil create "${{ env.ARTIFACTS_PATH }}/tmp.dmg" -ov -volname "${{ env.ARTIFACT_NAME }}" -fs HFS+ -srcfolder "${{ env.ARTIFACTS_PATH }}/dmgtmp" + hdiutil convert "${{ env.ARTIFACTS_PATH }}/tmp.dmg" -format UDZO -o "${{ env.ARTIFACT_NAME }}.dmg" + + - name: Upload DMG (macOS) + if: ${{ matrix.name == 'macOS' }} + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME }}.dmg + path: "${{ env.ARTIFACT_NAME }}.dmg" + + - name: Generate InnoScript (Windows) + if: ${{ matrix.name == 'Windows' }} + shell: bash + run: | + python3 -u packaging/packager_Windows.py + cat "packaging\installer.iss" + + - name: Generate Installer (Windows) + if: ${{ matrix.name == 'Windows' }} + shell: bash + run: | + iscc "packaging\installer.iss" + mv "packaging/Output/${{ env.ARTIFACT_NAME }}.exe" "${{ env.ARTIFACTS_PATH }}/" + + - name: Upload Exe (Windows) + if: ${{ matrix.name == 'Windows' }} + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME }}.exe + path: "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.exe" + + - name: Generate Zip (Linux) + if: ${{ matrix.name == 'Linux' }} + working-directory: ${{ env.ARTIFACTS_PATH }} + run: 7z a -tzip "${{ env.ARTIFACT_NAME }}.zip" "-xr!lib${{ env.PRODUCT_NAME }}_SharedCode.a" . + + - name: Upload Zip (Linux) + if: ${{ matrix.name == 'Linux' }} + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME }}.zip + path: "${{ env.ARTIFACTS_PATH }}/${{ env.ARTIFACT_NAME }}.zip" \ No newline at end of file diff --git a/.github/workflows/sync_release.yml b/.github/workflows/sync_release.yml index 18ed34e..bf81ec7 100644 --- a/.github/workflows/sync_release.yml +++ b/.github/workflows/sync_release.yml @@ -1,9 +1,6 @@ name: Release Sync on: workflow_dispatch: - # workflow_run: - # workflows: [Release] - # types: [completed] jobs: build: diff --git a/CMakeLists.txt b/CMakeLists.txt index f745e48..6943477 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,16 +11,17 @@ include(PamplejuceVersion) # This is the internal name of the project and the name of JUCE's shared code "target" # Note: This cannot have spaces (it may be 2023, but you can't have it all!) # Worry not, JUCE's PRODUCT_NAME can have spaces (and is DAWs display) -set(PROJECT_NAME "ZLSplitter") -set(PLUGIN_CODE "Spli") +set(PROJECT_NAME "ZLTemplate") +set(PLUGIN_CODE "Temp") +# Change me! # Worry not, JUCE's PRODUCT_NAME can have spaces (and is what DAWs will display) # You can also just have it be the same thing as PROJECT_NAME # You may want to append the major version on the end of this (and PROJECT_NAME) ala: # # set(PROJECT_NAME "MyPlugin_v${MAJOR_VERSION}") # Doing so enables major versions to show up in IDEs and DAWs as separate plugins # allowing you to change parameters and behavior without breaking existing user projects -set(PRODUCT_NAME "ZL Splitter") +set(PRODUCT_NAME "ZL Template") # Change me! Used for the MacOS bundle name and Installers set(COMPANY_NAME "ZL") @@ -82,7 +83,7 @@ add_subdirectory(JUCE) # See `docs/CMake API.md` in the JUCE repo for all config options juce_add_plugin("${PROJECT_NAME}" # Icons for the standalone app - # ICON_BIG "${CMAKE_CURRENT_SOURCE_DIR}/packaging/icon.png" + ICON_BIG "${CMAKE_CURRENT_SOURCE_DIR}/packaging/icon.png" # Change me! COMPANY_NAME "${COMPANY_NAME}" diff --git a/packaging/icon.png b/packaging/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..32d1410569683f142a2fd4f658847c01a25c1593 GIT binary patch literal 9847 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 b+{KE++08oVT$JQ(5uBndNTyE8EcAZ>)D)pG literal 0 HcmV?d00001 diff --git a/packaging/packager_Windows.py b/packaging/packager_Windows.py index 3940d15..2f2b5d9 100644 --- a/packaging/packager_Windows.py +++ b/packaging/packager_Windows.py @@ -54,12 +54,13 @@ def main(): all_install_paths = [ r'{commoncf64}\VST3', r'{commoncf64}\LV2', - r'{commoncf64}\Avid\Audio\Plug-Ins', ] + r'{commoncf64}\Avid\Audio\Plug-Ins', + r'{commonpf64}\ZLAudio'] plugin_formats, extensions, install_paths = [], [], [] for plugin_format, extension, install_path in zip( - ["VST3", "LV2", "AAX"], - ["vst3", "lv2", "aaxplugin"], + ["VST3", "LV2", "AAX", "Standalone"], + ["vst3", "lv2", "aaxplugin", "standalone"], all_install_paths): if plugin_format + "_PATH" in os.environ: plugin_path = os.environ[plugin_format + "_PATH"] @@ -86,12 +87,20 @@ def main(): outfile.write("[Files]\n") for plugin_format, extension, install_path in zip(plugin_formats, extensions, install_paths): - outfile.write( - 'Source: "..\\{}\\*"; DestDir: "{}"; Excludes: *.ilk; Flags: ignoreversion recursesubdirs; Components: {}'.format( - str(PureWindowsPath(os.environ[plugin_format + "_PATH"])), - install_path + '\\' + product_name + "." + extension + "\\", - extension) - ) + if plugin_format == "Standalone": + outfile.write( + 'Source: "..\\{}"; DestDir: "{}"; Excludes: *.ilk; Flags: ignoreversion; Components: {}'.format( + str(PureWindowsPath(os.environ[plugin_format + "_PATH"])), + install_path + '\\' + product_name, + extension) + ) + else: + outfile.write( + 'Source: "..\\{}\\*"; DestDir: "{}"; Excludes: *.ilk; Flags: ignoreversion recursesubdirs; Components: {}'.format( + str(PureWindowsPath(os.environ[plugin_format + "_PATH"])), + install_path + '\\' + product_name + "." + extension + "\\", + extension) + ) outfile.write("\n") outfile.write("[Run]\n") @@ -106,8 +115,6 @@ def main(): outfile.write("\n") outfile.close() - return 0 - if __name__ == '__main__': sys.exit(main()) diff --git a/packaging/packager_macOS.py b/packaging/packager_macOS.py index b0d630b..394b159 100644 --- a/packaging/packager_macOS.py +++ b/packaging/packager_macOS.py @@ -47,13 +47,14 @@ def main(): "/Library/Audio/Plug-Ins/Components", "/Library/Audio/Plug-Ins/LV2", "/Library/Audio/Plug-Ins/CLAP", - "/Library/Application Support/Avid/Audio/Plug-Ins" + "/Library/Application Support/Avid/Audio/Plug-Ins", + "/Applications" ] print("Create packages") for plugin_format, extension, install_path in zip( - ["VST3", "AU", "LV2", "CLAP", "AAX"], - ["vst3", "au", "lv2", "clap", "aax"], + ["VST3", "AU", "LV2", "CLAP", "AAX", "Standalone"], + ["vst3", "au", "lv2", "clap", "aax", "standalone"], install_paths): if plugin_format + "_PATH" in os.environ: plugin_path = os.environ[plugin_format + "_PATH"]