goldendict-ng/.github/workflows/macos-homebrew-breakpad.yml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

239 lines
8.4 KiB
YAML
Raw Normal View History

name: macos-homebrew-breakpad
2023-04-03 01:09:37 +00:00
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"
2023-04-03 01:09:37 +00:00
jobs:
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13]
2023-07-26 08:47:45 +00:00
qt_ver: [ 6.4.3,6.5.2 ]
2023-04-03 01:09:37 +00:00
qt_arch: [clang_64]
env:
targetName: GoldenDict
2023-07-25 05:36:42 +00:00
version: 23.07.25
2023-05-31 12:56:28 +00:00
version-suffix: alpha
prerelease: true
2023-04-03 01:09:37 +00:00
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
2023-04-03 01:09:37 +00:00
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
2023-04-03 01:09:37 +00:00
- name: Set outputs
id: githash
run: |
echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
2023-04-28 01:52:23 +00:00
- name: install deps on macos
2023-04-03 01:09:37 +00:00
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 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
feat!: add libzim dependency (#725) * feat!: add libzim dependency * 🎨 apply clang-format changes * action: add libzim dependency to action * feat!: change dependency folder * action: add zim support * feat!: add libzim support * action: fix sonarcloud check * doc: add libzim readme * action: cmake build * action: cmake check * fix: code smell * action: cmake check * action: cmake on Macos * action: cmake on Macos * feat: use libzim to read title and description * 🎨 apply clang-format changes * feat: split zim file support * feat: loadArticle refactor * 🎨 apply clang-format changes * 🎨 apply clang-format changes * feat: update library and goldendict.pro * 🎨 apply clang-format changes * fix:word count * 🎨 apply clang-format changes * fix: video src url subsititue * 🎨 apply clang-format changes * zim: headword is not usually a valid it is from title and url. * fix: remove nested try catch * zim: fix resource loading issue. * 🎨 apply clang-format changes * action: remove libao * zim: process url some old zim dictionary url does not contain namespace such as /C/url make the old and new zim dictionary's url consistent without the leading ../C/ etc. * 🎨 apply clang-format changes * zim: process url remove leading dot and slash such as ../-/assets ,remove ../ * 🎨 apply clang-format changes * zim: remove resourceIndex creation use libzim to read the resource directly. * zim: only iterate all the articles * 🎨 apply clang-format changes * fix: code smell * 🎨 apply clang-format changes * zim: refactor method to convert url to wstring * 🎨 apply clang-format changes * fix:code smell * 🎨 apply clang-format changes * zim: update windows dependencies * zim: add mutex lock * 🎨 apply clang-format changes * fix: code smell * 🎨 apply clang-format changes --------- Co-authored-by: xiaoyifang <xiaoyifang@users.noreply.github.com> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-27 04:12:16 +00:00
brew install libzim
2023-06-05 01:48:35 +00:00
# brew reinstall icu4c
brew install dylibbundler
find /opt -name libicudata.72.dylib
find /usr/local -name libicudata.72.dylib
2023-04-03 01:09:37 +00:00
- name: version-file
shell: bash
2023-06-22 11:54:22 +00:00
env:
VAR_SUFFIX: ${{env.version-suffix}}
VAR_VERSION: ${{env.version}}
2023-04-03 01:09:37 +00:00
run: |
2023-06-22 11:54:22 +00:00
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
- 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 }}
modules: qtwebengine qtwebchannel qtpositioning qt5compat qtmultimedia qtimageformats qtspeech
setup-python: 'false'
2023-04-03 01:09:37 +00:00
- name: compile
run: |
qmake CONFIG+=release CONFIG+=no_macos_universal CONFIG+=zim_support CONFIG+=use_xapian CONFIG+=use_breakpad
2023-04-03 01:09:37 +00:00
make -j8
- name: package
run: |
2023-06-05 01:48:35 +00:00
macdeployqt ${targetName}.app -no-strip -qmldir=. -verbose=1
2023-04-03 01:09:37 +00:00
otool -L GoldenDict.app/Contents/MacOS/GoldenDict
2023-06-05 01:48:35 +00:00
ls -al GoldenDict.app/Contents/Frameworks
otool -L GoldenDict.app/Contents/Frameworks/libicu*.dylib
2023-06-22 11:54:22 +00:00
ls -al /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib
cp -r /usr/local/Cellar/icu4c/7*/lib/libicudata.*.dylib GoldenDict.app/Contents/Frameworks
2023-06-05 01:48:35 +00:00
codesign --force --deep -s - GoldenDict.app
ls -al GoldenDict.app/Contents/Frameworks
2023-04-03 01:09:37 +00:00
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)
2023-04-03 01:09:37 +00:00
echo "previousTag : $previousTag"
echo "::set-output name=prev_tag::$previousTag"
echo "::set-output name=curr_tag::$(git tag --sort=-creatordate | grep "^v" | sed -n 1p)"
2023-04-03 01:09:37 +00:00
- 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')"
2023-04-03 01:09:37 +00:00
# tag 上传Release
- name: "Build Changelog"
id: build_changelog
uses: mikepenz/release-changelog-builder-action@v3
2023-06-03 07:29:08 +00:00
with:
2023-06-12 03:07:07 +00:00
commitMode: false
fromTag: ${{ steps.changelog.outputs.prev_tag }}
toTag: "${{ steps.changelog.outputs.curr_tag }}"
configurationJson: |
{
2023-06-12 03:07:07 +00:00
"template": "#{{CHANGELOG}}\n\n<details>\n<summary>🔴 Uncategorized</summary>\n\n#{{UNCATEGORIZED}}\n</details>",
"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"
}
]
}
2023-04-03 01:09:37 +00:00
- 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
2023-07-30 14:20:17 +00:00
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 }}
2023-04-03 01:09:37 +00:00
prerelease: ${{env.prerelease}}
body: |
2023-07-02 08:09:20 +00:00
#### Install instructions for Windows, macOS and Linux
<https://xiaoyifang.github.io/goldendict-ng/install/>.
#### 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 AppImages.
macOS users can use `.dmg` installer.
2023-07-02 08:09:20 +00:00
`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
AppImage: Ubuntu-20.04
macOS: macOS-12 and macOS-13
Windows: Visual studio 2019
2023-07-02 08:09:20 +00:00
#### Changes
${{steps.build_changelog.outputs.changelog}}