Skip to content

CI Build for Windows MSI installer #1084

CI Build for Windows MSI installer

CI Build for Windows MSI installer #1084

Workflow file for this run

name: Build-ubuntu
on:
push:
pull_request:
workflow_dispatch:
env:
SDK_VERSION_STANDALONE: 1.3.275.0
SDK_VERSION_REPO: 1.3.275
jobs:
Linux:
strategy:
matrix:
os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04]
sdk_type: [standalone,repo]
docs: [false,true]
exclude:
- os: ubuntu-20.04
docs: true
- os: ubuntu-22.04
sdk_type: standalone
docs: true
- os: ubuntu-24.04
sdk_type: standalone
docs: true
runs-on: ${{ matrix.os }}
steps:
- name: Check Out Code
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Use CCache
if: ${{ ! matrix.docs }}
uses: hendrikmuhs/[email protected]
with:
key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.sdk_type}}
max-size: "1500M"
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get -y install \
build-essential \
git \
cmake \
ninja-build \
pkgconf \
libgtkmm-3.0-dev \
libcairomm-1.0-dev \
libsigc++-2.0-dev \
libyaml-cpp-dev \
libglfw3-dev \
curl \
wget \
xzip \
libhidapi-dev
- name: Install Docs Dependencies
if: ${{ matrix.docs }}
run: |
sudo apt-get -y install \
dvipng \
texlive \
texlive-fonts-extra \
texlive-extra-utils
- name: Load Vulkan SDK Repo (Ubuntu 20.04)
if: ${{ (matrix.os == 'ubuntu-20.04') && (matrix.sdk_type == 'repo') }}
run: |
wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-${{ env.SDK_VERSION_REPO }}-focal.list https://packages.lunarg.com/vulkan/${{ env.SDK_VERSION_REPO }}/lunarg-vulkan-${{ env.SDK_VERSION_REPO }}-focal.list
sudo apt-get update
sudo apt-get install vulkan-sdk
- name: Load Vulkan SDK Repo (Ubuntu 22.04)
if: ${{ (matrix.os == 'ubuntu-22.04') && (matrix.sdk_type == 'repo') }}
run: |
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-${{ env.SDK_VERSION_REPO }}-jammy.list https://packages.lunarg.com/vulkan/${{ env.SDK_VERSION_REPO }}/lunarg-vulkan-${{ env.SDK_VERSION_REPO }}-jammy.list
sudo apt update
sudo apt install vulkan-sdk
- name: Load Vulkan SDK Repo (Ubuntu 24.04)
if: ${{ (matrix.os == 'ubuntu-24.04') && (matrix.sdk_type == 'repo') }}
run: |
sudo apt update
sudo apt install libvulkan-dev glslang-dev glslang-tools spirv-tools glslc
- name: Add PPA for Ubuntu 20.04 for catch2
if: ${{ matrix.os == 'ubuntu-20.04' }}
run: sudo add-apt-repository ppa:savoury1/build-tools
- name: Install More Dependencies
run: |
sudo apt-get update
sudo apt-get -y install \
catch2 \
mesa-vulkan-drivers
- name: Cache Vulkan SDK Standalone
if: ${{ matrix.sdk_type == 'standalone' }}
uses: actions/cache@v4
with:
path: ~/VulkanSDK
key: ${{ runner.os }}-vulkansdk-${{ env.SDK_VERSION_STANDALONE }}
- name: Install Vulkan SDK (Standalone)
if: ${{ matrix.sdk_type == 'standalone' }}
run: |
[[ -d ~/VulkanSDK/${{ env.SDK_VERSION_STANDALONE }} ]] && exit 0
cd
mkdir VulkanSDK
cd VulkanSDK
curl -LO https://sdk.lunarg.com/sdk/download/${{ env.SDK_VERSION_STANDALONE }}/linux/vulkansdk-linux-x86_64-${{ env.SDK_VERSION_STANDALONE }}.tar.xz
tar xf vulkansdk-linux-x86_64-${{ env.SDK_VERSION_STANDALONE }}.tar.xz
- name: Cache FFTS
uses: actions/cache@v4
with:
path: ~/ffts
key: ${{ runner.os }}-${{ matrix.os }}-ffts
- name: Clone and Build FFTS Library
run: |
[[ ${{ matrix.docs }} = 'false' ]] && export CMAKE_C_COMPILER_LAUNCHER=ccache && export CMAKE_CXX_COMPILER_LAUNCHER=ccache
if [[ ! -d ~/ffts ]]; then
cd
git clone https://github.com/anthonix/ffts.git
cd ffts
mkdir build
cd build
cmake \
-DENABLE_SHARED=ON \
-GNinja \
..
ninja
fi
cd ~/ffts/build
sudo ninja install
- name: Configure
run: |
[[ (${{matrix.sdk_type }} = 'standalone') ]] && source $HOME/VulkanSDK/${{ env.SDK_VERSION_STANDALONE }}/setup-env.sh
[[ ${{ matrix.docs }} = 'false' ]] && export CMAKE_C_COMPILER_LAUNCHER=ccache && export CMAKE_CXX_COMPILER_LAUNCHER=ccache
mkdir build
cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DDISABLE_PCH=ON \
-GNinja \
-DCPACK_GENERATOR=DEB \
-DCMAKE_INSTALL_PREFIX=/usr \
..
- name: Build
if: ${{ ! matrix.docs }}
run: |
cd build
ninja
- name: Build Package
if: ${{ ! matrix.docs }}
run: |
cd build
ninja package
- name: Build Docs
if: ${{ matrix.docs }}
run: |
cd build
ninja doc
- name: Run Tests
if: ${{ ! matrix.docs }}
run: |
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.x86_64.json
cd build
ninja test
- name: Upload Artifacts
if: ${{ ! matrix.docs }}
uses: actions/upload-artifact@v4
with:
name: ngscopeclient-${{ matrix.os }}-${{ github.job }}-${{ matrix.sdk_type }}
path: |
build/src/ngscopeclient/ngscopeclient
build/src/ngscopeclient/icons/*
build/src/ngscopeclient/shaders/*
build/lib/scopehal/libscopehal.so
build/lib/scopeprotocols/libscopeprotocols.so
build/Testing/Temporary/LastTest.log
- name: Upload Package
if: ${{ ! matrix.docs }}
uses: actions/upload-artifact@v4
with:
name: ngscopeclient-${{ matrix.os }}-${{ github.job }}-${{ matrix.sdk_type }}-package
path: build/*.deb
- name: Upload Documentation
if: ${{ matrix.docs }}
uses: actions/upload-artifact@v4
with:
name: ngscopeclient-${{ matrix.os }}-${{ github.job }}-docs
path: build/doc/ngscopeclient-manual.pdf