-
Notifications
You must be signed in to change notification settings - Fork 139
132 lines (110 loc) · 4.81 KB
/
linux-arm64.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
122
123
124
125
126
127
128
129
130
131
132
name: Linux arm64
on: [push, pull_request]
jobs:
build:
runs-on: tla-arm64-ubuntu-runner-01
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: .github/workflows/env
- name: Read variables from repo
run: cat .github/workflows/env >> $GITHUB_ENV
- name: Install dependencies
run: |
export PYVER_MINOR=${PYVER%.*}
echo "PYVER_MINOR: $PYVER_MINOR"
echo $PATH
sudo apt-get update
sudo apt-get install -qq curl software-properties-common libnotify-dev libayatana-appindicator3-dev patchelf
sudo add-apt-repository -y ppa:git-core/ppa
sudo add-apt-repository -y ppa:deadsnakes/ppa
sudo apt-get install -qq git python$PYVER_MINOR-dev python$PYVER_MINOR-venv python$PYVER_MINOR-distutils pip pipx
git config --global --add safe.directory "$GITHUB_WORKSPACE"
sudo ln -s `which python$PYVER_MINOR` /usr/local/bin/python
sudo ln -s `which python$PYVER_MINOR` /usr/local/bin/python3
PYVER_TEMP=`/usr/local/bin/python --version`
export PYVERINST=${PYVER_TEMP#* }
echo "PYVERINST=$PYVERINST" >> $GITHUB_ENV
echo "Installed python version: $PYVERINST"
echo $PATH
/usr/local/bin/python -m ensurepip --user
/usr/local/bin/python -m pip install -U pip pipx
- name: Verify Python version
if: ${{ env.PYVERINST != env.PYVER }}
run: |
echo "Python version not compatible"
echo "Installed python version: $PYVERINST"
echo "Expected: $PYVER"
exit 1
- uses: actions/checkout@v4
- name: Check app versions
run: |
python3 set-version.py
git diff --exit-code
- name: Cache helper
id: cache-helper
uses: actions/cache@v4
with:
path: |
build/linux/helper
assets/licenses/helper.json
key: ${{ runner.os }}-py${{ env.PYVER }}-${{ hashFiles('helper/**') }}
- name: Build the Helper
if: steps.cache-helper.outputs.cache-hit != 'true'
run: |
sudo apt-get install -qq swig libpcsclite-dev build-essential cmake
export PATH=$PATH:$HOME/.local/bin # Needed to ensure pipx/poetry on PATH
pipx install poetry
./build-helper.sh
- name: Install missing environment dependencies
run: |
sudo apt-get install -qq unzip libayatana-appindicator3-1 libayatana-indicator3-7 libdbusmenu-glib4 libdbusmenu-gtk3-4
- name: Install Flutter dependencies
run: |
sudo apt-get install -qq clang cmake ninja-build pkg-config libgtk-3-dev jq
- uses: subosito/flutter-action@v2
with:
channel: 'main'
# for weird reasons, arm64 only works on main
# https://github.com/subosito/flutter-action/issues/268
flutter-version: ${{ env.FLUTTER }}
- name: Configure Flutter
run: |
git config --global --add safe.directory $FLUTTER_ROOT
flutter config --enable-linux-desktop
flutter --version
- name: Run lints/tests
env:
SKIP: ${{ steps.cache-helper.outputs.cache-hit == 'true' && 'mypy,flake8,black,bandit' || ''}}
run: |
export PATH=$PATH:$HOME/.local/bin # Needed to ensure pip/pre-commit on PATH
pipx install pre-commit
pre-commit run --all-files
flutter test
- name: Build the app
run: flutter build linux
- name: Check generated files
run: git diff --exit-code
- name: Embedd appindicator
run: |
patchelf --set-rpath '$ORIGIN' build/linux/arm64/release/bundle/lib/libtray_manager_plugin.so
cp -L /usr/lib/aarch64-linux-gnu/libayatana-appindicator3.so.1 build/linux/arm64/release/bundle/lib/
patchelf --set-rpath '$ORIGIN' build/linux/arm64/release/bundle/lib/libayatana-appindicator3.so.1
cp -L /usr/lib/aarch64-linux-gnu/libayatana-indicator3.so.7 build/linux/arm64/release/bundle/lib/
patchelf --set-rpath '$ORIGIN' build/linux/arm64/release/bundle/lib/libayatana-indicator3.so.7
cp -L /usr/lib/aarch64-linux-gnu/libdbusmenu-glib.so.4 build/linux/arm64/release/bundle/lib/
patchelf --set-rpath '$ORIGIN' build/linux/arm64/release/bundle/lib/libdbusmenu-glib.so.4
cp -L /usr/lib/aarch64-linux-gnu/libdbusmenu-gtk3.so.4 build/linux/arm64/release/bundle/lib/
patchelf --set-rpath '$ORIGIN' build/linux/arm64/release/bundle/lib/libdbusmenu-gtk3.so.4
- name: Rename and archive app
run: |
export REF=$(echo ${GITHUB_REF} | cut -d '/' -f 3)
export BASENAME="yubioath-desktop-${REF}-linux-arm64"
mkdir deploy
mv build/linux/arm64/release/bundle "build/${BASENAME}"
tar -czf deploy/${BASENAME}.tar.gz -C build "${BASENAME}"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: yubioath-desktop-linux-arm64
path: deploy