Switch to .pkg/.exe/.deb installers with Azure Trusted Signing

Replaces the zip-based ci/build.sh flow with installer outputs (Inno Setup
on Windows, productbuild on macOS, cpack DEB on Linux) signed via Microsoft
Trusted Signing on Windows and Apple Developer ID on macOS.

Plugin code: factory wavetables and presets now ship as files via the
installer rather than embedded BinaryData. PluginProcessor implements
getProgramDirectory/getFactoryProgramDirectories so gin scans factory
content from systemResourceRoot. First-run migration copies any presets
from the legacy com.socalabs/Wavetable/programs path into the new user
dir under Library/Audio/Presets/SocaLabs/Wavetable.

Bumps gin submodule to match Identity for getFactoryProgramDirectories
support.
This commit is contained in:
Roland Rabien 2026-04-29 13:23:23 -07:00
commit 130e626ea6
21 changed files with 879 additions and 262 deletions

View file

@ -1,148 +0,0 @@
#!/bin/bash -e
set +x
PLUGIN="Wavetable"
# linux specific stiff
if [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
sudo apt-get update
sudo apt-get install clang git ninja-build ladspa-sdk freeglut3-dev g++ libasound2-dev libcurl4-openssl-dev libfreetype6-dev libjack-jackd2-dev libx11-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxrandr-dev mesa-common-dev webkit2gtk-4.0 juce-tools xvfb
fi
# mac specific stuff
if [ "$(uname)" == "Darwin" ]; then
# Create a temp keychain
if [ -n "$GITHUB_ACTIONS" ]; then
if [ -n "$APPLICATION" ]; then
echo "Create a keychain"
security create-keychain -p nr4aGPyz Keys.keychain
echo $APPLICATION | base64 -D -o /tmp/Application.p12
echo $INSTALLER | base64 -D -o /tmp/Installer.p12
security import /tmp/Application.p12 -t agg -k Keys.keychain -P aym9PKWB -A -T /usr/bin/codesign
security import /tmp/Installer.p12 -t agg -k Keys.keychain -P aym9PKWB -A -T /usr/bin/codesign
security list-keychains -s Keys.keychain
security default-keychain -s Keys.keychain
security unlock-keychain -p nr4aGPyz Keys.keychain
security set-keychain-settings -l -u -t 13600 Keys.keychain
security set-key-partition-list -S apple-tool:,apple: -s -k nr4aGPyz Keys.keychain
fi
DEV_APP_ID="Developer ID Application: Roland Rabien (3FS7DJDG38)"
DEV_INST_ID="Developer ID Installer: Roland Rabien (3FS7DJDG38)"
fi
fi
ROOT=$(cd "$(dirname "$0")/.."; pwd)
cd "$ROOT"
echo "$ROOT"
BRANCH=${GITHUB_REF##*/}
echo "$BRANCH"
cd "$ROOT/ci"
rm -Rf bin
mkdir bin
# Build mac version
if [ "$(uname)" == "Darwin" ]; then
cd "$ROOT"
cmake --preset xcode
cmake --build --preset xcode --config Release
mkdir -p "$ROOT/ci/bin/au"
mkdir -p "$ROOT/ci/bin/vst"
mkdir -p "$ROOT/ci/bin/vst3"
mkdir -p "$ROOT/ci/bin/clap"
cp -R "$ROOT/Builds/xcode/${PLUGIN}_artefacts/Release/AU/$PLUGIN.component" "$ROOT/ci/bin/au"
cp -R "$ROOT/Builds/xcode/${PLUGIN}_artefacts/Release/VST/$PLUGIN.vst" "$ROOT/ci/bin/vst"
cp -R "$ROOT/Builds/xcode/${PLUGIN}_artefacts/Release/VST3/$PLUGIN.vst3" "$ROOT/ci/bin/vst3"
cp -R "$ROOT/Builds/xcode/${PLUGIN}_artefacts/Release/CLAP/$PLUGIN.clap" "$ROOT/ci/bin/clap"
cd "$ROOT/ci/bin"
if [ -n "$APPLICATION" ]; then
codesign -s "$DEV_APP_ID" -v vst/$PLUGIN.vst --options=runtime --timestamp --force
codesign -s "$DEV_APP_ID" -v vst3/$PLUGIN.vst3 --options=runtime --timestamp --force
codesign -s "$DEV_APP_ID" -v au/$PLUGIN.component --options=runtime --timestamp --force
codesign -s "$DEV_APP_ID" -v clap/$PLUGIN.clap --options=runtime --timestamp --force
else
echo "Not signing"
fi
# Notarize
cd "$ROOT/ci/bin"
if [[ -n "$APPLE_USER" ]]; then
zip -r ${PLUGIN}_Mac.zip vst/$PLUGIN.vst vst3/$PLUGIN.vst3 au/$PLUGIN.component clap/$PLUGIN.clap
xcrun notarytool submit --verbose --apple-id "$APPLE_USER" --password "$APPLE_PASS" --team-id "3FS7DJDG38" --wait --timeout 30m ${PLUGIN}_Mac.zip
rm ${PLUGIN}_Mac.zip
xcrun stapler staple vst/$PLUGIN.vst
xcrun stapler staple vst3/$PLUGIN.vst3
xcrun stapler staple au/$PLUGIN.component
xcrun stapler staple clap/$PLUGIN.clap
else
echo "Not notarizing"
fi
zip -r ${PLUGIN}_Mac.zip vst/$PLUGIN.vst vst3/$PLUGIN.vst3 au/$PLUGIN.component clap/$PLUGIN.clap
if [ "$BRANCH" = "release" ]; then
curl -F "files=@${PLUGIN}_Mac.zip" "https://socalabs.com/files/set.php?key=$APIKEY"
fi
# Build linux version
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
cd "$ROOT"
cmake --preset ninja-gcc
cmake --build --preset ninja-gcc --config Release
mkdir -p "$ROOT/ci/bin/lv2"
mkdir -p "$ROOT/ci/bin/vst"
mkdir -p "$ROOT/ci/bin/vst3"
mkdir -p "$ROOT/ci/bin/clap"
cp -R "$ROOT/Builds/ninja-gcc/${PLUGIN}_artefacts/Release/LV2/$PLUGIN.lv2" "$ROOT/ci/bin/lv2"
cp -R "$ROOT/Builds/ninja-gcc/${PLUGIN}_artefacts/Release/VST/lib$PLUGIN.so" "$ROOT/ci/bin/vst/$PLUGIN.so"
cp -R "$ROOT/Builds/ninja-gcc/${PLUGIN}_artefacts/Release/VST3/$PLUGIN.vst3" "$ROOT/ci/bin/vst3"
cp -R "$ROOT/Builds/ninja-gcc/${PLUGIN}_artefacts/Release/CLAP/$PLUGIN.clap" "$ROOT/ci/bin/clap"
cd "$ROOT/ci/bin"
# Strip debug symbols
strip vst/$PLUGIN.so
strip vst3/$PLUGIN.vst3/Contents/x86_64-linux/$PLUGIN.so
strip lv2/$PLUGIN.lv2/lib$PLUGIN.so
strip clap/$PLUGIN.clap
# Upload
cd "$ROOT/ci/bin"
zip -r ${PLUGIN}_Linux.zip vst/$PLUGIN.so vst3/$PLUGIN.vst3 lv2/$PLUGIN.lv2 clap/$PLUGIN.clap
if [ "$BRANCH" = "release" ]; then
curl -F "files=@${PLUGIN}_Linux.zip" "https://socalabs.com/files/set.php?key=$APIKEY"
fi
# Build Win version
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then
cd "$ROOT"
cmake --preset vs
cmake --build --preset vs --config Release
mkdir -p "$ROOT/ci/bin/vst"
mkdir -p "$ROOT/ci/bin/vst3"
mkdir -p "$ROOT/ci/bin/clap"
cp -R "$ROOT/Builds/vs/${PLUGIN}_artefacts/Release/VST/$PLUGIN.dll" "$ROOT/ci/bin/vst"
cp -R "$ROOT/Builds/vs/${PLUGIN}_artefacts/Release/VST3/$PLUGIN.vst3" "$ROOT/ci/bin/vst3"
cp -R "$ROOT/Builds/vs/${PLUGIN}_artefacts/Release/CLAP/$PLUGIN.clap" "$ROOT/ci/bin/clap"
cd "$ROOT/ci/bin"
7z a ${PLUGIN}_Win.zip vst/$PLUGIN.dll vst3/$PLUGIN.vst3 clap/$PLUGIN.clap
if [ "$BRANCH" = "release" ]; then
curl -F "files=@${PLUGIN}_Win.zip" "https://socalabs.com/files/set.php?key=$APIKEY"
fi
fi

View file

@ -1,16 +0,0 @@
#!/bin/bash -e
ROOT=$(cd "$(dirname "$0")/.."; pwd)
cd "$ROOT"
export PATH=$PATH:"/c/Program Files/CMake/bin"
if [ "$(uname)" == "Darwin" ]; then
TOOLCHAIN="xcode"
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
TOOLCHAIN="ninja-gcc"
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then
TOOLCHAIN="vs"
fi
cmake --preset $TOOLCHAIN -D BUILD_EXTRAS=OFF -D JUCE_COPY_PLUGIN_AFTER_BUILD=ON

View file

@ -1,26 +0,0 @@
#!/bin/bash -e
set +x
PLUGIN="Wavetable"
ROOT=$(cd "$(dirname "$0")/.."; pwd)
cd "$ROOT"
echo "$ROOT"
# Upload mac version
if [ "$(uname)" == "Darwin" ]; then
cd "$ROOT/ci/bin"
curl -F "files=@${PLUGIN}_Mac.zip" "https://socalabs.com/files/set.php?key=$APIKEY"
fi
# Upload linux version
if [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
cd "$ROOT/ci/bin"
curl -F "files=@${PLUGIN}_Linux.zip" "https://socalabs.com/files/set.php?key=$APIKEY"
fi
# Upload Win version
if [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then
cd "$ROOT/ci/bin"
curl -F "files=@${PLUGIN}_Win.zip" "https://socalabs.com/files/set.php?key=$APIKEY"
fi