diff --git a/.circleci/build-image b/.circleci/build-image deleted file mode 100755 index 42ed6b9..0000000 --- a/.circleci/build-image +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -# Install docker. -apk add docker-cli - -# Run this before set -eux so we don't print credentials to the CI logs. -if [ -n "$DOCKER_USER" ]; then - echo "$DOCKER_PASS" | docker login --username "$DOCKER_USER" --password-stdin -else - DOCKER_USER= - DOCKER_PASS= -fi - -set -eux - -BUILD="$1" -IMAGE="$2" - -docker pull "$IMAGE" || true -docker build --cache-from "$IMAGE" --tag "$IMAGE" "$BUILD" -if [ -n "$DOCKER_USER" ]; then - docker push "$IMAGE" -fi - -touch "/tmp/docker-build-$BUILD.done" diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index de1c63f..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -version: 2.1 - -workflows: - version: 2 - build: - jobs: - - compcert - -jobs: - ################################################## - # - # :: Static analysis images - # - ################################################## - - compcert: - docker: [{ image: alpine:3.19.0 }] - - steps: - - run: apk add git openssh-client - - checkout - - setup_remote_docker - - run: .circleci/build-image compcert toxchat/compcert:latest diff --git a/.circleci/wait-image b/.circleci/wait-image deleted file mode 100755 index 5320f10..0000000 --- a/.circleci/wait-image +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -set -eux - -BUILD="$1" - -readarray -t WAITS <<<"$(seq 1 10)" - -for i in "${WAITS[@]}"; do - if [ -f "/tmp/docker-build-$BUILD.done" ]; then - break - fi - - tail -f "/tmp/docker-build-$BUILD.log" & - sleep 300 -done diff --git a/freebsd/src/setup-vm b/freebsd/src/setup-vm index 2284340..2b2c699 100755 --- a/freebsd/src/setup-vm +++ b/freebsd/src/setup-vm @@ -62,18 +62,19 @@ RUN chsh -s /usr/local/bin/bash root # Install required toxcore dependencies RUN PAGER=cat ASSUME_ALWAYS_YES=YES pkg install \ + autotools \ + cmake \ git \ - opus \ + gmake \ libconfig \ - libvpx \ + libsndfile \ libsodium \ - gmake \ - cmake \ + libvpx \ + ninja \ + opus \ pkgconf \ portaudio \ - libsndfile \ - texinfo \ - autotools + texinfo # === Compress the VM image === diff --git a/qtox/build_qtbase_macos.sh b/qtox/build_qtbase_macos.sh index b1a37b9..39b7239 100755 --- a/qtox/build_qtbase_macos.sh +++ b/qtox/build_qtbase_macos.sh @@ -8,7 +8,6 @@ set -euxo pipefail readonly SCRIPT_DIR="$(dirname "$(realpath "$0")")" source "$SCRIPT_DIR/build_utils.sh" -source "$SCRIPT_DIR/download/version_qt.sh" parse_arch --dep "qtbase" --supported "macos-arm64 macos-x86_64" "$@" @@ -18,18 +17,25 @@ export CXXFLAGS="-DQT_MESSAGELOGCONTEXT" export OBJCXXFLAGS="$CXXFLAGS" if [ -n "$SANITIZE" ]; then - QT_SANITIZE=(-sanitize "$CLANG_SANITIZER") + QT_CONFIGURE_FLAGS=(-sanitize "$CLANG_SANITIZER") BUILD_TYPE=debug else - QT_SANITIZE=() + QT_CONFIGURE_FLAGS=() fi if [ "$BUILD_TYPE" = "debug" ]; then - QT_FORCE_DEBUG_INFO="-force-debug-info" + QT_CONFIGURE_FLAGS+=("-force-debug-info") else - QT_FORCE_DEBUG_INFO="-no-force-debug-info" + QT_CONFIGURE_FLAGS+=("-no-force-debug-info") fi +if [ "$MACOS_MINIMUM_SUPPORTED_VERSION" != "10.15" ]; then + QT_CONFIGURE_FLAGS+=("-no-feature-printsupport") +fi + +# We want -Werror to catch warnings related to macOS version compatibility. +sed -i '' -e 's/-Wextra/-Wextra -Werror "-Wno-#warnings" -Wno-deprecated-declarations/' cmake/QtCompilerFlags.cmake + mkdir _build && pushd _build ../configure \ --prefix="$QT_PREFIX" \ @@ -37,8 +43,7 @@ mkdir _build && pushd _build -static \ -release \ -force-asserts \ - "$QT_FORCE_DEBUG_INFO" \ - "${QT_SANITIZE[@]}" \ + "${QT_CONFIGURE_FLAGS[@]}" \ -qt-doubleconversion \ -qt-freetype \ -qt-harfbuzz \ @@ -49,7 +54,6 @@ mkdir _build && pushd _build -no-feature-androiddeployqt \ -no-feature-brotli \ -no-feature-macdeployqt \ - -no-feature-printsupport \ -no-feature-qmake \ -no-feature-sql \ -no-feature-dbus \ diff --git a/qtox/build_utils.sh b/qtox/build_utils.sh index 8d6da8e..da705b6 100644 --- a/qtox/build_utils.sh +++ b/qtox/build_utils.sh @@ -8,8 +8,6 @@ set -euxo pipefail -MACOS_MINIMUM_SUPPORTED_VERSION=10.15 - usage() { # note: this is the usage from the build script's context, so the usage # doesn't include --dep argument, since that comes from the build script @@ -34,6 +32,7 @@ parse_arch() { BUILD_TYPE=release SANITIZE= EXTRA_ARGS=() + MACOS_MINIMUM_SUPPORTED_VERSION=12.0 while (($# > 0)); do case $1 in @@ -57,6 +56,10 @@ parse_arch() { BUILD_TYPE=$2 shift 2 ;; + --macos) + MACOS_MINIMUM_SUPPORTED_VERSION=$2 + shift 2 + ;; --sanitize) SANITIZE=$2 shift 2 @@ -83,6 +86,7 @@ parse_arch() { done assert_supported "$SCRIPT_ARCH" "$SUPPORTED" + export MACOS_MINIMUM_SUPPORTED_VERSION if [ "$SCRIPT_ARCH" == "win32" ] || [ "$SCRIPT_ARCH" == "win64" ]; then if [ "$SCRIPT_ARCH" == "win32" ]; then diff --git a/qtox/download/download_qtbase.sh b/qtox/download/download_qtbase.sh index a0cd588..dfbd202 100755 --- a/qtox/download/download_qtbase.sh +++ b/qtox/download/download_qtbase.sh @@ -6,8 +6,6 @@ set -euo pipefail -QTBASE_HASH=40b14562ef3bd779bc0e0418ea2ae08fa28235f8ea6e8c0cb3bce1d6ad58dcaf - source "$(dirname "$(realpath "$0")")/common.sh" source "$(dirname "$(realpath "$0")")/version_qt.sh" diff --git a/qtox/download/download_qtimageformats.sh b/qtox/download/download_qtimageformats.sh index eb96cb5..a8c0984 100755 --- a/qtox/download/download_qtimageformats.sh +++ b/qtox/download/download_qtimageformats.sh @@ -6,8 +6,6 @@ set -euo pipefail -QTIMAGEFORMATS_HASH=138cc2909aa98f5ff7283e36eb3936eb5e625d3ca3b4febae2ca21d8903dd237 - source "$(dirname "$(realpath "$0")")/common.sh" source "$(dirname "$(realpath "$0")")/version_qt.sh" diff --git a/qtox/download/download_qtremoteobjects.sh b/qtox/download/download_qtremoteobjects.sh index 938a73d..ade34a8 100755 --- a/qtox/download/download_qtremoteobjects.sh +++ b/qtox/download/download_qtremoteobjects.sh @@ -6,8 +6,6 @@ set -euo pipefail -QTREMOTEOBJECTS_HASH=7ef2870f05614b71d1cfdd7ac12acef5294abc43da244a6e9e411f21208f59f8 - source "$(dirname "$(realpath "$0")")/common.sh" source "$(dirname "$(realpath "$0")")/version_qt.sh" diff --git a/qtox/download/download_qtsvg.sh b/qtox/download/download_qtsvg.sh index 13410dd..efeb558 100755 --- a/qtox/download/download_qtsvg.sh +++ b/qtox/download/download_qtsvg.sh @@ -6,8 +6,6 @@ set -euo pipefail -QTSVG_HASH=3d0de73596e36b2daa7c48d77c4426bb091752856912fba720215f756c560dd0 - source "$(dirname "$(realpath "$0")")/common.sh" source "$(dirname "$(realpath "$0")")/version_qt.sh" diff --git a/qtox/download/download_qttools.sh b/qtox/download/download_qttools.sh index 709bc80..4fd664b 100755 --- a/qtox/download/download_qttools.sh +++ b/qtox/download/download_qttools.sh @@ -6,8 +6,6 @@ set -euo pipefail -QTTOOLS_HASH=9d43d409be08b8681a0155a9c65114b69c9a3fc11aef6487bb7fdc5b283c432d - source "$(dirname "$(realpath "$0")")/common.sh" source "$(dirname "$(realpath "$0")")/version_qt.sh" diff --git a/qtox/download/download_qtwayland.sh b/qtox/download/download_qtwayland.sh index 7c15529..28f6f30 100755 --- a/qtox/download/download_qtwayland.sh +++ b/qtox/download/download_qtwayland.sh @@ -6,8 +6,6 @@ set -euo pipefail -QTWAYLAND_HASH=2226fbde4e2ddd12f8bf4b239c8f38fd706a54e789e63467dfddc77129eca203 - source "$(dirname "$(realpath "$0")")/common.sh" source "$(dirname "$(realpath "$0")")/version_qt.sh" diff --git a/qtox/download/version_qt.sh b/qtox/download/version_qt.sh index 7d91c32..370e327 100644 --- a/qtox/download/version_qt.sh +++ b/qtox/download/version_qt.sh @@ -3,7 +3,33 @@ # SPDX-License-Identifier: GPL-3.0-or-later # Copyright © 2024-2025 The TokTok team -QT_VERSION="6.8.1" +# shellcheck disable=SC2034 + QT_MAJOR=6 -QT_MINOR=8 -QT_PATCH=1 + +if [ "$MACOS_MINIMUM_SUPPORTED_VERSION" = "10.15" ]; then + QT_MINOR=6 + QT_PATCH=3 + + QTBASE_HASH=0493fd0b380c4edf8872f011a7f26d245aa4cdd75b349904ef340a22dedf7462 + QTIMAGEFORMATS_HASH="3ca5ea60176603ce6ffc1bff59a4dcea139375233ce8e5e86c38f4e84c44627c" + QTREMOTEOBJECTS_HASH="???" + QTSVG_HASH=4acb1e576eca55e955cf2b0d15c914a200df290e737accd7c1901fa1e33a25c7 + QTTOOLS_HASH=aa6d4c822d8cb74066ef30ab42283ac24e5cc702f33e6d78a9ebef5b0df91bc0 + QTWAYLAND_HASH="???" +elif [ "$MACOS_MINIMUM_SUPPORTED_VERSION" = "12.0" ]; then + QT_MINOR=8 + QT_PATCH=1 + + QTBASE_HASH=40b14562ef3bd779bc0e0418ea2ae08fa28235f8ea6e8c0cb3bce1d6ad58dcaf + QTIMAGEFORMATS_HASH=138cc2909aa98f5ff7283e36eb3936eb5e625d3ca3b4febae2ca21d8903dd237 + QTREMOTEOBJECTS_HASH=7ef2870f05614b71d1cfdd7ac12acef5294abc43da244a6e9e411f21208f59f8 + QTSVG_HASH=3d0de73596e36b2daa7c48d77c4426bb091752856912fba720215f756c560dd0 + QTTOOLS_HASH=9d43d409be08b8681a0155a9c65114b69c9a3fc11aef6487bb7fdc5b283c432d + QTWAYLAND_HASH=2226fbde4e2ddd12f8bf4b239c8f38fd706a54e789e63467dfddc77129eca203 +else + echo "Unsupported macOS version: $MACOS_MINIMUM_SUPPORTED_VERSION" + exit 1 +fi + +QT_VERSION="$QT_MAJOR.$QT_MINOR.$QT_PATCH"