diff --git a/.github/workflows/docker-linux.yml b/.github/workflows/docker-linux.yml index 03c924b26c15..8e59abf701ca 100644 --- a/.github/workflows/docker-linux.yml +++ b/.github/workflows/docker-linux.yml @@ -34,7 +34,6 @@ jobs: with: submodules: recursive fetch-tags: true - fetch-depth: 0 - run: chmod a+x ./deploy/docker/run-docker-ubuntu.sh diff --git a/.github/workflows/docker-macos.yml b/.github/workflows/docker-macos.yml new file mode 100644 index 000000000000..dc8f0fec21c5 --- /dev/null +++ b/.github/workflows/docker-macos.yml @@ -0,0 +1,41 @@ +name: Docker-MacOS + +on: + push: + branches: + - master + - 'Stable*' + tags: + - 'v*' + pull_request: + paths: + - '.github/workflows/docker-macos.yml' + - 'deploy/docker/**' + - 'deploy/macos/**' + - 'src/**' + - 'CMakeLists.txt' + - 'cmake/**' + +# concurrency: +# group: ${{ github.workflow }}-${{ github.ref }} +# cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +jobs: + build: + runs-on: ubuntu-latest + + defaults: + run: + shell: bash + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-tags: true + + - run: chmod a+x ./deploy/docker/run-docker-macos.sh + + - name: Run Docker Build + run: ./deploy/docker/run-docker-macos.sh diff --git a/deploy/docker/Dockerfile-build-macos b/deploy/docker/Dockerfile-build-macos index 31d269656c23..455bc2c4e9ac 100644 --- a/deploy/docker/Dockerfile-build-macos +++ b/deploy/docker/Dockerfile-build-macos @@ -8,12 +8,11 @@ ENV QT_DESKTOP=$QT_PATH/${QT_VERSION}/clang_64 ENV PATH=$QT_DESKTOP/bin:/usr/local/bin:$PATH -COPY tools/setup/macos-dependencies.sh /tmp/qt/ -RUN /tmp/qt/macos-dependencies.sh +COPY tools/setup/install-dependencies-osx.sh /tmp/qt/ +RUN /tmp/qt/install-dependencies-osx.sh -# Install Qt using Homebrew -RUN brew install qt@${QT_VERSION} \ - && brew link --force qt@${QT_VERSION} +COPY tools/setup/install-qt-macos.sh /tmp/qt/ +RUN /tmp/qt/install-qt-macos.sh # Set up Qt environment RUN mkdir -p $QT_PATH \ diff --git a/tools/setup/install-qt-macos.sh b/tools/setup/install-qt-macos.sh new file mode 100755 index 000000000000..965d30250259 --- /dev/null +++ b/tools/setup/install-qt-macos.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# Set defaults appropriate for macOS. +QT_VERSION="${QT_VERSION:-6.8.1}" +QT_PATH="${QT_PATH:-/opt/Qt}" +QT_HOST="${QT_HOST:-mac}" +QT_TARGET="${QT_TARGET:-desktop}" +QT_ARCH="${QT_ARCH:-mac}" +QT_MODULES="${QT_MODULES:-qtcharts qtlocation qtpositioning qtspeech qt5compat qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d qtsensors}" + +set -e + +echo "QT_VERSION: $QT_VERSION" +echo "QT_PATH: $QT_PATH" +echo "QT_HOST: $QT_HOST" +echo "QT_TARGET: $QT_TARGET" +echo "QT_ARCH: $QT_ARCH" +echo "QT_MODULES: $QT_MODULES" + +# Update Homebrew and install Python 3 (if needed) +brew update +brew install python3 + +# Install required Python packages, including aqtinstall. +pip3 install --upgrade setuptools wheel py7zr ninja cmake aqtinstall + +# Use aqtinstall to download and install Qt. +aqt install-qt ${QT_HOST} ${QT_TARGET} ${QT_VERSION} ${QT_ARCH} -O ${QT_PATH} -m ${QT_MODULES} + +# macOS does not support GNU readlink -e. +# We use realpath instead (or substitute with greadlink -f if needed). +# Note: On macOS, dynamic libraries are resolved using DYLD_LIBRARY_PATH. +export PATH="$(realpath ${QT_PATH}/${QT_VERSION}/${QT_ARCH}/bin):$PATH" +export PKG_CONFIG_PATH="$(realpath ${QT_PATH}/${QT_VERSION}/${QT_ARCH}/lib/pkgconfig):$PKG_CONFIG_PATH" +export DYLD_LIBRARY_PATH="$(realpath ${QT_PATH}/${QT_VERSION}/${QT_ARCH}/lib):$DYLD_LIBRARY_PATH" +export QT_ROOT_DIR="$(realpath ${QT_PATH}/${QT_VERSION}/${QT_ARCH})" +export QT_PLUGIN_PATH="$(realpath ${QT_PATH}/${QT_VERSION}/${QT_ARCH}/plugins)" +export QML2_IMPORT_PATH="$(realpath ${QT_PATH}/${QT_VERSION}/${QT_ARCH}/qml)" + +echo "Updated environment variables:" +echo "PATH: $PATH" +echo "PKG_CONFIG_PATH: $PKG_CONFIG_PATH" +echo "DYLD_LIBRARY_PATH: $DYLD_LIBRARY_PATH" +echo "QT_ROOT_DIR: $QT_ROOT_DIR" +echo "QT_PLUGIN_PATH: $QT_PLUGIN_PATH" +echo "QML2_IMPORT_PATH: $QML2_IMPORT_PATH"