diff --git a/.github/workflows/build_qt.yml b/.github/workflows/build_qt.yml new file mode 100644 index 00000000..dc0f2933 --- /dev/null +++ b/.github/workflows/build_qt.yml @@ -0,0 +1,93 @@ +name: Build Qt Open Source + +on: + push: + branches: + - 'feature/**' + paths: + - .github/workflows/build_qt.yml + + pull_request: + branches: + - 'feature/**' + paths: + - .github/workflows/build_qt.yml + +jobs: + macos: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [macos-14] + build: [1] + include: + - build: 1 + qt-version: "5.15.15" + python3-version: "3.11.9" + python2-version: "2.7.18" + + steps: + - name: Install Homebrew dependencies + run: | + brew install --quiet --formula libiconv libpng libpq libtool libuv libxau libxcb libxdmcp + brew install --quiet --formula autoconf automake cmake pcre2 harfbuzz freetype node@18 nspr nss + brew install --quiet --formula xcb-proto xcb-util xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm + brew install --quiet --formula brotli bzip2 dbus glew icu4c jpeg md4c openssl@1.1 pkg-config sqlite xorgproto zlib zstd + brew list openssl@1.1 + + # Use Ninja 1.11.1 because Qt need to be patched for Ninja 1.12.1. + - name: Install Ninja 1.11.1 + run: | + wget https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-mac.zip + unzip ninja-mac.zip -d ./ninja + echo "$(pwd)/ninja" >> $GITHUB_PATH + + - name: Display ninja version + run: | + ninja --version + + - name: Install pyenv + run: | + curl https://pyenv.run | bash + + export PYENV_ROOT="$HOME/.pyenv" + echo "$PYENV_ROOT/shims" >> $GITHUB_PATH + echo "$PYENV_ROOT/bin" >> $GITHUB_PATH + + - name: Setup pyenv + run: | + echo $PATH + pyenv install ${{ matrix.python3-version }} ${{ matrix.python2-version }} + pyenv global ${{ matrix.python3-version }} ${{ matrix.python2-version }} + + - name: Display Python installation location + run: | + python -c "import sys; print(sys.executable)" + python2 -c "import sys; print(sys.executable)" + + - name: Download Qt ${{ matrix.qt-version }} source + run: | + pwd + wget --quiet https://download.qt.io/archive/qt/5.15/5.15.15/single/qt-everywhere-opensource-src-5.15.15.zip + unzip qt-everywhere-opensource-src-5.15.15.zip + + - name: Create directory for build + run: | + mkdir -p ${{ github.workspace }}/qt-build + + - name: Configure Qt ${{ matrix.qt-version }} + run: | + ls -al ../qt-everywhere-src-5.15.15 + OPENSSL_LIBS='-L/usr/local/Cellar/openssl@1.1/1.1.1w/lib -lssl -lcrypto' ../qt-everywhere-src-5.15.15/configure -release -prefix ./release -nomake examples -nomake tests QMAKE_APPLE_DEVICE_ARCHS=arm64 -opensource -confirm-license -c++std c++14 -openssl-linked -opengl desktop -release -I /usr/local/Cellar/openssl@1.1/1.1.1w/include -L /usr/local/Cellar/openssl@1.1/1.1.1w/lib -skip qtlocation + working-directory: ${{ github.workspace }}/qt-build + + - name: Build Qt + run: | + make -j$(python -c 'import os; print(os.cpu_count())') + working-directory: ${{ github.workspace }}/qt-build + + - name: Display release folder + run: | + ls -al ./release + working-directory: ${{ github.workspace }}/qt-build \ No newline at end of file