1.10.1b1 #1814
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |