diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fbe09630..0a8439e7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -314,7 +314,8 @@ jobs: runs-on: macos-latest env: - QT_VERSION: 6.8.0 + QT_VERSION: 6.4.3 + QIF_VERSION: 4.6 QT_MIRROR: https://mirrors.ocf.berkeley.edu/qt/ PROD_AGW_PUBLIC_KEY: ${{ secrets.PROD_AGW_PUBLIC_KEY }} DEV_AGW_PUBLIC_KEY: ${{ secrets.DEV_AGW_PUBLIC_KEY }} @@ -325,18 +326,22 @@ jobs: with: xcode-version: '14.3.1' - - name: 'Install Desktop Qt' + - name: 'Install desktop Qt' uses: jurplel/install-qt-action@v3 with: version: ${{ env.QT_VERSION }} host: 'mac' target: 'desktop' - arch: 'clang_64' modules: 'qtremoteobjects qt5compat qtshadertools qtmultimedia' + arch: 'clang_64' dir: ${{ runner.temp }} set-env: 'true' - extra: '--external 7z --base ${{ env.QT_MIRROR }}' - + extra: '--base ${{ env.QT_MIRROR }}' + - name: 'Install Qt Installer Framework ${{ env.QIF_VERSION }}' + run: | + mkdir -pv ${{ runner.temp }}/Qt/Tools/QtInstallerFramework + wget https://qt.amzsvc.com/tools/ifw/${{ env.QIF_VERSION }}.zip + unzip ${{ env.QIF_VERSION }}.zip -d ${{ runner.temp }}/Qt/Tools/QtInstallerFramework/ - name: 'Install Go' uses: actions/setup-go@v5 with: @@ -356,7 +361,11 @@ jobs: run: chmod +x deploy/build_macos_ne.sh - name: 'Build and deploy macOS NE' - run: bash deploy/build_macos_ne.sh + run: | + export QT_BIN_DIR="${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/macos/bin" + export QIF_BIN_DIR="${{ runner.temp }}/Qt/Tools/QtInstallerFramework/${{ env.QIF_VERSION }}/bin" + export QT_MACOS_ROOT_DIR="${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/macos" + bash deploy/build_macos_ne.sh env: MAC_CERT_PW: ${{ secrets.MAC_CERT_PW }} MAC_SIGNER_ID: ${{ secrets.MAC_SIGNER_ID }} diff --git a/deploy/build_macos_ne.sh b/deploy/build_macos_ne.sh index 12b1572d..36000e07 100755 --- a/deploy/build_macos_ne.sh +++ b/deploy/build_macos_ne.sh @@ -35,34 +35,25 @@ INSTALLER_DATA_DIR=$BUILD_DIR/installer/packages/$APP_DOMAIN/data INSTALLER_BUNDLE_DIR=$BUILD_DIR/installer/$APP_FILENAME DMG_FILENAME=$PROJECT_DIR/${APP_NAME}.dmg -# Search Qt -if [ -z "${QT_VERSION+x}" ]; then -QT_VERSION=6.8.0; -QIF_VERSION=4.7 -QT_BIN_DIR=$HOME/Qt/$QT_VERSION/macos/bin -QIF_BIN_DIR=$QT_BIN_DIR/../../../Tools/QtInstallerFramework/$QIF_VERSION/bin +# Check if QIF_VERSION is properly set, otherwise set a default +if [ -z "${QIF_VERSION+x}" ]; then + echo "QIF_VERSION is not set, using default 4.6" + QIF_VERSION=4.6 fi -echo "Using Qt in $QT_BIN_DIR" -echo "Using QIF in $QIF_BIN_DIR" +QIF_BIN_DIR="$QT_BIN_DIR/../../../Tools/QtInstallerFramework/$QIF_VERSION/bin" -# Setup environment paths -export QT_BIN_DIR=$HOME/Qt/$QT_VERSION/macos/bin -export QT_MACOS_ROOT_DIR=$HOME/Qt/$QT_VERSION/macos -export QT_MACOS_BIN=$QT_BIN_DIR -export PATH=$PATH:~/go/bin +# Checking environment +$QT_BIN_DIR/qt-cmake --version || { echo "Error: qt-cmake not found in $QT_BIN_DIR"; exit 1; } +cmake --version || { echo "Error: cmake not found"; exit 1; } +clang -v || { echo "Error: clang not found"; exit 1; } -# Checking env -$QT_BIN_DIR/qt-cmake --version -cmake --version -clang -v - -# Build App +# Build the app echo "Building App..." mkdir -p build-macos cd build-macos -$QT_MACOS_BIN/qt-cmake .. -GXcode -DQT_HOST_PATH=$QT_MACOS_ROOT_DIR -DMACOS_NE=TRUE +$QT_BIN_DIR/qt-cmake .. -GXcode -DQT_HOST_PATH=$QT_MACOS_ROOT_DIR -DMACOS_NE=TRUE cmake --build . --config release --target all # Build and run tests here @@ -80,6 +71,7 @@ cp -av $BUILD_DIR/service/server/$APP_NAME-service $BUNDLE_DIR/Contents/macOS cp -Rv $PROJECT_DIR/deploy/data/macos/* $BUNDLE_DIR/Contents/macOS rm -f $BUNDLE_DIR/Contents/macOS/post_install.sh $BUNDLE_DIR/Contents/macOS/post_uninstall.sh +# Signing and notarizing the app if [ "${MAC_CERT_PW+x}" ]; then CERTIFICATE_P12=$DEPLOY_DIR/PrivacyTechAppleCertDeveloperId.p12 @@ -151,7 +143,6 @@ if [ "${MAC_CERT_PW+x}" ]; then fi echo "Building DMG installer..." -# Allow Terminal to make changes in Privacy & Security > App Management hdiutil create -size 256mb -volname AmneziaVPN -srcfolder $BUILD_DIR/installer/$APP_NAME.app -ov -format UDZO $DMG_FILENAME if [ "${MAC_CERT_PW+x}" ]; then