diff --git a/.github/workflows/macos-homebrew-xapian.yml b/.github/workflows/macos-homebrew-xapian.yml new file mode 100644 index 00000000..85cd4926 --- /dev/null +++ b/.github/workflows/macos-homebrew-xapian.yml @@ -0,0 +1,166 @@ +name: macos-homebrew-xapian +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-11,macos-12] + qt_ver: [6.4.3] + qt_arch: [clang_64] + env: + targetName: GoldenDict + version: 23.04.03 + version-suffix: alpha + prerelease: true + steps: + # macos 11.0 默认环境变了,要指定 + - name: prepare env + if: ${{ matrix.os == 'macos-11' }} + run: | + softwareupdate --all --install --force + sudo xcode-select --print-path + sudo xcode-select --switch /Library/Developer/CommandLineTools + - uses: actions/setup-python@v3 + with: + python-version: '3.9' + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + version: ${{ matrix.qt_ver }} + arch: ${{ matrix.qt_arch }} + cached: 'false' + modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech + setup-python: 'false' + + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Set outputs + id: githash + run: | + echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + + - name: build macos + run: | + brew install pcre2 harfbuzz freetype + brew install cmake ninja python + 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 speex + + brew tap homebrew-ffmpeg/ffmpeg + brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-speex + + brew install libiconv + brew install lzo bzip2 + brew install libogg + brew install zstd lzip + brew install libtiff + 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 + - name: version-file + shell: bash + run: | + previousTag=$(git tag --sort=-creatordate | sed -n 1p |cut -c 2-) + echo "$previousTag">version.txt + - name: compile + run: | + qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=no_extra_tiff_handler CONFIG+=use_xapian #CONFIG+=no_epwing_support # CONFIG+=no_ffmpeg_player #CONFIG+=no_qtmultimedia_player + make -j8 + + # # 打包 + # - name: package + # run: | + # macdeployqt ${targetName}.app -qmldir=. -verbose=1 -dmg + # 打包 + - name: package + run: | + macdeployqt ${targetName}.app -qmldir=. -verbose=1 + codesign --force --deep -s - GoldenDict.app + otool -L GoldenDict.app/Contents/MacOS/GoldenDict + # otool -L GoldenDict.app/Contents/Frameworks/lib* + 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 | sed -n 2p) + echo "previousTag : $previousTag" + + CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)" + CHANGELOG="${CHANGELOG//'%'/'%25'}" + CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" + CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" + CHANGELOG="${CHANGELOG//'\"'/'%22'}" + CHANGELOG="${CHANGELOG//"'"/ }" + echo "::set-output name=changelog::$(echo "$CHANGELOG")" + + - name: Set outputs + id: vars + run: | + echo "::set-output name=sha_short::$(git rev-parse --short=8 HEAD)" + echo "::set-output name=release_date::$(date +'%Y%m%d')" + echo "::set-output name=release_time::$(date +'%H%M%S')" + echo "::set-output name=release_time_clock::$(date +'%H:%M:%S')" + echo "::set-output name=release_hm::$(date +'%y%m%d')" + + # tag 上传Release + - 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_xapian_${{steps.vars.outputs.release_date}}.dmg + tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + overwrite: true + release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }} + prerelease: ${{env.prerelease}} + body: | + release on date: ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}} + branch: ${{ github.ref_name }} + commit: ${{ steps.vars.outputs.sha_short }} + Qt version: Qt5.15.2, Qt6.X + Windows built with: msvc64, Visual studio 2019 + ## goldendict.exe can not be used alone + if you have a previous version. replace this maybe ok. if not ,download the whole bundle. + + AppImage built with: Ubuntu-20.04 ,latest gcc + macos built with: macos-10.15,macos-11.0,clang_64 x86_64 + Qt6.X(Universal Build) + Qt5.15.2(Intel Kind) + auto built by github action. use on your on risk:-) + **recommend version**:Qt6.X (with the latest bug fixes and performance enhancements) + + Filename pattern: **[Qt version]-GoldenDict-[OS]-[release-date].[ext]** + CHANGES: + ${{ steps.changelog.outputs.changelog }} diff --git a/goldendict.pro b/goldendict.pro index a98b63ec..3846171c 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -73,11 +73,11 @@ contains(DEFINES, MAKE_QTMULTIMEDIA_PLAYER|MAKE_FFMPEG_PLAYER) { CONFIG( use_xapian ) { DEFINES += USE_XAPIAN - win32{ - LIBS+= -lxapian + unix:!mac{ + LIBS+= -lxapian-core } else{ - LIBS+=-lxapian-core + LIBS+=-lxapian } }