Packaging fixes (#192)
* Start cleanup for improved packaging Signed-off-by: falkTX <falktx@falktx.com> * Use the same folder for VST2 plugins Signed-off-by: falkTX <falktx@falktx.com> * Fix static build Signed-off-by: falkTX <falktx@falktx.com> * Do not set source-dir in CI builds Signed-off-by: falkTX <falktx@falktx.com> * Set a custom fallback systemdir per OS Signed-off-by: falkTX <falktx@falktx.com> * CI tweaks Signed-off-by: falkTX <falktx@falktx.com> * Build the whole pyqt on windows Signed-off-by: falkTX <falktx@falktx.com> * Mention AU in readme and differences docs Signed-off-by: falkTX <falktx@falktx.com> * Add specialized utils for macOS packaging Signed-off-by: falkTX <falktx@falktx.com> * Fix plugin-validation build Signed-off-by: falkTX <falktx@falktx.com> * Fix build Signed-off-by: falkTX <falktx@falktx.com> * Do not create window for lv2lint tests * Start enabling AU builds * Copy over mod.lv2 specs for validation * Skip main cardinal lv2lint, the custom CVPorts are not supported * au build needs carla * More CI tweaks * Build headless version for plugin validation * Fix typo * Only show missing resources error message once Signed-off-by: falkTX <falktx@falktx.com> * Fallback to system path even if using a plugin bundle Signed-off-by: falkTX <falktx@falktx.com> * CI fixes, build full carla on Windows Signed-off-by: falkTX <falktx@falktx.com> * Rename script Signed-off-by: falkTX <falktx@falktx.com> * Silly typo Signed-off-by: falkTX <falktx@falktx.com> * More CI tweaks, add windows installer Signed-off-by: falkTX <falktx@falktx.com> * Setup Carla paths for Windows Signed-off-by: falkTX <falktx@falktx.com> * Yet more tweaks Signed-off-by: falkTX <falktx@falktx.com> * Package carla on windows, use xvfb-run Signed-off-by: falkTX <falktx@falktx.com> * Test win32 build too Signed-off-by: falkTX <falktx@falktx.com> * Finalize rework Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
dbefe13bfb
commit
a1017be6ea
22 changed files with 430 additions and 90 deletions
67
utils/create-macos-installer.sh
Executable file
67
utils/create-macos-installer.sh
Executable file
|
@ -0,0 +1,67 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ -d bin ]; then
|
||||
cd bin
|
||||
else
|
||||
echo "Please run this script from the root folder"
|
||||
exit
|
||||
fi
|
||||
|
||||
rm -rf res
|
||||
rm -rf au
|
||||
rm -rf lv2
|
||||
rm -rf vst2
|
||||
rm -rf vst3
|
||||
|
||||
mkdir au lv2 vst2 vst3
|
||||
mv *.component au/
|
||||
mv *.lv2 lv2/
|
||||
mv *.vst vst2/
|
||||
mv *.vst3 vst3/
|
||||
cp -RL lv2/Cardinal.lv2/resources res
|
||||
rm -rf lv2/*.lv2/resources
|
||||
rm -rf vst2/*.vst/Contents/Resources
|
||||
rm -rf vst3/*.vst3/Contents/Resources
|
||||
|
||||
pkgbuild \
|
||||
--identifier "studio.kx.distrho.cardinal.resources" \
|
||||
--install-location "/Library/Application Support/Cardinal/" \
|
||||
--root "${PWD}/res/" \
|
||||
../dpf-cardinal-resources.pkg
|
||||
|
||||
pkgbuild \
|
||||
--identifier "studio.kx.distrho.plugins.cardinal.components" \
|
||||
--install-location "/Library/Audio/Plug-Ins/Components/" \
|
||||
--root "${PWD}/au/" \
|
||||
../dpf-cardinal-components.pkg
|
||||
|
||||
pkgbuild \
|
||||
--identifier "studio.kx.distrho.plugins.cardinal.lv2bundles" \
|
||||
--install-location "/Library/Audio/Plug-Ins/LV2/" \
|
||||
--root "${PWD}/lv2/" \
|
||||
../dpf-cardinal-lv2bundles.pkg
|
||||
|
||||
pkgbuild \
|
||||
--identifier "studio.kx.distrho.plugins.cardinal.vst2bundles" \
|
||||
--install-location "/Library/Audio/Plug-Ins/VST/" \
|
||||
--root "${PWD}/vst2/" \
|
||||
../dpf-cardinal-vst2bundles.pkg
|
||||
|
||||
pkgbuild \
|
||||
--identifier "studio.kx.distrho.plugins.cardinal.vst3bundles" \
|
||||
--install-location "/Library/Audio/Plug-Ins/VST3/" \
|
||||
--root "${PWD}/vst3/" \
|
||||
../dpf-cardinal-vst3bundles.pkg
|
||||
|
||||
cd ..
|
||||
|
||||
sed -e "s|@builddir@|${PWD}/build|" utils/plugin.pkg/package.xml.in > build/package.xml
|
||||
|
||||
productbuild \
|
||||
--distribution build/package.xml \
|
||||
--identifier "studio.kx.distrho.cardinal" \
|
||||
--package-path "${PWD}" \
|
||||
--version 0 \
|
||||
Cardinal-macOS.pkg
|
53
utils/create-windows-installer.sh
Executable file
53
utils/create-windows-installer.sh
Executable file
|
@ -0,0 +1,53 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ ! -d bin ]; then
|
||||
echo "Please run this script from the root folder"
|
||||
exit
|
||||
fi
|
||||
|
||||
# args
|
||||
bit=${1}
|
||||
bit=${bit:=64}
|
||||
|
||||
# setup innosetup
|
||||
dlfile="${PWD}/bin/innosetup-6.0.5.exe"
|
||||
innodir="${PWD}/build/innosetup-6.0.5"
|
||||
iscc="${innodir}/drive_c/InnoSetup/ISCC.exe"
|
||||
|
||||
# download it
|
||||
if [ ! -f "${dlfile}" ]; then
|
||||
# FIXME proper dl version
|
||||
curl -L https://jrsoftware.org/download.php/is.exe?site=2 -o "${dlfile}"
|
||||
fi
|
||||
|
||||
# initialize wine
|
||||
if [ ! -d "${innodir}"/drive_c ]; then
|
||||
env WINEPREFIX="${innodir}" wineboot -u
|
||||
fi
|
||||
|
||||
# install innosetup in custom wineprefix
|
||||
if [ ! -f "${innodir}"/drive_c/InnoSetup/ISCC.exe ]; then
|
||||
env WINEPREFIX="${innodir}" wine "${dlfile}" /allusers /dir=C:\\InnoSetup /nocancel /norestart /verysilent
|
||||
fi
|
||||
|
||||
# generate resources
|
||||
echo -n "" > utils/inno/resources.iss
|
||||
IFS='
|
||||
'
|
||||
for f in $(find -L bin/Cardinal.lv2/resources/ -type f); do
|
||||
d=$(dirname $(echo ${f} | sed "s|bin/Cardinal.lv2/resources/||"))
|
||||
echo "Source: \"..\\..\\$(echo ${f} | tr '/' '\\')\"; DestDir: \"{commoncf${bit}}\\Cardinal\\$(echo ${d} | tr '/' '\\')\"; Components: resources; Flags: ignoreversion;" >> utils/inno/resources.iss
|
||||
done
|
||||
|
||||
# generate version
|
||||
echo "#define VERSION \"$(make version)\"" > utils/inno/version.iss
|
||||
|
||||
# create the installer file
|
||||
pushd "utils/inno"
|
||||
env WINEPREFIX="${innodir}" wine "${iscc}" "win${bit}.iss"
|
||||
popd
|
||||
|
||||
# move installer file where CI expects it to be
|
||||
mv utils/inno/*.exe .
|
54
utils/inno/win32.iss
Normal file
54
utils/inno/win32.iss
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include "version.iss"
|
||||
|
||||
[Setup]
|
||||
ArchitecturesInstallIn64BitMode=x64
|
||||
AppName=Cardinal
|
||||
AppPublisher=DISTRHO
|
||||
AppPublisherURL=https://github.com/DISTRHO/Cardinal/
|
||||
AppSupportURL=https://github.com/DISTRHO/Cardinal/issues/
|
||||
AppUpdatesURL=https://github.com/DISTRHO/Cardinal/releases/
|
||||
AppVersion={#VERSION}
|
||||
DefaultDirName={commonpf32}\Cardinal
|
||||
DisableDirPage=yes
|
||||
DisableWelcomePage=no
|
||||
LicenseFile=..\..\LICENSE
|
||||
OutputBaseFilename=Cardinal-win32-{#VERSION}-installer
|
||||
OutputDir=.
|
||||
UsePreviousAppDir=no
|
||||
|
||||
[Types]
|
||||
Name: "full"; Description: "Full installation";
|
||||
Name: "custom"; Description: "Custom installation"; Flags: iscustom;
|
||||
|
||||
[Components]
|
||||
Name: resources; Description: "Resources"; Types: full custom; Flags: fixed;
|
||||
Name: carla; Description: "Carla/Ildaeil host tools"; Types: full;
|
||||
Name: lv2; Description: "LV2 plugin"; Types: full;
|
||||
Name: vst2; Description: "VST2 plugin"; Types: full;
|
||||
Name: vst3; Description: "VST3 plugin"; Types: full;
|
||||
|
||||
[Files]
|
||||
#include "resources.iss"
|
||||
; carla
|
||||
Source: "..\..\carla\bin\carla-bridge-*.*"; DestDir: "{commoncf32}\Cardinal\Carla"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\bin\carla-discovery-*.exe"; DestDir: "{commoncf32}\Cardinal\Carla"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\bin\libcarla_utils.dll"; DestDir: "{commoncf32}\Cardinal\Carla"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\libpython3.8.dll"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\Qt5*.dll"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\iconengines\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\imageformats\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\platforms\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\resources\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\styles\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\resources\lib\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources\lib"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\resources\lib\PyQt5\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources\lib\PyQt5"; Components: carla; Flags: ignoreversion;
|
||||
; lv2
|
||||
Source: "..\..\bin\Cardinal.lv2\*.*"; DestDir: "{commoncf32}\LV2\Cardinal.lv2"; Components: lv2; Flags: ignoreversion;
|
||||
Source: "..\..\bin\CardinalFX.lv2\*.*"; DestDir: "{commoncf32}\LV2\CardinalFX.lv2"; Components: lv2; Flags: ignoreversion;
|
||||
Source: "..\..\bin\CardinalSynth.lv2\*.*"; DestDir: "{commoncf32}\LV2\CardinalSynth.lv2"; Components: lv2; Flags: ignoreversion;
|
||||
; vst2
|
||||
Source: "..\..\bin\Cardinal.vst\*.*"; DestDir: "{commoncf32}\VST2\Cardinal.vst"; Components: vst2; Flags: ignoreversion;
|
||||
; vst3
|
||||
Source: "..\..\bin\Cardinal.vst3\Contents\x86-win\Cardinal.vst3"; DestDir: "{commoncf64}\VST3\Cardinal.vst3\Contents\x86-win"; Components: vst3; Flags: ignoreversion;
|
||||
Source: "..\..\bin\CardinalFX.vst3\Contents\x86-win\CardinalFX.vst3"; DestDir: "{commoncf64}\VST3\CardinalFX.vst3\Contents\x86-win"; Components: vst3; Flags: ignoreversion;
|
||||
Source: "..\..\bin\CardinalSynth.vst3\Contents\x86-win\CardinalSynth.vst3"; DestDir: "{commoncf64}\VST3\CardinalSynth.vst3\Contents\x86-win"; Components: vst3; Flags: ignoreversion;
|
54
utils/inno/win64.iss
Normal file
54
utils/inno/win64.iss
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include "version.iss"
|
||||
|
||||
[Setup]
|
||||
ArchitecturesInstallIn64BitMode=x64
|
||||
AppName=Cardinal
|
||||
AppPublisher=DISTRHO
|
||||
AppPublisherURL=https://github.com/DISTRHO/Cardinal/
|
||||
AppSupportURL=https://github.com/DISTRHO/Cardinal/issues/
|
||||
AppUpdatesURL=https://github.com/DISTRHO/Cardinal/releases/
|
||||
AppVersion={#VERSION}
|
||||
DefaultDirName={commonpf64}\Cardinal
|
||||
DisableDirPage=yes
|
||||
DisableWelcomePage=no
|
||||
LicenseFile=..\..\LICENSE
|
||||
OutputBaseFilename=Cardinal-win64-{#VERSION}-installer
|
||||
OutputDir=.
|
||||
UsePreviousAppDir=no
|
||||
|
||||
[Types]
|
||||
Name: "full"; Description: "Full installation";
|
||||
Name: "custom"; Description: "Custom installation"; Flags: iscustom;
|
||||
|
||||
[Components]
|
||||
Name: resources; Description: "Resources"; Types: full custom; Flags: fixed;
|
||||
Name: carla; Description: "Carla/Ildaeil host tools"; Types: full;
|
||||
Name: lv2; Description: "LV2 plugin"; Types: full;
|
||||
Name: vst2; Description: "VST2 plugin"; Types: full;
|
||||
Name: vst3; Description: "VST3 plugin"; Types: full;
|
||||
|
||||
[Files]
|
||||
#include "resources.iss"
|
||||
; carla
|
||||
Source: "..\..\carla\bin\carla-bridge-*.*"; DestDir: "{commoncf64}\Cardinal\Carla"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\bin\carla-discovery-*.exe"; DestDir: "{commoncf64}\Cardinal\Carla"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\bin\libcarla_utils.dll"; DestDir: "{commoncf64}\Cardinal\Carla"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\libpython3.8.dll"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\Qt5*.dll"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\iconengines\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\imageformats\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\platforms\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\resources\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\styles\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\resources\lib\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources\lib"; Components: carla; Flags: ignoreversion;
|
||||
Source: "..\..\carla\build\Carla\resources\lib\PyQt5\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources\lib\PyQt5"; Components: carla; Flags: ignoreversion;
|
||||
; lv2
|
||||
Source: "..\..\bin\Cardinal.lv2\*.*"; DestDir: "{commoncf64}\LV2\Cardinal.lv2"; Components: lv2; Flags: ignoreversion;
|
||||
Source: "..\..\bin\CardinalFX.lv2\*.*"; DestDir: "{commoncf64}\LV2\CardinalFX.lv2"; Components: lv2; Flags: ignoreversion;
|
||||
Source: "..\..\bin\CardinalSynth.lv2\*.*"; DestDir: "{commoncf64}\LV2\CardinalSynth.lv2"; Components: lv2; Flags: ignoreversion;
|
||||
; vst2
|
||||
Source: "..\..\bin\Cardinal.vst\*.*"; DestDir: "{commoncf64}\VST2\Cardinal.vst"; Components: vst2; Flags: ignoreversion;
|
||||
; vst3
|
||||
Source: "..\..\bin\Cardinal.vst3\Contents\x86_64-win\Cardinal.vst3"; DestDir: "{commoncf64}\VST3\Cardinal.vst3\Contents\x86_64-win"; Components: vst3; Flags: ignoreversion;
|
||||
Source: "..\..\bin\CardinalFX.vst3\Contents\x86_64-win\CardinalFX.vst3"; DestDir: "{commoncf64}\VST3\CardinalFX.vst3\Contents\x86_64-win"; Components: vst3; Flags: ignoreversion;
|
||||
Source: "..\..\bin\CardinalSynth.vst3\Contents\x86_64-win\CardinalSynth.vst3"; DestDir: "{commoncf64}\VST3\CardinalSynth.vst3\Contents\x86_64-win"; Components: vst3; Flags: ignoreversion;
|
31
utils/plugin.pkg/package.xml.in
Normal file
31
utils/plugin.pkg/package.xml.in
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<installer-gui-script minSpecVersion="1">
|
||||
<title>Cardinal</title>
|
||||
<domains enable_anywhere="false" enable_currentUserHome="false" enable_localSystem="true" />
|
||||
<license file="@builddir@/../LICENSE" mime-type="text/plain" />
|
||||
<options customize="always" hostArchitectures="x86_64" require-scripts="false" rootVolumeOnly="true" />
|
||||
<pkg-ref id="studio.kx.distrho.cardinal" />
|
||||
<welcome file="@builddir@/welcome.txt" mime-type="text/plain" />
|
||||
<choice id="studio.kx.distrho.cardinal-res" title="Resources" description="Install resources" visible="false">
|
||||
<pkg-ref id="studio.kx.distrho.cardinal-resources" version="0">dpf-cardinal-resources.pkg</pkg-ref>
|
||||
</choice>
|
||||
<choice id="studio.kx.distrho.cardinal-au" title="AU" description="Install AU plugins" visible="true">
|
||||
<pkg-ref id="studio.kx.distrho.cardinal-components" version="0">dpf-cardinal-components.pkg</pkg-ref>
|
||||
</choice>
|
||||
<choice id="studio.kx.distrho.cardinal-lv2" title="LV2" description="Install LV2 plugins" visible="true">
|
||||
<pkg-ref id="studio.kx.distrho.cardinal-lv2bundles" version="0">dpf-cardinal-lv2bundles.pkg</pkg-ref>
|
||||
</choice>
|
||||
<choice id="studio.kx.distrho.cardinal-vst2" title="VST2" description="Install VST2 plugins" visible="true">
|
||||
<pkg-ref id="studio.kx.distrho.cardinal-vst2bundles" version="0">dpf-cardinal-vst2bundles.pkg</pkg-ref>
|
||||
</choice>
|
||||
<choice id="studio.kx.distrho.cardinal-vst3" title="VST3" description="Install VST3 plugins" visible="true">
|
||||
<pkg-ref id="studio.kx.distrho.cardinal-vst3bundles" version="0">dpf-cardinal-vst3bundles.pkg</pkg-ref>
|
||||
</choice>
|
||||
<choices-outline>
|
||||
<line choice="studio.kx.distrho.cardinal-res"/>
|
||||
<line choice="studio.kx.distrho.cardinal-au"/>
|
||||
<line choice="studio.kx.distrho.cardinal-lv2"/>
|
||||
<line choice="studio.kx.distrho.cardinal-vst2"/>
|
||||
<line choice="studio.kx.distrho.cardinal-vst3"/>
|
||||
</choices-outline>
|
||||
</installer-gui-script>
|
14
utils/plugin.pkg/welcome.txt.in
Normal file
14
utils/plugin.pkg/welcome.txt.in
Normal file
|
@ -0,0 +1,14 @@
|
|||
Cardinal is a free and open-source virtual modular synthesizer plugin.
|
||||
It is based on the popular VCV Rack but with a focus on being a fully self-contained plugin version.
|
||||
|
||||
Cardinal provides 3 plugin variants - "main", Synth and FX.
|
||||
They are all equivalent in performance and behaviour, with only the IO and metadata that changes.
|
||||
|
||||
FX and Synth variants both have 2 audio outputs, while "main" has 8.
|
||||
All variants have MIDI input and output support.
|
||||
|
||||
This package provides the AU, LV2, VST2 and VST3 audio plugins for macOS.
|
||||
|
||||
Notes:
|
||||
- Due to AU and VST2 not supporting CV ports, the main variant is not available for these formats.
|
||||
- The VST3 version is in progress, already part of the build but still experimental.
|
Loading…
Add table
Add a link
Reference in a new issue