Skip to content

arm AppImage

arm AppImage #17

Workflow file for this run

name: arm AppImage
on:
workflow_dispatch:
inputs:
yyyymmdd:
description: 'Release date (yyyymmdd)'
required: true
jobs:
appimage:
runs-on: ubuntu-24.04-arm
# container:
# image: ghcr.io/csreviser/qt6-static:6.9.0-ubuntu22.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Dependencies
run: |
apt update && apt install sudo -y
sudo apt update
sudo apt install -y \
build-essential \
libgl1-mesa-dev \
libxcb1-dev libxcb-util-dev libx11-dev \
libxext-dev libxrender-dev libxkbcommon-dev \
libx11-xcb-dev \
libxcb-cursor-dev \
libxcb-glx0-dev \
libxcb-icccm4-dev \
libxcb-image0-dev \
libxcb-keysyms1-dev \
libxcb-randr0-dev \
libxcb-render-util0-dev \
libxcb-shape0-dev \
libxcb-shm0-dev \
libxcb-sync-dev \
libxcb-util-dev \
libxcb-xfixes0-dev \
libxcb-xkb-dev \
libxcb1-dev \
libxext-dev \
libxfixes-dev \
libxi-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev \
libxrender-dev \
cmake make g++ pax-utils \
libpcre3 \
desktop-file-utils patchelf wget file git fuse libc6 \
python3
python3 -m pip install --upgrade pip
pip install pyelftools
- name: Run ldd version check
run: ldd --version
- name: Check GLIBC versions
run: strings /lib/aarch64-linux-gnu/libc.so.6 | grep GLIBC_
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: 6.9.*
modules: 'qtcharts'
extra: '--external 7z'
- name: Clone CaptureStream2
run: |
git clone https://github.com/CSReviser/CaptureStream2.git
cd CaptureStream2
git checkout feature
git submodule update --init --recursive
- name: Build Application
run: |
cd CaptureStream2
mkdir build
cmake -DCMAKE_SYSTEM_PROCESSOR=arm64 -S ./ -B build
cmake --build build --parallel
- name: Download linuxdeploy and plugin
run: |
cd CaptureStream2
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-aarch64.AppImage
chmod +x linuxdeploy-aarch64.AppImage
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-aarch64.AppImage
chmod +x linuxdeploy-plugin-qt-aarch64.AppImage
- name: Copy missing libs
run: |
mkdir -p CaptureStream2/AppDir/usr/lib
mkdir -p CaptureStream2/AppDir/usr/bin
cat <<EOF > CaptureStream2/AppDir/usr/bin/qt.conf
[Paths]
Plugins=../lib/qt6/plugins
Qml2Imports=../lib/qt6/qml
EOF
- name: Extract linuxdeploy AppImage
run: |
cd CaptureStream2
chmod +x linuxdeploy-aarch64.AppImage
./linuxdeploy-aarch64.AppImage --appimage-extract
mv squashfs-root linuxdeploy-extracted
./linuxdeploy-plugin-qt-aarch64.AppImage --appimage-extract
mv squashfs-root plugin-qt-extracted
- name: Build AppImage without FUSE
run: |
cd CaptureStream2
./linuxdeploy-aarch64.AppImage \
--appdir AppDir \
--desktop-file CaptureStream2.desktop \
--icon-file icon.png \
--executable ./build/CaptureStream2 \
--output appimage \
--plugin qt
cd build
mkdir -p LinCaptureStream2
cp ../CaptureStream2-aarch64.AppImage ./LinCaptureStream2/CaptureStream2
cp ../qss_files/stylesheet-ubu.qss ./LinCaptureStream2
cp -r ../qss_files/License ./LinCaptureStream2
wget -qO ffmpeg-static-ubuntu-arm.zip https://github.com/CSReviser/ffmpeg-build/releases/download/7.1.1/ffmpeg-static-ubuntu-arm.zip
7z e ffmpeg-static-ubuntu-arm.zip ffmpeg -o./LinCaptureStream2
chmod -R 755 ./LinCaptureStream2
- name: Create ZIP file
run: |
cd CaptureStream2/build
zip -r "CaptureStream2-AppImage-arm-${{ github.event.inputs.yyyymmdd }}.zip" LinCaptureStream2
cp ./CaptureStream2 ./LinCaptureStream2/CaptureStream2
zip -r "CaptureStream2-ubuntu-arm-${{ github.event.inputs.yyyymmdd }}.zip" LinCaptureStream2
- name: Upload zip to GitHub Release
uses: softprops/action-gh-release@v2
with:
files: CaptureStream2/build/CaptureStream2-AppImage-arm-${{ github.event.inputs.yyyymmdd }}.zip
tag_name: ${{ github.event.inputs.yyyymmdd }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload zip to GitHub Release
uses: softprops/action-gh-release@v2
with:
files: CaptureStream2/build/CaptureStream2-ubuntu-arm-${{ github.event.inputs.yyyymmdd }}.zip
tag_name: ${{ github.event.inputs.yyyymmdd }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload AppImage
uses: actions/upload-artifact@v4
with:
name: CaptureStream2-AppImage
path: ./CaptureStream2/CaptureStream2-arm.AppImage