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:
Filipe Coelho 2022-03-12 22:12:22 +00:00 committed by GitHub
parent dbefe13bfb
commit a1017be6ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 430 additions and 90 deletions

67
utils/create-macos-installer.sh Executable file
View 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

View 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
View 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
View 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;

View 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>

View 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.