name: MacOS. on: push: paths-ignore: - 'docs/**' - '**.md' - 'changelog.txt' - 'LEGAL' - 'LICENSE' - '.github/**' - '!.github/workflows/mac.yml' - 'lib/xdg/**' - 'snap/**' - 'Telegram/build/docker/**' - 'Telegram/Resources/uwp/**' - 'Telegram/Resources/winrc/**' - 'Telegram/SourceFiles/platform/win/**' - 'Telegram/SourceFiles/platform/linux/**' - 'Telegram/configure.bat' pull_request: paths-ignore: - 'docs/**' - '**.md' - 'changelog.txt' - 'LEGAL' - 'LICENSE' - '.github/**' - '!.github/workflows/mac.yml' - 'lib/xdg/**' - 'snap/**' - 'Telegram/build/docker/**' - 'Telegram/Resources/uwp/**' - 'Telegram/Resources/winrc/**' - 'Telegram/SourceFiles/platform/win/**' - 'Telegram/SourceFiles/platform/linux/**' - 'Telegram/configure.bat' jobs: macos: name: MacOS runs-on: macos-12 strategy: matrix: defines: - "" env: UPLOAD_ARTIFACT: "false" ONLY_CACHE: "false" PREPARE_PATH: "Telegram/build/prepare/prepare.py" steps: - name: Get repository name. run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - name: Clone. uses: actions/checkout@v3.1.0 with: submodules: recursive path: ${{ env.REPO_NAME }} - name: First set up. run: | sudo chown -R `whoami`:admin /usr/local/share brew install automake ninja pkg-config # Disable spotlight. sudo mdutil -a -i off sudo xcode-select -s /Applications/Xcode.app/Contents/Developer - name: ThirdParty cache. id: cache-third-party uses: actions/cache@v3.0.11 with: path: ThirdParty key: ${{ runner.OS }}-third-party-${{ hashFiles(format('{0}/{1}', env.REPO_NAME, env.PREPARE_PATH)) }} restore-keys: ${{ runner.OS }}-third-party- - name: Libraries cache. id: cache-libs uses: actions/cache@v3.0.11 with: path: Libraries key: ${{ runner.OS }}-libs-${{ hashFiles(format('{0}/{1}', env.REPO_NAME, env.PREPARE_PATH)) }} restore-keys: ${{ runner.OS }}-libs- - name: Libraries. run: | ./$REPO_NAME/Telegram/build/prepare/mac.sh skip-release silent - name: Free up some disk space. run: | cd Libraries find . -iname "*.dir" -exec rm -rf {} || true \; - name: Telegram Desktop build. if: env.ONLY_CACHE == 'false' run: | cd $REPO_NAME/Telegram DEFINE="" if [ -n "${{ matrix.defines }}" ]; then DEFINE="-D ${{ matrix.defines }}=ON" echo Define from matrix: $DEFINE echo "ARTIFACT_NAME=Telegram_${{ matrix.defines }}" >> $GITHUB_ENV else echo "ARTIFACT_NAME=Telegram" >> $GITHUB_ENV fi ./configure.sh \ -D CMAKE_C_FLAGS="-Werror" \ -D CMAKE_CXX_FLAGS="-Werror" \ -D CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO \ -D TDESKTOP_API_TEST=ON \ -D DESKTOP_APP_DISABLE_CRASH_REPORTS=OFF \ $DEFINE cd ../out xcoderun='xcodebuild build -project Telegram.xcodeproj -scheme Telegram -destination "platform=macOS,arch=x86_64" -configuration Debug' bash -c "$xcoderun" || bash -c "$xcoderun" || bash -c "$xcoderun" - name: Move artifact. if: env.UPLOAD_ARTIFACT == 'true' run: | cd $REPO_NAME/out/Debug mkdir artifact mv Telegram.app artifact/ mv Updater artifact/ - uses: actions/upload-artifact@master if: env.UPLOAD_ARTIFACT == 'true' name: Upload artifact. with: name: ${{ env.ARTIFACT_NAME }} path: ${{ env.REPO_NAME }}/out/Debug/artifact/