From 98f3fa76a2fc4c6e037486df62058367e98411c0 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Thu, 2 Nov 2023 03:19:47 +0400 Subject: [PATCH] Add CI for macOS packaged build --- .github/workflows/mac_packaged.yml | 158 +++++++++++++++++++++++++++++ Telegram/CMakeLists.txt | 31 +++--- Telegram/lib_ui | 2 +- cmake | 2 +- 4 files changed, 175 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/mac_packaged.yml diff --git a/.github/workflows/mac_packaged.yml b/.github/workflows/mac_packaged.yml new file mode 100644 index 000000000..5147f6cbe --- /dev/null +++ b/.github/workflows/mac_packaged.yml @@ -0,0 +1,158 @@ +name: MacOS Packaged. + +on: + push: + paths-ignore: + - 'docs/**' + - '**.md' + - 'changelog.txt' + - 'LEGAL' + - 'LICENSE' + - '.github/**' + - '!.github/workflows/mac_packaged.yml' + - 'lib/xdg/**' + - 'snap/**' + - 'Telegram/build/**' + - '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_packaged.yml' + - 'lib/xdg/**' + - 'snap/**' + - 'Telegram/build/**' + - 'Telegram/Resources/uwp/**' + - 'Telegram/Resources/winrc/**' + - 'Telegram/SourceFiles/platform/win/**' + - 'Telegram/SourceFiles/platform/linux/**' + - 'Telegram/configure.bat' + +jobs: + + macos: + name: MacOS + runs-on: macos-latest + + strategy: + matrix: + defines: + - "" + + env: + GIT: "https://github.com" + OPENALDIR: "/usr/local/opt/openal-soft" + UPLOAD_ARTIFACT: "false" + ONLY_CACHE: "false" + MANUAL_CACHING: "1" + AUTO_CACHING: "1" + + 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: | + brew install autoconf automake boost cmake ffmpeg openal-soft openssl opus ninja pkg-config python qt yasm xz + sudo xcode-select -s /Applications/Xcode.app/Contents/Developer + + xcodebuild -version > CACHE_KEY.txt + echo $MANUAL_CACHING >> CACHE_KEY.txt + echo "$GITHUB_WORKSPACE" >> CACHE_KEY.txt + if [ "$AUTO_CACHING" = "1" ]; then + thisFile=$REPO_NAME/.github/workflows/mac_packaged.yml + echo `md5 -q $thisFile` >> CACHE_KEY.txt + fi + echo "CACHE_KEY=`md5 -q CACHE_KEY.txt`" >> $GITHUB_ENV + + echo "LibrariesPath=`pwd`" >> $GITHUB_ENV + + curl -o tg_owt-version.json https://api.github.com/repos/desktop-app/tg_owt/git/refs/heads/master + + - name: RNNoise. + run: | + cd $LibrariesPath + + git clone --depth=1 https://gitlab.xiph.org/xiph/rnnoise.git + cd rnnoise + ./autogen.sh + ./configure --disable-examples --disable-doc + make -j$(sysctl -n hw.logicalcpu) + make install + + - name: WebRTC cache. + id: cache-webrtc + uses: actions/cache@v3.0.11 + with: + path: ${{ env.LibrariesPath }}/tg_owt + key: ${{ runner.OS }}-webrtc-${{ env.CACHE_KEY }}-${{ hashFiles('**/tg_owt-version.json') }} + - name: WebRTC. + if: steps.cache-webrtc.outputs.cache-hit != 'true' + run: | + cd $LibrariesPath + + git clone --recursive --depth=1 $GIT/desktop-app/tg_owt.git + cd tg_owt + + cmake -B build . -GNinja -DCMAKE_BUILD_TYPE=Debug + cmake --build build --parallel + + - name: Telegram Desktop build. + if: env.ONLY_CACHE == 'false' + env: + tg_owt_DIR: ${{ env.LibrariesPath }}/tg_owt/build + run: | + cd $REPO_NAME + + 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 + + cmake -Bbuild -GNinja . \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_FIND_FRAMEWORK=LAST \ + -DTDESKTOP_API_TEST=ON \ + -DDESKTOP_APP_USE_PACKAGED_LAZY=ON \ + $DEFINE + + cmake --build build --parallel + + cd build + macdeployqt Telegram.app + codesign --remove-signature Telegram.app + + mkdir dmgsrc + mv Telegram.app dmgsrc + hdiutil create -volname Telegram -srcfolder dmgsrc -ov -format UDZO Telegram.dmg + + - name: Move artifact. + if: env.UPLOAD_ARTIFACT == 'true' + run: | + cd $REPO_NAME/build + mkdir artifact + mv Telegram.dmg artifact/ + - uses: actions/upload-artifact@master + if: env.UPLOAD_ARTIFACT == 'true' + name: Upload artifact. + with: + name: ${{ env.ARTIFACT_NAME }} + path: ${{ env.REPO_NAME }}/build/artifact/ diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 3bfaa0b15..f52ea30a2 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -1599,24 +1599,17 @@ elseif (APPLE) COMMAND cp ${CMAKE_BINARY_DIR}/lib_ui.rcc $/../Resources COMMAND cp ${CMAKE_BINARY_DIR}/lib_spellcheck.rcc $/../Resources ) - if (NOT build_macstore) + if (NOT build_macstore AND NOT DESKTOP_APP_DISABLE_CRASH_REPORTS) + if (DESKTOP_APP_MAC_ARCH STREQUAL "x86_64" OR DESKTOP_APP_MAC_ARCH STREQUAL "arm64") + set(crashpad_dir_part ".${DESKTOP_APP_MAC_ARCH}") + else() + set(crashpad_dir_part "") + endif() add_custom_command(TARGET Telegram PRE_LINK - COMMAND mkdir -p $/../Frameworks - COMMAND cp $ $/../Frameworks/ + COMMAND mkdir -p $/../Helpers + COMMAND cp ${libs_loc}/crashpad/out/$,Debug,Release>${crashpad_dir_part}/crashpad_handler $/../Helpers/ ) - if (NOT DESKTOP_APP_DISABLE_CRASH_REPORTS) - if (DESKTOP_APP_MAC_ARCH STREQUAL "x86_64" OR DESKTOP_APP_MAC_ARCH STREQUAL "arm64") - set(crashpad_dir_part ".${DESKTOP_APP_MAC_ARCH}") - else() - set(crashpad_dir_part "") - endif() - add_custom_command(TARGET Telegram - PRE_LINK - COMMAND mkdir -p $/../Helpers - COMMAND cp ${libs_loc}/crashpad/out/$,Debug,Release>${crashpad_dir_part}/crashpad_handler $/../Helpers/ - ) - endif() endif() else() target_link_libraries(Telegram @@ -1757,7 +1750,7 @@ endif() target_prepare_qrc(Telegram) -if ((NOT DESKTOP_APP_DISABLE_AUTOUPDATE OR APPLE) AND NOT build_macstore AND NOT build_winstore) +if (NOT DESKTOP_APP_DISABLE_AUTOUPDATE AND NOT build_macstore AND NOT build_winstore) add_executable(Updater WIN32) init_non_host_target(Updater) @@ -1795,6 +1788,12 @@ if ((NOT DESKTOP_APP_DISABLE_AUTOUPDATE OR APPLE) AND NOT build_macstore AND NOT else() target_link_options(Updater PRIVATE -municode) endif() + elseif (APPLE) + add_custom_command(TARGET Updater + PRE_LINK + COMMAND mkdir -p $/../Frameworks + COMMAND cp $ $/../Frameworks/ + ) endif() if (DESKTOP_APP_SPECIAL_TARGET) diff --git a/Telegram/lib_ui b/Telegram/lib_ui index d7f12b083..1ae65d2cb 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit d7f12b083ee9901c5e5a95170559376d51b00f20 +Subproject commit 1ae65d2cba7e41f7bb43b490f2d0cc150a958163 diff --git a/cmake b/cmake index 60474a576..78098ede7 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 60474a576690f63510d87d18ca348d9875c89f08 +Subproject commit 78098ede77a09e41da6233d765d02b43a60e7138