Skip to content

1.10.1b1

1.10.1b1 #1814

Workflow file for this run

on: [push]
env:
ProjectName: Chataigne
PackagesVersion: 1.2.10
jobs:
windows:
name: Windows
# if: false # always skip job
runs-on: windows-2022
strategy:
matrix:
include:
- arch: win-x64
buildFolder: "VisualStudio2022_CI"
installerName: install
- arch: win7-x64
buildFolder: "VisualStudio2022_Win7CI"
installerName: installWin7
fail-fast: false
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Checkout JUCE
uses: actions/checkout@v2
with:
repository: benkuper/JUCE
ref: develop-local
path: JUCE
- name: Set Variables
id: set_variables
uses: ./.github/actions/set-suffix
with:
os: ${{ matrix.arch }}
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Force 64-bit Linker
shell: powershell
run: |
cmd.exe /c "call `"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat`" && set > %temp%\vcvars.txt"
Get-Content "$env:temp\vcvars.txt" | Foreach-Object { if ($_ -match "^(.*?)=(.*)$") { Set-Content "env:\$($matches[1])" $matches[2] }}
- name: Build
run: msbuild "Builds/${{ matrix.buildFolder }}/${{ env.ProjectName }}.sln" /p:PreferredToolArchitecture=x64 /m /verbosity:normal /p:Configuration=${{ steps.set_variables.outputs.config }}
- name: Create Package
id: create_package
shell: powershell
run: |
Set-Variable -Name "PKGNAME" -Value "${{ env.ProjectName }}-${{ steps.set_variables.outputs.suffix }}"
Invoke-WebRequest "${{ secrets.DEPDIRURL }}${{ env.ProjectName }}-win-x64-${{ steps.set_variables.outputs.dep }}-dependencies.zip" -OutFile ./deps.zip
7z e deps.zip -aoa
&"C:/Program Files (x86)/Inno Setup 6/ISCC.exe" "${{ github.workspace }}/${{ matrix.installerName }}.iss" /O. /F$PKGNAME
echo "pkg-name=$PKGNAME.exe" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
echo "pdb-name=$PKGNAME.pdb" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
working-directory: ./Binaries/CI/App
- name: Upload
uses: ./.github/actions/upload
with:
pkg-name: ./Binaries/CI/App/${{ steps.create_package.outputs.pkg-name }}
url: ${{ secrets.UPLOADURL }}
pass: ${{ secrets.UPLOADPASS }}
- name: Rename PDB
if: ${{ steps.set_variables.outputs.config == 'Release' && matrix.arch == 'win-x64' }}
id: rename_pdb
shell: powershell
run: |
Rename-Item -Path "./${{ env.ProjectName }}.pdb" -NewName "${{ steps.create_package.outputs.pdb-name }}"
working-directory: ./Builds/${{ matrix.buildFolder }}/x64/${{ steps.set_variables.outputs.config }}/App
- name: Upload PDB
if: ${{ steps.set_variables.outputs.config == 'Release' && matrix.arch == 'win-x64' }}
uses: ./.github/actions/upload
with:
pkg-name: ./Builds/${{ matrix.buildFolder }}/x64/${{ steps.set_variables.outputs.config }}/App/${{ steps.create_package.outputs.pdb-name }}
url: ${{ secrets.PDBUPLOADURL }}
pass: ${{ secrets.UPLOADPASS }}
osx:
# if: false # tmp disable
name: OSX
runs-on: macos-latest
strategy:
matrix:
include:
- arch: x86_64
suffix: intel
config: Release
- arch: arm64
suffix: silicon
config: ReleaseSilicon
fail-fast: false
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Checkout JUCE
uses: actions/checkout@v2
with:
repository: benkuper/JUCE
ref: develop-local
path: JUCE
- name: Set Suffix
id: set_variables
uses: ./.github/actions/set-suffix
with:
os: 'osx-${{ matrix.suffix }}'
- name: Download Packages
run: |
curl -L -o Packages.dmg 'http://s.sudre.free.fr/Software/files/Packages.dmg'
hdiutil mount Packages.dmg
sudo installer -pkg "/Volumes/Packages ${{ env.PackagesVersion }}/Install Packages.pkg" -target /
hdiutil detach "/Volumes/Packages ${{ env.PackagesVersion }}/"
- name: Setup XCode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.4.0'
- name: Build
uses: sersoft-gmbh/xcodebuild-action@v2.0.1
with:
project: Builds/MacOSX_CI/${{ env.ProjectName }}.xcodeproj
destination: platform=macOS
jobs: 2
action: build
arch: ${{ matrix.arch }}
configuration: ${{ matrix.config }}
use-xcpretty: true
- name: Bundle Libraries (Silicon Only)
if: ${{ matrix.arch == 'arm64' }}
run: |
# 1. Define Path (Matches .pkgproj expectation)
APP_PATH="Release/${{ env.ProjectName }}.app"
# 2. Verification
if [ ! -d "$APP_PATH" ]; then
echo "::error::App not found at '$APP_PATH'. Please verify your Projucer Post-Build script actually moves the app to this folder."
echo "Listing root directory for debugging:"
ls -F
exit 1
fi
echo "Found App at $APP_PATH. Proceeding with bundling."
FRAMEWORKS_DIR="$APP_PATH/Contents/Frameworks"
EXECUTABLE="$APP_PATH/Contents/MacOS/${{ env.ProjectName }}"
# 3. Create Frameworks directory
mkdir -p "$FRAMEWORKS_DIR"
# 4. Copy Dylibs
cp External/mosquitto/lib/osx/libmosquitto.dylib "$FRAMEWORKS_DIR/"
cp External/mosquitto/lib/osx/libmosquittopp.dylib "$FRAMEWORKS_DIR/"
cp External/mosquitto/lib/osx/libssl.dylib "$FRAMEWORKS_DIR/"
cp External/mosquitto/lib/osx/libcrypto.dylib "$FRAMEWORKS_DIR/"
# 5. Fix Library IDs
install_name_tool -id @rpath/libmosquitto.dylib "$FRAMEWORKS_DIR/libmosquitto.dylib"
install_name_tool -id @rpath/libmosquittopp.dylib "$FRAMEWORKS_DIR/libmosquittopp.dylib"
install_name_tool -id @rpath/libssl.dylib "$FRAMEWORKS_DIR/libssl.dylib"
install_name_tool -id @rpath/libcrypto.dylib "$FRAMEWORKS_DIR/libcrypto.dylib"
# 6. Fix dependency path in libmosquittopp
install_name_tool -change /usr/local/lib/libmosquitto.dylib @rpath/libmosquitto.dylib "$FRAMEWORKS_DIR/libmosquittopp.dylib" || true
install_name_tool -change libmosquitto.dylib @rpath/libmosquitto.dylib "$FRAMEWORKS_DIR/libmosquittopp.dylib" || true
install_name_tool -change libssl.dylib @rpath/libssl.dylib "$FRAMEWORKS_DIR/libmosquittopp.dylib" || true
install_name_tool -change libcrypto.dylib @rpath/libcrypto.dylib "$FRAMEWORKS_DIR/libmosquittopp.dylib" || true
# 7. Add RPATH to Executable
install_name_tool -add_rpath @executable_path/../Frameworks "$EXECUTABLE" || true
# 8. Re-sign (Mandatory after modifying the bundle)
codesign --force --deep --sign - "$APP_PATH"
- name: Create Package
id: create_package
run: |
packagesbuild ${{ env.ProjectName }}.pkgproj
PKGNAME=${{ env.ProjectName }}-${{ steps.set_variables.outputs.suffix }}.pkg
mv ${{ env.ProjectName }}.pkg $PKGNAME
echo "pkg-name=$PKGNAME" >> $GITHUB_OUTPUT
working-directory: ./Package
- name: Upload
uses: ./.github/actions/upload
with:
pkg-name: ./Package/${{ steps.create_package.outputs.pkg-name }}
url: ${{ secrets.UPLOADURL }}
pass: ${{ secrets.UPLOADPASS }}
linux:
name: Linux (x64)
runs-on: ubuntu-22.04
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Checkout JUCE
uses: actions/checkout@v4
with:
repository: benkuper/JUCE
ref: develop-local
path: JUCE
- name: Set Suffix
id: set_variables
uses: ./.github/actions/set-suffix
with:
os: linux-x64
- name: Installing dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libasound2-dev libjack-jackd2-dev ladspa-sdk \
libfreetype6-dev libx11-dev libxcomposite-dev \
libxcursor-dev libxinerama-dev libxext-dev \
libxrandr-dev libxrender-dev libwebkit2gtk-4.0-dev \
libglu1-mesa-dev mesa-common-dev libcurl4-openssl-dev \
libssl-dev libmosquitto-dev libmosquittopp-dev libbluetooth-dev \
libusb-1.0-0-dev libhidapi-dev libsdl2-dev
- name: Build
run: |
# Clean blobs to force system linking
rm -rf External/mosquitto/lib/linux/
rm -rf External/sdl/lib/linux/
cd Builds/LinuxMakefile
make -j$(nproc) CONFIG=Release
- name: Prepare AppImage Tool
run: |
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
chmod a+x appimagetool-x86_64.AppImage
mkdir -p ./Builds/LinuxMakefile/${{ env.ProjectName }}.AppDir/usr/bin/
mkdir -p ./Builds/LinuxMakefile/${{ env.ProjectName }}.AppDir/usr/lib/
- name: Create AppImage
id: create_package
run: |
APPDIR=./Builds/LinuxMakefile/${{ env.ProjectName }}.AppDir
# 1. Copy Executable
cp Builds/LinuxMakefile/build/${{ env.ProjectName }} $APPDIR/usr/bin/
# 2. Copy Libs (ONLY copying, no other manipulation)
LIB_PATH=/usr/lib/x86_64-linux-gnu
cp -d $LIB_PATH/libmosquitto.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libmosquittopp.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libcurl.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libssl.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libcrypto.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libbluetooth.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libusb-1.0.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libhidapi-hidraw.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libSDL2-2.0.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libnghttp2.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libidn2.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libpsl.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libz.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libbrotlidec.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libbrotlicommon.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libssh2.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libngtcp2.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libngtcp2_crypto_ossl.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libldap.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libldap-2.5.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/liblber.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/liblber-2.5.so* $APPDIR/usr/lib/ || true
cp -d $LIB_PATH/libsasl2.so* $APPDIR/usr/lib/ || true
# 3. Generate AppImage
PKGNAME=${{ env.ProjectName }}-${{ steps.set_variables.outputs.suffix }}.AppImage
echo "pkg-name=$PKGNAME" >> $GITHUB_OUTPUT
./appimagetool-x86_64.AppImage --no-appstream $APPDIR $PKGNAME
working-directory: ${{ github.workspace }}
- name: Upload
uses: ./.github/actions/upload
with:
pkg-name: ${{ steps.create_package.outputs.pkg-name }}
url: ${{ secrets.UPLOADURL }}
pass: ${{ secrets.UPLOADPASS }}
raspberrypi:
name: Raspberry Pi (Cross-Compile)
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- name: "RPi 64-bit"
arch_name: aarch64
deb_arch: arm64
gnu_type: aarch64-linux-gnu
buildFolder: "Raspberry64"
buildConfig: "Release"
arch_flags: "-march=armv8-a"
- name: "RPi 32-bit"
arch_name: armhf
deb_arch: armhf
gnu_type: arm-linux-gnueabihf
buildFolder: "Raspberry"
buildConfig: "Release"
arch_flags: "-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard"
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Checkout JUCE
uses: actions/checkout@v4
with:
repository: benkuper/JUCE
ref: develop-local
path: JUCE
- name: Setup Multi-Arch Apt
run: |
sudo dpkg --add-architecture ${{ matrix.deb_arch }}
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu jammy main universe restricted multiverse" | sudo tee /etc/apt/sources.list
echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-updates main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-security main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=${{ matrix.deb_arch }}] http://ports.ubuntu.com/ubuntu-ports jammy main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=${{ matrix.deb_arch }}] http://ports.ubuntu.com/ubuntu-ports jammy-updates main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=${{ matrix.deb_arch }}] http://ports.ubuntu.com/ubuntu-ports jammy-security main universe restricted multiverse" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
- name: Install Cross-Compiler and Libraries
run: |
sudo apt-get install -y crossbuild-essential-${{ matrix.deb_arch }}
sudo apt-get install -y \
libasound2-dev:${{ matrix.deb_arch }} \
libjack-jackd2-dev:${{ matrix.deb_arch }} \
ladspa-sdk:${{ matrix.deb_arch }} \
libfreetype6-dev:${{ matrix.deb_arch }} \
libx11-dev:${{ matrix.deb_arch }} \
libxcomposite-dev:${{ matrix.deb_arch }} \
libxcursor-dev:${{ matrix.deb_arch }} \
libxinerama-dev:${{ matrix.deb_arch }} \
libxext-dev:${{ matrix.deb_arch }} \
libxrandr-dev:${{ matrix.deb_arch }} \
libxrender-dev:${{ matrix.deb_arch }} \
libwebkit2gtk-4.0-dev:${{ matrix.deb_arch }} \
libglu1-mesa-dev:${{ matrix.deb_arch }} \
mesa-common-dev:${{ matrix.deb_arch }} \
libcurl4-openssl-dev:${{ matrix.deb_arch }} \
libssl-dev:${{ matrix.deb_arch }} \
libmosquitto-dev:${{ matrix.deb_arch }} \
libmosquittopp-dev:${{ matrix.deb_arch }} \
libbluetooth-dev:${{ matrix.deb_arch }} \
libusb-1.0-0-dev:${{ matrix.deb_arch }} \
libhidapi-dev:${{ matrix.deb_arch }} \
libsdl2-dev:${{ matrix.deb_arch }}
- name: Set Suffix
id: set_variables
uses: ./.github/actions/set-suffix
with:
os: ${{ matrix.arch_name }}
- name: Build
run: |
# Clean incompatible blobs
rm -rf External/mosquitto/lib/linux/
rm -rf External/mosquitto/lib/rpi/
rm -rf External/sdl/lib/raspberry64/
rm -rf External/sdl/lib/raspberry/
rm -rf Modules/juce_simpleweb/libs/Linux/x86_64/
cd Builds/${{ matrix.buildFolder }}
export PKG_CONFIG_PATH=/usr/lib/${{ matrix.gnu_type }}/pkgconfig
make -j$(nproc) \
CONFIG=${{ matrix.buildConfig }} \
CC=${{ matrix.gnu_type }}-gcc \
CXX=${{ matrix.gnu_type }}-g++ \
AR=${{ matrix.gnu_type }}-ar \
STRIP=${{ matrix.gnu_type }}-strip \
TARGET_ARCH="${{ matrix.arch_flags }}"
- name: Prepare AppImage Tool
run: |
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
chmod a+x appimagetool-x86_64.AppImage
mkdir -p ./Builds/${{ matrix.buildFolder }}/${{ env.ProjectName }}.AppDir/usr/bin/
mkdir -p ./Builds/${{ matrix.buildFolder }}/${{ env.ProjectName }}.AppDir/usr/lib/
- name: Create AppImage
id: create_package
run: |
APPDIR=./Builds/${{ matrix.buildFolder }}/${{ env.ProjectName }}.AppDir
# 1. Copy Executable
cp Builds/${{ matrix.buildFolder }}/build/${{ env.ProjectName }} $APPDIR/usr/bin/
# 2. Copy Libs (ONLY copying, no other manipulation)
# We select the path based on the matrix gnu_type (arm-linux-gnueabihf or aarch64-linux-gnu)
LIB_PATH=/usr/lib/${{ matrix.gnu_type }}
copy_glob() {
if compgen -G "$1" > /dev/null; then
cp -d $1 "$APPDIR/usr/lib/"
fi
}
copy_glob "$LIB_PATH/libmosquitto.so*"
copy_glob "$LIB_PATH/libmosquittopp.so*"
copy_glob "$LIB_PATH/libcurl.so*"
copy_glob "$LIB_PATH/libssl.so*"
copy_glob "$LIB_PATH/libcrypto.so*"
copy_glob "$LIB_PATH/libbluetooth.so*"
copy_glob "$LIB_PATH/libusb-1.0.so*"
copy_glob "$LIB_PATH/libhidapi-hidraw.so*"
copy_glob "$LIB_PATH/libSDL2-2.0.so*"
copy_glob "$LIB_PATH/libnghttp2.so*"
copy_glob "$LIB_PATH/libidn2.so*"
copy_glob "$LIB_PATH/libpsl.so*"
copy_glob "$LIB_PATH/libz.so*"
copy_glob "$LIB_PATH/libbrotlidec.so*"
copy_glob "$LIB_PATH/libbrotlicommon.so*"
copy_glob "$LIB_PATH/libssh2.so*"
copy_glob "$LIB_PATH/libngtcp2.so*"
copy_glob "$LIB_PATH/libngtcp2_crypto_ossl.so*"
copy_glob "$LIB_PATH/libldap.so*"
copy_glob "$LIB_PATH/libldap-2.5.so*"
copy_glob "$LIB_PATH/liblber.so*"
copy_glob "$LIB_PATH/liblber-2.5.so*"
copy_glob "$LIB_PATH/libsasl2.so*"
# 3. Generate AppImage
PKGNAME=${{ env.ProjectName }}-linux-${{ steps.set_variables.outputs.suffix }}.AppImage
echo "pkg-name=$PKGNAME" >> $GITHUB_OUTPUT
export ARCH=${{ matrix.arch_name }}
./appimagetool-x86_64.AppImage --no-appstream $APPDIR $PKGNAME
working-directory: ${{ github.workspace }}
- name: Upload
uses: ./.github/actions/upload
with:
pkg-name: ${{ steps.create_package.outputs.pkg-name }}
url: ${{ secrets.UPLOADURL }}
pass: ${{ secrets.UPLOADPASS }}