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