diff --git a/.github/workflows/macos-m1.yml b/.github/workflows/macos-m1.yml deleted file mode 100644 index a003587e..00000000 --- a/.github/workflows/macos-m1.yml +++ /dev/null @@ -1,161 +0,0 @@ -name: macos-m1 -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -on: - # workflow_run: - # workflows: [AutoTag] - # types: [completed] - 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-12] - qt_ver: [6.3.1] - qt_arch: [clang_64] - env: - targetName: GoldenDict - version: 22.9.24 - version-suffix: alpha - prerelease: true - steps: - - name: prepare env - run: | - cd /opt - mkdir homebrew - curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew - export PATH=$PATH:/opt/homebrew/bin - - name: Install Qt - uses: xiaoyifang/install-qt-action@v3 - with: - version: ${{ matrix.qt_ver }} - arch: ${{ matrix.qt_arch }} - cached: 'false' - modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - - 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 ffmpeg@5 - #brew reinstall $(brew deps ffmpeg) ffmpeg - brew install libao - brew install libiconv - brew install lzo bzip2 - brew install libogg - brew install zstd lzip - brew install libtiff - brew install libvorbis --force - brew install hunspell - wget ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2 - tar xvjf eb-4.4.3.tar.bz2 - cd eb-4.4.3 && ./configure && make -j 8 && sudo make install && cd .. - #brew install qt # or use official offline installer - brew install xz lzo - brew install pkg-config - brew install create-dmg - - name: compile - run: | - qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=no_extra_tiff_handler #CONFIG+=no_epwing_support # CONFIG+=no_ffmpeg_player #CONFIG+=no_qtmultimedia_player - make -j 8 - # # 打包 - # - 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: Generate changelog - if: ${{!env.prerelease}} - id: changelog1 - uses: metcalfc/changelog-generator@v3.0.0 - with: - myToken: ${{ secrets.GITHUB_TOKEN }} - - - 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')" - - - name: changelog - if: $${{env.prerelease}} - id: changelog2 - 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=COMMIT_SUMMARY::$(echo "$CHANGELOG")" - # 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_${{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.changelog1.outputs.changelog }} - ${{ steps.changelog2.outputs.COMMIT_SUMMARY }} diff --git a/.github/workflows/windows-6.x-xapian.yml b/.github/workflows/windows-6.x-xapian.yml new file mode 100644 index 00000000..7235828f --- /dev/null +++ b/.github/workflows/windows-6.x-xapian.yml @@ -0,0 +1,184 @@ +name: Windows-6.x-xapian +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +on: + # workflow_run: + # workflows: [AutoTag] + # types: [completed] + workflow_dispatch: + push: + branches: + - dev + - master + # - staged + paths-ignore: + - 'docs/**' + - ".github/**" + - "howto/**" + - "*.md" + - ".clang-format" + +jobs: + build: + name: Build + # see https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [windows-2019] + qt_ver: [6.3.1] + qt_arch: [win64_msvc2019_64] + env: + targetName: GoldenDict.exe + version: 22.9.24 + version-suffix: alpha + prerelease: true + steps: + - uses: actions/setup-python@v3 + with: + python-version: '3.9' + - name: Install Qt + uses: xiaoyifang/install-qt-action@v3 + with: + version: ${{ matrix.qt_ver }} + # target: ${{ matrix.qt_target }} + arch: ${{ matrix.qt_arch }} + modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats + setup-python: 'false' + py7zrversion: '==0.18.1' + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Generate changelog + if: ${{!env.prerelease}} + id: changelog1 + uses: metcalfc/changelog-generator@v3.0.0 + with: + myToken: ${{ secrets.GITHUB_TOKEN }} + + - name: Set outputs + id: vars + shell: bash + 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')" + + - name: changelog + if: $${{env.prerelease}} + id: changelog2 + shell: bash + 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=COMMIT_SUMMARY::$(echo "$CHANGELOG")" + + # # msvc编译 + - uses: ilammy/msvc-dev-cmd@v1 + # with: + # arch: ${{ matrix.msvc_arch }} + - name: msvc-build goldendict + id: build + shell: cmd + run: | + qmake "CONFIG+=zim_support" CONFIG+=release CONFIG+=use_xapian + nmake + + echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV% + echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV% + echo vcToolsInstallDir=%VCToolsInstallDir% >> %GITHUB_ENV% + echo vcToolsRedistDir=%VCToolsRedistDir% >> %GITHUB_ENV% + echo QTDIR=%Qt6_DIR% >> %GITHUB_ENV% + + # 打包 + - name: package + id: package + env: + archiveName: GoldenDict-Windows.${{ steps.vars.outputs.sha_short }}-${{ steps.vars.outputs.release_time }} + msvcArch: ${{ matrix.msvc_arch }} + shell: pwsh + run: | + & .github\scripts\windows-publish.ps1 ${env:archiveName} ${env:targetName} + $name = ${env:archiveName} + echo "::set-output name=packageName::$name" + +# - uses: actions/upload-artifact@v2 +# with: +# name: ${{ steps.package.outputs.packageName }} +# path: ${{ steps.package.outputs.packageName }}.zip + - name: uploadRelease + # if: startsWith(github.event.ref, 'refs/tags/') + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.package.outputs.packageName }}.zip + asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_${{steps.vars.outputs.release_date}}-experimental-xapian.zip + 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 + 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.changelog1.outputs.changelog }} + ${{ steps.changelog2.outputs.COMMIT_SUMMARY }} + + - name: upload goldendict.exe only + # if: startsWith(github.event.ref, 'refs/tags/') + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: release/${{ env.targetName }} + asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }} + 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}} + + - name: copy nsis + shell: bash + run: | + cp tools/nsis/GoldenDict.nsi ${{ steps.package.outputs.packageName }}/ + - name: Create installer + uses: joncloud/makensis-action@v3.6 + with: + arguments: "/V3" + script-file: ${{ steps.package.outputs.packageName }}/GoldenDict.nsi + - name: make installer + run: | + cd ${{ steps.package.outputs.packageName }} + ls *.exe + - name: upload goldendict installer + # if: startsWith(github.event.ref, 'refs/tags/') + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.package.outputs.packageName }}/GoldenDict-v22-Install.exe + asset_name: ${{ matrix.qt_ver }}-GoldenDict-v${{env.version}}-${{env.version-suffix}}-Installer.exe + 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}} diff --git a/README.md b/README.md index 8f0e17b8..6eefa446 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,14 @@ Then, invoke `make clean` before `make` because the setting change: ### Building with xapian +build xapian from source, download and extract the xapian-core source code. + + ./configure + make + make install + + On Windows,follow the instructions in the xapian-core/INSTALL Visual Studio parts. + use `CONFIG+=use_xapian` to enable this feature. when enabled ,xapian will be used to support as the the fulltext's backend engine. qmake "CONFIG+=use_xapian"