name: macos-homebrew-breakpad concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: workflow_dispatch: #push: # branches: # - dev # - master # # - staged # paths-ignore: # - 'docs/**' # - ".github/**" # - "howto/**" # - "*.md" # - ".clang-format" jobs: build: name: Build runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-13] qt_ver: [ 6.6.0 ] qt_arch: [clang_64] env: targetName: GoldenDict version: 24.02.16 version-suffix: alpha prerelease: true steps: - uses: actions/checkout@v4 with: fetch-depth: 0 submodules: true - name: Set outputs id: githash run: | echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: install deps on macos run: | brew install cmake ninja brew install automake brew install autoconf brew install libtool brew install opencc brew install speex brew install wavpack brew install automake fdk-aac git lame libass libtool libvorbis libvpx opus sdl shtool texi2html theora wget x264 x265 xvid nasm brew install libiconv brew install lzo bzip2 brew install libogg brew install zstd lzip brew install libvorbis brew install hunspell git clone https://github.com/xiaoyifang/eb.git cd eb && ./configure && make -j 8 && sudo make install && cd .. brew install xz lzo brew install pkg-config brew install create-dmg brew install xapian brew install libzim # brew reinstall icu4c brew install dylibbundler find /opt -name libicudata.72.dylib find /usr/local -name libicudata.72.dylib - name: version-file shell: bash env: VAR_SUFFIX: ${{env.version-suffix}} VAR_VERSION: ${{env.version}} run: | current_tag=$(git rev-parse --short=8 HEAD) release_date=$(date +'%Y%m%d') echo "$VAR_VERSION-$VAR_SUFFIX.$release_date.$current_tag">version.txt cat version.txt echo "$version" - name: vcpkg install shell: bash run: | vcpkg install breakpad - name: copy vcpkg packages into winlibs shell: bash run: | ls -al /usr/local/share/vcpkg/packages/breakpad* cp -R /usr/local/share/vcpkg/packages/breakpad*/* thirdparty/breakpad ls -al thirdparty/breakpad/lib - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt_ver }} arch: ${{ matrix.qt_arch }} modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech - name: compile run: | qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=use_xapian CONFIG+=use_breakpad CONFIG+=no_ffmpeg_player CONFIG+=no_tts_support make -j8 - name: package run: | macdeployqt ${targetName}.app -no-strip -qmldir=. -verbose=1 otool -L GoldenDict.app/Contents/MacOS/GoldenDict ls -al GoldenDict.app/Contents/Frameworks # otool -L GoldenDict.app/Contents/Frameworks/libicu*.dylib ls -al /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib # cp -r /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib GoldenDict.app/Contents/Frameworks codesign --force --deep -s - GoldenDict.app ls -al GoldenDict.app/Contents/Frameworks mkdir tmp mv ${targetName}.app ./tmp # --background "installer_background.png" create-dmg --volname "${targetName} Installer" --volicon "icons/macicon.icns" --window-pos 200 120 --window-size 800 400 --icon-size 100 --icon "${targetName}.app" 200 190 --hide-extension "${targetName}.app" --app-drop-link 600 185 --skip-jenkins "${targetName}.dmg" tmp/ - name: changelog id: changelog run: | previousTag=$(git tag --sort=-creatordate | grep "^v" | sed -n 2p) echo "previousTag : $previousTag" echo "prev_tag=$previousTag" >> $GITHUB_OUTPUT echo "curr_tag=$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)" >> $GITHUB_OUTPUT - name: Set outputs id: vars run: | echo "sha_short=$(git rev-parse --short=8 HEAD)" >> $GITHUB_OUTPUT echo "release_date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT echo "release_time=$(date +'%H%M%S')" >> $GITHUB_OUTPUT echo "release_time_clock=$(date +'%H:%M:%S')" >> $GITHUB_OUTPUT echo "release_hm=$(date +'%y%m%d')" >> $GITHUB_OUTPUT # tag 上传Release - name: "Build Changelog" id: build_changelog uses: mikepenz/release-changelog-builder-action@v3 with: commitMode: false fromTag: ${{ steps.changelog.outputs.prev_tag }} toTag: "${{ steps.changelog.outputs.curr_tag }}" configurationJson: | { "template": "#{{CHANGELOG}}\n\n
\n🔴 Uncategorized\n\n#{{UNCATEGORIZED}}\n
", "categories": [ { "title": "## 🚀 Features", "labels": ["feature","feat","opt"] }, { "title": "## 🐛 Fixes", "labels": ["fix","bug"] } , { "title": "## 🤖 Github action", "labels": ["action"] } , { "title": "## 🧼 Clean Code", "labels": ["clean"] } ], "label_extractor": [ { "pattern": "([^:]*):.*", "target": "$1", "on_property": "title", "flags": "gu" } ] } - name: uploadRelease uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ${{ env.targetName }}.dmg asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_homebrew_breakpad_${{steps.vars.outputs.release_date}}.dmg tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.sha_short }} overwrite: true release_name: GoldenDict-ng-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} prerelease: ${{env.prerelease}} body: | #### Install instructions for Windows, macOS and Linux . #### Filename pattern (文件名模式): **[Qt version]-GoldenDict-ng-[OS]-[release-date].[ext]** Qt6.X is recommended for various enhancements. Windows users can use either `****-installer.exe` (for installer) or `****.zip` (unzip and run). The `goldendict.exe` can be dropped into previous installation's folder (if dependencies aren't changed). Linux users can use Flatpak or build from source. https://flathub.org/apps/io.github.xiaoyifang.goldendict_ng macOS users can use `.dmg` installer. `6.5.1-GoldenDict.exe_windows-2019_20230701.zip` means built with Qt6.5.1, windows/msvc-2019 at 20230701 as a zip archive. #### Build Details Flatpak macOS: macOS-12 and macOS-13 Windows: Visual studio 2019 based on: ${{github.ref_name}} #### Changes ${{steps.build_changelog.outputs.changelog}}