diff --git a/.ci/ArchLinux/Dockerfile b/.ci/Arch/Dockerfile similarity index 100% rename from .ci/ArchLinux/Dockerfile rename to .ci/Arch/Dockerfile diff --git a/.ci/UbuntuFocal/Dockerfile b/.ci/Ubuntu20.04/Dockerfile similarity index 97% rename from .ci/UbuntuFocal/Dockerfile rename to .ci/Ubuntu20.04/Dockerfile index d0f6d443e..45481d44b 100644 --- a/.ci/UbuntuFocal/Dockerfile +++ b/.ci/Ubuntu20.04/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:focal +FROM ubuntu:20.04 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ diff --git a/.ci/UbuntuJammy/Dockerfile b/.ci/Ubuntu22.04/Dockerfile similarity index 97% rename from .ci/UbuntuJammy/Dockerfile rename to .ci/Ubuntu22.04/Dockerfile index f833a084f..260f449cb 100644 --- a/.ci/UbuntuJammy/Dockerfile +++ b/.ci/Ubuntu22.04/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:jammy +FROM ubuntu:22.04 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ diff --git a/.ci/UbuntuNoble/Dockerfile b/.ci/Ubuntu24.04/Dockerfile similarity index 97% rename from .ci/UbuntuNoble/Dockerfile rename to .ci/Ubuntu24.04/Dockerfile index 00b314dc5..d203690e1 100644 --- a/.ci/UbuntuNoble/Dockerfile +++ b/.ci/Ubuntu24.04/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:noble +FROM ubuntu:24.04 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ diff --git a/.ci/UbuntuBionic/Dockerfile b/.ci/UbuntuBionic/Dockerfile deleted file mode 100644 index 03494dc6c..000000000 --- a/.ci/UbuntuBionic/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential \ - ccache \ - clang-format \ - cmake \ - file \ - g++ \ - git \ - liblzma-dev \ - libmariadb-dev-compat \ - libprotobuf-dev \ - libqt5multimedia5-plugins \ - libqt5sql5-mysql \ - libqt5svg5-dev \ - libqt5websockets5-dev \ - protobuf-compiler \ - qt5-default \ - qt5-image-formats-plugins \ - qtmultimedia5-dev \ - qttools5-dev \ - qttools5-dev-tools \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* diff --git a/.ci/compile.sh b/.ci/compile.sh index 90be0e8ab..1588c0d5f 100755 --- a/.ci/compile.sh +++ b/.ci/compile.sh @@ -189,6 +189,12 @@ fi if [[ $MAKE_PACKAGE ]]; then echo "::group::Create package" + + if [[ $RUNNER_OS == macOS ]]; then + # Workaround https://github.com/actions/runner-images/issues/7522 + echo "killing XProtectBehaviorService"; sudo pkill -9 XProtect >/dev/null || true; + echo "waiting for XProtectBehaviorService kill"; while pgrep "XProtect"; do sleep 3; done; + fi cmake --build . --target package --config "$BUILDTYPE" echo "::endgroup::" diff --git a/.ci/release_template.md b/.ci/release_template.md index 3e9cece59..7f6cee990 100644 --- a/.ci/release_template.md +++ b/.ci/release_template.md @@ -8,19 +8,18 @@ git push -d origin --REPLACE-WITH-BETA-LIST-- include different targets -->
Pre-compiled binaries we serve:
- - Windows 7+
- Windows 10+
- - macOS 10.15+ ("Catalina")
- - macOS 13+ ("Ventura")
- - Ubuntu 18.04 LTS ("Bionic Beaver")
- - Ubuntu 20.04 LTS ("Focal Fossa")
- - Ubuntu 22.04 LTS ("Jammy Jellyfish")
+ - Windows 7+
+ - macOS 13+ ("Ventura") / Apple M
+ - macOS 13+ ("Ventura") / Intel
- Ubuntu 24.04 LTS ("Noble Numbat")
- - Debian 11 ("Bullseye")
+ - Ubuntu 22.04 LTS ("Jammy Jellyfish")
+ - Ubuntu 20.04 LTS ("Focal Fossa")
- Debian 12 ("Bookworm")
+ - Debian 11 ("Bullseye")
+ - Fedora 40
- Fedora 39
- - Fedora 40
-We are also packaged in Arch Linux's official community repository, courtesy of @FFY00
+We are also packaged in Arch Linux's official "extra" repository, courtesy of @FFY00
General Linux support is available via a flatpak package (Flathub)
diff --git a/.github/workflows/desktop-build.yml b/.github/workflows/desktop-build.yml
index 0300ab4a4..c4a92d30e 100644
--- a/.github/workflows/desktop-build.yml
+++ b/.github/workflows/desktop-build.yml
@@ -37,13 +37,13 @@ jobs:
shell: bash
run: |
tag_regex='^refs/tags/'
- if [[ $GITHUB_EVENT_NAME == pull-request ]]; then # pull request
+ if [[ $GITHUB_EVENT_NAME == pull-request ]]; then # pull request
sha="${{github.event.pull_request.head.sha}}"
- elif [[ $GITHUB_REF =~ $tag_regex ]]; then # release
+ elif [[ $GITHUB_REF =~ $tag_regex ]]; then # release
sha="$GITHUB_SHA"
tag="${GITHUB_REF/refs\/tags\//}"
echo "tag=$tag" >>"$GITHUB_OUTPUT"
- else # push to branch
+ else # push to branch
sha="$GITHUB_SHA"
fi
echo "sha=$sha" >>"$GITHUB_OUTPUT"
@@ -85,46 +85,52 @@ jobs:
strategy:
fail-fast: false
matrix:
- # these names correspond to the files in .ci/$distro
+ # These names correspond to the files in ".ci/$distro$version"
include:
- - distro: ArchLinux
- package: skip # we are packaged in arch already
+ - distro: Arch
+ package: skip # We are packaged in Arch already
allow-failure: yes
- - distro: Debian11
+ - distro: Debian
+ version: 11
+ package: DEB
+ test: skip # Running tests on all distros is superfluous
+
+ - distro: Debian
+ version: 12
package: DEB
- - distro: Debian12
- package: DEB
+ - distro: Fedora
+ version: 39
+ package: RPM
+ test: skip # Running tests on all distros is superfluous
- - distro: Fedora39
+ - distro: Fedora
+ version: 40
package: RPM
- - distro: Fedora40
- package: RPM
+ - distro: Ubuntu
+ version: 20.04
+ package: DEB
+ test: skip # Ubuntu 20.04 has a broken Qt for debug builds
- - distro: UbuntuBionic
+ - distro: Ubuntu
+ version: 22.04
+ package: DEB
+ test: skip # Running tests on all distros is superfluous
+
+ - distro: Ubuntu
+ version: 24.04
package: DEB
- - distro: UbuntuFocal
- package: DEB
- test: skip # UbuntuFocal has a broken qt for debug builds
-
- - distro: UbuntuJammy
- package: DEB
- test: skip # running tests on all distros is superfluous
-
- - distro: UbuntuNoble
- package: DEB
-
- name: ${{matrix.distro}}
+ name: ${{matrix.distro}} ${{matrix.version}}
needs: configure
runs-on: ubuntu-latest
continue-on-error: ${{matrix.allow-failure == 'yes'}}
env:
- NAME: ${{matrix.distro}}
- CACHE: /tmp/${{matrix.distro}}-cache # ${{runner.temp}} does not work?
- # cache size over the entire repo is 10Gi link:
+ NAME: ${{matrix.distro}}${{matrix.version}}
+ CACHE: /tmp/${{matrix.distro}}${{matrix.version}}-cache # ${{runner.temp}} does not work?
+ # Cache size over the entire repo is 10Gi:
# https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#usage-limits-and-eviction-policy
CCACHE_SIZE: 200M
@@ -132,7 +138,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- - name: Get cache timestamp
+ - name: Generate cache timestamp
id: cache_timestamp
shell: bash
run: echo "timestamp=$(date -u '+%Y%m%d%H%M%S')" >>"$GITHUB_OUTPUT"
@@ -143,19 +149,17 @@ jobs:
timestamp: ${{steps.cache_timestamp.outputs.timestamp}}
with:
path: ${{env.CACHE}}
- key: docker-${{matrix.distro}}-cache-${{env.timestamp}}
+ key: docker-${{matrix.distro}}${{matrix.version}}-cache-${{env.timestamp}}
restore-keys: |
- docker-${{matrix.distro}}-cache-
+ docker-${{matrix.distro}}${{matrix.version}}-cache-
- - name: Build ${{matrix.distro}} Docker image
+ - name: Build ${{matrix.distro}} ${{matrix.version}} Docker image
shell: bash
run: source .ci/docker.sh --build
- name: Build debug and test
if: matrix.test != 'skip'
shell: bash
- env:
- distro: '${{matrix.distro}}'
run: |
source .ci/docker.sh
RUN --server --debug --test --ccache "$CCACHE_SIZE" --parallel 4
@@ -166,8 +170,7 @@ jobs:
shell: bash
env:
BUILD_DIR: build
- SUFFIX: '-${{matrix.distro}}'
- distro: '${{matrix.distro}}'
+ SUFFIX: '-${{matrix.distro}}${{matrix.version}}'
type: '${{matrix.package}}'
run: |
source .ci/docker.sh
@@ -179,7 +182,7 @@ jobs:
if: matrix.package != 'skip'
uses: actions/upload-artifact@v4
with:
- name: ${{matrix.distro}}-package
+ name: ${{matrix.distro}}${{matrix.version}}-package
path: ${{steps.build.outputs.path}}
if-no-files-found: error
@@ -198,24 +201,30 @@ jobs:
fail-fast: false
matrix:
include:
- - target: 12_Monterey_and_13_Ventura
- os: macos-12
- xcode: "14.0.1"
+ - target: 13
+ soc: Intel
+ os: macos-13
+ xcode: "14.3.1"
type: Release
+ core_count: 4
make_package: 1
- - target: 14_Sonoma
+ - target: 14
+ soc: Apple
os: macos-14
- xcode: "15.4"
+ xcode: "14.3.1"
type: Release
+ core_count: 3
make_package: 1
- - target: 14_Sonoma_Debug
+ - target: 14
+ soc: Apple
os: macos-14
- xcode: "15.4"
+ xcode: "14.3.1"
type: Debug
+ core_count: 3
- name: macOS${{matrix.target}}
+ name: macOS ${{matrix.target}}${{ matrix.soc == 'Intel' && ' Intel' || '' }}${{ matrix.type == 'Debug' && ' Debug' || '' }}
needs: configure
runs-on: ${{matrix.os}}
continue-on-error: ${{matrix.allow-failure == 'yes'}}
@@ -229,8 +238,8 @@ jobs:
- name: Install dependencies using Homebrew
shell: bash
- # cmake cannot find the mysql connector
- # neither of these works: mariadb-connector-c mysql-connector-c++
+ # CMake cannot find the MySQL connector
+ # Neither of these works: mariadb-connector-c mysql-connector-c++
env:
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
run: |
@@ -244,16 +253,17 @@ jobs:
BUILDTYPE: '${{matrix.type}}'
MAKE_TEST: 1
MAKE_PACKAGE: '${{matrix.make_package}}'
- PACKAGE_SUFFIX: '-macOS-${{matrix.target}}'
- # macOS runner actually have only 3 cores
- # See https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
- run: .ci/compile.sh --server --parallel 3
+ PACKAGE_SUFFIX: '-macOS${{matrix.target}}_${{matrix.soc}}'
+ # macOS runner have 3 cores usually - only the macos-13 image has 4:
+ # https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
+ # https://github.com/actions/runner-images?tab=readme-ov-file#available-images
+ run: .ci/compile.sh --server --parallel ${{matrix.core_count}}
- name: Upload artifact
if: matrix.make_package
uses: actions/upload-artifact@v4
with:
- name: macOS-${{matrix.target}}-dmg
+ name: macOS${{matrix.target}}${{ matrix.soc == 'Intel' && '_Intel' || '' }}${{ matrix.type == 'Debug' && '_Debug' || '' }}-dmg
path: ${{steps.build.outputs.path}}
if-no-files-found: error