-
Notifications
You must be signed in to change notification settings - Fork 2
122 lines (98 loc) · 3.51 KB
/
build-on-macos.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
name: build-on-macos
on:
workflow_call:
jobs:
build:
runs-on: macos-11
steps:
- name: checkout
uses: actions/checkout@v4
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Get version
id: get_version
uses: battila7/get-version-action@v2
- name: Install system dependencies
run: |
brew install python pygobject3 gtk+3 gtksourceview4 gnome-icon-theme create-dmg
- name: Log system package info
run: |
echo "### sw_vers ###"
sw_vers | tee sw_vers.txt
echo "### uname -a ###"
uname -a | tee uname_a.txt
echo "### brew list --versions ###"
brew list --versions | tee brew_list_versions.txt
- name: Install pythonic dependencies
run: |
python3 -m venv --system-site-packages venv
source venv/bin/activate
pip install --upgrade pip
pip install wheel setuptools setuptools_scm
pip install -r requirements.txt
pip install pyinstaller
- name: Fix setuptools_scm-generated version
id: fix_version
run: |
source venv/bin/activate
version=$(SETUPTOOLS_SCM_DEBUG=1 python -m setuptools_scm) # have version written to file to appear in bundled app as well
echo "version=$version" >> $GITHUB_OUTPUT
- name: Log python package info
run: |
source venv/bin/activate
echo "### pip freeze --local ###"
pip freeze --local | tee pip_freeze_local.txt
echo "### pip freeze ###"
pip freeze | tee pip_freeze.txt
- name: Compile gschemas
run: |
glib-compile-schemas .
working-directory: dtool_lookup_gui
- name: Package executable with pyinstaller
run: |
source venv/bin/activate
pyinstaller -y ./pyinstaller/dtool-lookup-gui-macos.spec 2>&1 | tee pyinstaller.log
ls -lh dist
mv dist/dtool-lookup-gui.app dtool-lookup-gui.app
# macos environment's xargs does not support option -a
- name: Pack build assets
run: |
bash -c "tar -cvf dtool-lookup-gui-macos.tar $(cat pyinstaller/MANIFEST.macos | xargs)"
- name: Collect release assets
run: |
prefix=$(pwd)
mkdir -p ${prefix}/release
bash ${prefix}/maintenance/copy_files_into_folders.sh \
${prefix}/pyinstaller/MANIFEST.macos-release ${prefix}/release
- name: List content of release
run: |
ls -lhv release/
- name: Create dmg
run: |
create-dmg \
--volname "dtool-lookup-gui" \
--eula "LICENSE.txt" \
--volicon "data/icons/dtool_logo.icns" \
--window-pos 200 120 \
--window-size 600 300 \
--icon-size 100 \
--icon "dtool-lookup-gui.app" 175 120 \
--hide-extension "dtool-lookup-gui.app" \
--app-drop-link 425 120 \
--hdiutil-verbose \
"dtool-lookup-gui-${{ steps.fix_version.outputs.version }}-macos.dmg" \
"release/"
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: dtool-lookup-gui-macos
path: dtool-lookup-gui-macos.tar
if-no-files-found: error
- name: Upload release artifact
uses: actions/upload-artifact@v4
with:
name: dtool-lookup-gui-macos-release
path: dtool-lookup-gui-${{ steps.fix_version.outputs.version }}-macos.dmg
if-no-files-found: error