Skip to content

Build

Build #90

Workflow file for this run

# Test build process on various OS and Configutations
name: Build
on:
workflow_dispatch:
env:
APPIMAGE_DIR: package/AppImage
jobs:
build-appimage:
name: "${{ matrix.name }} (${{ matrix.arch }})"
runs-on: ${{ matrix.runs-on }}
outputs:
output_version: ${{ steps.converseen-version.outputs.version }}
strategy:
matrix:
include:
- runs-on: ubuntu-latest
name: Build AppImage
arch: x86_64
- runs-on: ubuntu-24.04-arm
name: Build AppImage
arch: aarch64
container:
image: ghcr.io/pkgforge-dev/archlinux:latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get Converseen Version Number
id: converseen-version
run: |
file_content=$(<package/AppImage/build/PKGBUILD)
VERSION=$(echo "$file_content" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "Version: $VERSION"
- name: Create builder user
run: |
pacman -Sy --noconfirm shadow sudo base-devel
# useradd -m -u 1000 -s /bin/bash builder
useradd -m builder
echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
chown -Rv builder:builder $GITHUB_WORKSPACE
- name: Get dependencies
run: |
cd $APPIMAGE_DIR
chmod +x ./get-dependencies.sh && ./get-dependencies.sh
- name: Install Custom ImageMagick
run: |
cd $APPIMAGE_DIR
chmod +x ./build-imagemagick.sh && ./build-imagemagick.sh
- name: Build Converseen
run: |
cd $APPIMAGE_DIR/build
sed -i 's|git+\$url.git#tag=v\$pkgver|git+\$url.git|' PKGBUILD
sudo -u builder makepkg -si --noconfirm
- name: Make AppImage
run: |
cd "$APPIMAGE_DIR"
chmod +x ./*-appimage.sh && ./*-appimage.sh
- name: Upload artifact
uses: actions/upload-artifact@v4.6.2
with:
name: AppImage-${{ matrix.arch }}
path: ${{ env.APPIMAGE_DIR }}/dist
build-linux-qt6-im6:
name: Converseen Linux Build (Qt6 + ImageMagick6)
runs-on: ubuntu-latest
steps:
- name: Checkout Converseen
uses: actions/checkout@v4
with:
path: Converseen
- name: Install Dependencies
run: |
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get upgrade
sudo apt install -y git cmake libglx-dev libgl1-mesa-dev qt6-base-dev qt6-tools-dev qt6-tools-dev-tools qt6-base-dev-tools qt6-l10n-tools qt6-multimedia-dev
sudo apt install -y libtool pkg-config build-essential libssl-dev
sudo apt install -y libmagick++-dev libmagickcore-dev libmagickwand-dev imagemagick
- name: Build Converseen
run: |
cd Converseen
mkdir build
cd build
cmake .. -DUSE_QT6=yes
make
snap-build:
name: Converseen Snap Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Snap
uses: snapcore/action-build@v1
id: snapcraft
with:
path: package/Snap
build-windows:
name: Converseen Windows Build
runs-on: windows-2022
strategy:
matrix:
include:
- qt_version: '5.15.2'
qt_arch: 'win32_msvc2019'
imagemagick_arch: 'x86'
vs_arch: 'x86'
bits: '32bit'
cmake_extra_flags: '-DOpenSSL_Win32_Path="..\..\openssl-1.1\x86\bin"'
- qt_version: '6.10.1'
qt_arch: 'win64_msvc2022_64'
imagemagick_arch: 'x64'
vs_arch: 'x64'
bits: '64bit'
cmake_extra_flags: '-DUSE_QT6=yes'
steps:
- name: Download ImageMagick for Windows (${{ matrix.bits }})
shell: powershell
run: |
# Get latest version number from GitHub
$gitTags = git ls-remote --sort="version:refname" --tags https://github.com/ImageMagick/ImageMagick.git
$lastTagLine = $gitTags[-1]
$lastTagVersion = $lastTagLine -replace '.*?(\d+\.\d+\.\d+-\d+).*', '$1'
$latestVersionNumber = $lastTagVersion
Write-Host "Latest ImageMagick Version Found: $latestVersionNumber"
Invoke-WebRequest -Uri "https://imagemagick.org/archive/binaries/ImageMagick-$latestVersionNumber-Q16-HDRI-${{ matrix.imagemagick_arch }}-dll.exe" -OutFile ImageMagick-Installer.exe
- name: Install ImageMagick for Windows (${{ matrix.bits }})
shell: cmd
run: |
ImageMagick-Installer.exe /MERGETASKS=install_devel /VERYSILENT /DIR=ImageMagick
- name: Checkout Converseen
uses: actions/checkout@v4
with:
path: Converseen
- name: Install Qt ${{ matrix.qt_version }} (${{ matrix.bits }})
uses: jurplel/install-qt-action@v4
with:
version: '${{ matrix.qt_version }}'
host: 'windows'
target: 'desktop'
arch: '${{ matrix.qt_arch }}'
install-deps: 'true'
set-env: 'true'
- name: Download OpenSSL (32 bit only)
shell: powershell
if: matrix.vs_arch == 'x86'
run: |
Invoke-WebRequest -Uri "https://download.firedaemon.com/FireDaemon-OpenSSL/openssl-1.1.1w.zip" -OutFile "openssl-1.1.1w.zip"
Expand-Archive -Path "openssl-1.1.1w.zip" -DestinationPath . -Force
- name: Build Converseen (Qt ${{ matrix.qt_version }} ${{ matrix.bits }})
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=${{ matrix.vs_arch }}
cd Converseen
mkdir build
cd build
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE:STRING=Release -DImageMagick_EXECUTABLE_DIR="${{ github.workspace }}\ImageMagick" ${{ matrix.cmake_extra_flags }} ..
nmake
cpack -B package
- name: Prepare Artifacts (Qt ${{ matrix.qt_version }} ${{ matrix.bits }})
shell: cmd
run: |
mkdir artifacts-qt${{ matrix.qt_version }}-${{ matrix.bits }}
cp Converseen/build/package/*.msi artifacts-qt${{ matrix.qt_version }}-${{ matrix.bits }}/
cp Converseen/build/package/*.zip artifacts-qt${{ matrix.qt_version }}-${{ matrix.bits }}/
- uses: actions/upload-artifact@v4
with:
name: Windows-Qt${{ matrix.qt_version }}-${{ matrix.bits }}
path: 'artifacts-qt${{ matrix.qt_version }}-${{ matrix.bits }}'
build-macos:
name: Converseen macOS Build
runs-on: macos-14
env:
BASE_DIR: ${{ github.workspace }}/im_build
WORKING_DIR: ${{ github.workspace }}
steps:
- name: Install dependencies
run: |
set -e
export HOMEBREW_NO_AUTO_UPDATE=1
brew install pkg-config freetype jpeg-turbo libheif libpng libtiff libtool libzip openexr openjpeg webp libraw ghostscript
- name: Checkout Converseen
uses: actions/checkout@v4
with:
path: Converseen
- name: Set Environment
id: set-env
run: |
file_content=$(tr -d '\r' <converseen/package/macOS/version.txt)
VERSION=$(echo "$file_content" | grep -oE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
BUILD=$(echo "$file_content" | grep -oE '[0-9]+$')
export LIB_DIR="${BASE_DIR}/lib"
export LOCAL_LIB="/usr/local/lib"
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "BUILD=$BUILD" >> $GITHUB_ENV
echo "LIB_DIR=$LIB_DIR" >> $GITHUB_ENV
echo "LOCAL_LIB=$LOCAL_LIB" >> $GITHUB_ENV
echo "ver=$VERSION" >> "$GITHUB_OUTPUT"
echo "Version: $VERSION"
echo "Build Number: $BUILD"
- name: Download ImageMagick
run: |
wget https://imagemagick.org/archive/ImageMagick.tar.gz
tar -xzvf ImageMagick.tar.gz
- name: Build ImageMagick
run: |
cd ImageMagick-*
export CFLAGS="-O2"
export CXXFLAGS="-O2"
export LDFLAGS="-Wl,-headerpad_max_install_names -Wl,-headerpad,0x2000"
# Fix openmp compile error with libraw
sed -i '' 's/-fopenmp//g' $(brew --prefix libraw)/lib/pkgconfig/libraw.pc
sed -i '' 's/-fopenmp//g' $(brew --prefix libraw)/lib/pkgconfig/libraw_r.pc
./configure --prefix=${{ github.workspace }}/im_build \
--disable-silent-rules \
--disable-dependency-tracking \
--without-perl \
--disable-installed \
--with-quantum-depth=16 \
--disable-opencl \
--enable-shared \
--with-freetype=yes \
--with-gvc=no \
--with-openjp2 \
--with-openexr \
--with-webp=yes \
--with-heic=yes \
--with-raw=yes \
--with-zip=yes \
--with-gslib \
--with-gs-font-dir=/usr/local/share/ghostscript/fonts \
--without-djvu \
--without-fftw \
--without-pango \
--without-wmf \
--without-x \
--disable-openmp
make
make install
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
aqtversion: '==3.1.*'
version: '6.10.*'
host: 'mac'
target: 'desktop'
arch: 'clang_64'
- name: Build Converseen
run: |
cd Converseen
mkdir build
cd build
cmake \
-DUSE_QT6=yes \
-DMACOS_DEPLOY=yes \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="${{ github.workspace }}/im_build" \
-DCMAKE_INSTALL_PREFIX=install ..
make
- name: Deploy Converseen
run: |
cd Converseen/build
cmake --install .
- name: Compress Converseen
run: |
cd Converseen/build/install
zip -r --symlinks -9 converseen-${{ env.VERSION }}-${{ env.BUILD }}_beta_macos-x86_64.zip converseen.app
pwd
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ConverseenMacOSIntel
path: build/bin/converseen-${{ env.VERSION }}-${{ env.BUILD }}_beta_macos-x86_64.zip