Merge branch 'main' into jokkon/linux-arm64 #19
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux arm64 | |
on: [push, pull_request] | |
jobs: | |
build: | |
runs-on: tla-arm64-ubuntu-runner-03 | |
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" | |
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 | |
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" | |
python -m ensurepip --user | |
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: | | |
python 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 |