Files
deskflow/.github/actions/install-dependencies/action.yml
2025-03-27 12:33:39 +00:00

108 lines
4.0 KiB
YAML

# SPDX-FileCopyrightText: 2024 Chris Rizzitello <sithlord48@gmail.com>
# SPDX-License-Identifier: MIT
name: "Install dependencies for deskflow"
description: "Install the dependencies needed to build deskflow"
inputs:
like:
description: "Used only on linux distro type: debian, fedora, suse, arch"
required: false
qt-version:
description: "The version of Qt to install (Windows & macOS)"
required: false
qt-install-dir:
description: "The path to install Qt into (Windows & macOS)"
required: false
outputs:
vcpkg-cmake-config:
description: "windows vcpkg output for cmaket"
value: ${{ steps.vcpkg.outputs.vcpkg-cmake-config }}
runs:
using: "composite"
steps:
- name: Install Depends
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
echo "Window not supported yet"
elif [ "$RUNNER_OS" == "macOS" ]; then
brew install cmake googletest ninja openssl --quiet
elif [ "$RUNNER_OS" == "Linux" ]; then
if [ ${{inputs.like}} == "debian" ]; then
apt update -qqq > /dev/null
apt install -qqq cmake build-essential ninja-build \
xorg-dev libx11-dev libxtst-dev libssl-dev \
libglib2.0-dev libnotify-dev \
libxkbfile-dev qt6-base-dev qt6-tools-dev \
libgtk-3-dev libgtest-dev libgmock-dev \
libei-dev libportal-dev libtomlplusplus-dev libcli11-dev -y >/dev/null
elif [ ${{inputs.like}} == "fedora" ]; then
dnf install -y cmake make ninja-build gcc-c++ \
rpm-build openssl-devel glib2-devel \
libXtst-devel libnotify-devel \
libxkbfile-devel qt6-qtbase-devel qt6-qttools-devel \
gtk3-devel gtest-devel gmock-devel \
libei-devel libportal-devel tomlplusplus-devel \
cli11-devel
elif [ ${{inputs.like}} == "suse" ]; then
zypper refresh
zypper install -y --force-resolution \
cmake make ninja gcc-c++ rpm-build libopenssl-devel \
glib2-devel libXtst-devel libnotify-devel \
libxkbfile-devel qt6-base-devel qt6-tools-devel gtk3-devel \
googletest-devel googlemock-devel libei-devel \
libportal-devel tomlplusplus-devel cli11-devel
elif [ ${{ inputs.like }} == "arch" ]; then
pacman -Syu --noconfirm base-devel cmake ninja \
gcc openssl glib2 libxtst libnotify \
libxkbfile gtest libei libportal \
qt6-base qt6-tools gtk3 tomlplusplus cli11
else
echo "Unknown like"
fi
else
echo "Unknown OS: $RUNNER_OS"
fi
shell: bash
- name: Install Qt
if: ${{runner.os != 'Linux' }}
uses: jurplel/install-qt-action@v4
with:
dir: ${{inputs.qt-install-dir}}
version: ${{inputs.qt-version}}
cache: true
cache-key-prefix: ${{matrix.target.os}}-${{inputs.qt-version}}
# Install Ninja with an action instead of using Chocolatey, as it's more
# reliable and faster. The Ninja install action is pretty good as it
# downloads directly from the `ninja-build` GitHub project releases.
- name: Install Ninja
if: ${{ runner.os == 'Windows' }}
uses: seanmiddleditch/gha-setup-ninja@master
- name: Build and cache vcpkg
if: ${{ runner.os == 'Windows' }}
id: vcpkg
uses: johnwason/vcpkg-action@v6
with:
pkgs: wintoast gtest pkgconf openssl
extra-args: --classic
triplet: x64-windows-release
token: ${{ github.token }}
github-binarycache: true
- name: Install Wix
if: ${{ runner.os == 'Windows' }}
run: |
dotnet tool install --global wix --version 5.0.2
wix extension add --global WixToolset.UI.wixext/5.0.2
wix extension add --global WixToolset.Util.wixext/5.0.2
wix extension add --global WixToolset.Firewall.wixext/5.0.2
shell: pwsh