feat(appimage): use AnyLinux AppImages to support musl-libc and non-FHS systems
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
@@ -11,40 +11,33 @@ jobs:
|
|||||||
build-appimage:
|
build-appimage:
|
||||||
name: Build AppImage
|
name: Build AppImage
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
container:
|
||||||
|
image: archlinux:base-devel
|
||||||
steps:
|
steps:
|
||||||
|
- name: Prepare container
|
||||||
|
run: |
|
||||||
|
pacman-key --init
|
||||||
|
pacman -Sy --noconfirm archlinux-keyring
|
||||||
|
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
|
||||||
|
|
||||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||||
|
|
||||||
- name: Install required dependencies
|
- name: Install appimage dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt update
|
cd build-aux/AppImage
|
||||||
sudo apt install -y binutils coreutils desktop-file-utils gtk-update-icon-cache fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-dev python3-setuptools python3-build python3-venv squashfs-tools strace util-linux zsync git zstd adwaita-icon-theme
|
chmod +x get-dependencies.sh portprotonqt-appimage.sh
|
||||||
|
./get-dependencies.sh --git
|
||||||
- name: Upgrade pip toolchain
|
|
||||||
run: |
|
|
||||||
python3 -m pip install --upgrade \
|
|
||||||
pip setuptools setuptools-scm wheel packaging build
|
|
||||||
|
|
||||||
- name: Install appimage-builder
|
|
||||||
run: |
|
|
||||||
git clone https://github.com/Boria138/appimage-builder
|
|
||||||
cd appimage-builder
|
|
||||||
pip install .
|
|
||||||
|
|
||||||
- name: Install uv
|
|
||||||
run: |
|
|
||||||
pip install uv
|
|
||||||
|
|
||||||
- name: Build AppImage
|
- name: Build AppImage
|
||||||
run: |
|
run: |
|
||||||
cd build-aux
|
cd build-aux/AppImage
|
||||||
sed -i '/app_info:/,/- exec:/ s/^\(\s*version:\s*\).*/\1"0"/' AppImageBuilder.yml
|
./portprotonqt-appimage.sh
|
||||||
appimage-builder
|
|
||||||
|
|
||||||
- name: Upload AppImage
|
- name: Upload AppImage
|
||||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: PortProtonQt-AppImage
|
name: PortProtonQt-AppImage
|
||||||
path: build-aux/PortProtonQt*.AppImage
|
path: build-aux/AppImage/dist/*.AppImage*
|
||||||
|
|
||||||
build-fedora:
|
build-fedora:
|
||||||
name: Build Fedora RPM
|
name: Build Fedora RPM
|
||||||
|
|||||||
@@ -17,39 +17,33 @@ jobs:
|
|||||||
build-appimage:
|
build-appimage:
|
||||||
name: Build AppImage
|
name: Build AppImage
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
container:
|
||||||
|
image: archlinux:base-devel
|
||||||
steps:
|
steps:
|
||||||
|
- name: Prepare container
|
||||||
|
run: |
|
||||||
|
pacman-key --init
|
||||||
|
pacman -Sy --noconfirm archlinux-keyring
|
||||||
|
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
|
||||||
|
|
||||||
- uses: https://gitea.com/actions/checkout@v4
|
- uses: https://gitea.com/actions/checkout@v4
|
||||||
|
|
||||||
- name: Install required dependencies
|
- name: Install appimage dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt update
|
cd build-aux/AppImage
|
||||||
sudo apt install -y binutils coreutils desktop-file-utils gtk-update-icon-cache fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-dev python3-setuptools python3-build python3-venv squashfs-tools strace util-linux zsync git zstd adwaita-icon-theme
|
chmod +x get-dependencies.sh portprotonqt-appimage.sh
|
||||||
|
./get-dependencies.sh
|
||||||
- name: Upgrade pip toolchain
|
|
||||||
run: |
|
|
||||||
python3 -m pip install --upgrade \
|
|
||||||
pip setuptools setuptools-scm wheel packaging build
|
|
||||||
|
|
||||||
- name: Install appimage-builder
|
|
||||||
run: |
|
|
||||||
git clone https://github.com/Boria138/appimage-builder
|
|
||||||
cd appimage-builder
|
|
||||||
pip install .
|
|
||||||
|
|
||||||
- name: Install uv
|
|
||||||
run: |
|
|
||||||
pip install uv
|
|
||||||
|
|
||||||
- name: Build AppImage
|
- name: Build AppImage
|
||||||
run: |
|
run: |
|
||||||
cd build-aux
|
cd build-aux/AppImage
|
||||||
appimage-builder
|
./portprotonqt-appimage.sh
|
||||||
|
|
||||||
- name: Upload AppImage
|
- name: Upload AppImage
|
||||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: PortProtonQt-AppImage
|
name: PortProtonQt-AppImage
|
||||||
path: build-aux/PortProtonQt*.AppImage*
|
path: build-aux/AppImage/dist/*.AppImage*
|
||||||
|
|
||||||
build-arch:
|
build-arch:
|
||||||
name: Build Arch Package
|
name: Build Arch Package
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ jobs:
|
|||||||
cat changed_files.txt
|
cat changed_files.txt
|
||||||
|
|
||||||
# Check AppImage files
|
# Check AppImage files
|
||||||
if grep -q "build-aux/AppImageBuilder.yml" changed_files.txt; then
|
if grep -q "build-aux/AppImage/" changed_files.txt; then
|
||||||
echo "appimage=true" >> $GITHUB_OUTPUT
|
echo "appimage=true" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
echo "appimage=false" >> $GITHUB_OUTPUT
|
echo "appimage=false" >> $GITHUB_OUTPUT
|
||||||
@@ -62,29 +62,33 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
needs: changes
|
needs: changes
|
||||||
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
|
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
|
||||||
|
container:
|
||||||
|
image: archlinux:base-devel
|
||||||
steps:
|
steps:
|
||||||
|
- name: Prepare container
|
||||||
|
run: |
|
||||||
|
pacman-key --init
|
||||||
|
pacman -S --noconfirm archlinux-keyring
|
||||||
|
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
|
||||||
|
|
||||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||||
|
|
||||||
- name: Install required dependencies
|
- name: Install appimage dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt update
|
cd build-aux/AppImage
|
||||||
sudo apt install -y binutils coreutils desktop-file-utils gtk-update-icon-cache fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-dev python3-setuptools squashfs-tools strace util-linux zsync zstd git
|
chmod +x get-dependencies.sh portprotonqt-appimage.sh
|
||||||
|
./get-dependencies.sh
|
||||||
- name: Install tools
|
|
||||||
run: |
|
|
||||||
pip3 install git+https://github.com/Boria138/appimage-builder.git
|
|
||||||
pip3 install uv
|
|
||||||
|
|
||||||
- name: Build AppImage
|
- name: Build AppImage
|
||||||
run: |
|
run: |
|
||||||
cd build-aux
|
cd build-aux/AppImage
|
||||||
appimage-builder
|
./portprotonqt-appimage.sh
|
||||||
|
|
||||||
- name: Upload AppImage
|
- name: Upload AppImage
|
||||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: PortProtonQt-AppImage
|
name: PortProtonQt-AppImage
|
||||||
path: build-aux/PortProtonQt*.AppImage
|
path: build-aux/AppImage/dist/*.AppImage*
|
||||||
|
|
||||||
build-fedora:
|
build-fedora:
|
||||||
name: Build Fedora RPM
|
name: Build Fedora RPM
|
||||||
|
|||||||
78
build-aux/AppImage/get-dependencies.sh
Executable file
78
build-aux/AppImage/get-dependencies.sh
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# Determine if git mode is enabled based on the first argument
|
||||||
|
if [ "${1:-}" = "--git" ] || [ "${1:-}" = "-g" ]; then
|
||||||
|
GIT_MODE=true
|
||||||
|
else
|
||||||
|
GIT_MODE=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
ARCH="$(uname -m)"
|
||||||
|
PACKAGE_BUILDER="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/make-aur-package.sh"
|
||||||
|
EXTRA_PACKAGES="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh"
|
||||||
|
|
||||||
|
if [ "$GIT_MODE" = true ]; then
|
||||||
|
echo "Using git version of PortProtonQt..."
|
||||||
|
PPQT_PKGBUILD="https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/build-aux/PKGBUILD-git"
|
||||||
|
else
|
||||||
|
echo "Using stable version of PortProtonQt..."
|
||||||
|
PPQT_PKGBUILD="https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/build-aux/PKGBUILD"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Installing dependencies..."
|
||||||
|
echo "---------------------------------------------------------------"
|
||||||
|
pacman-key --init
|
||||||
|
pacman -Syy --noconfirm archlinux-keyring
|
||||||
|
echo "Installing dependencies..."
|
||||||
|
echo "---------------------------------------------------------------"
|
||||||
|
pacman-key --init
|
||||||
|
pacman -Syy --noconfirm archlinux-keyring
|
||||||
|
pacman -Syu --noconfirm \
|
||||||
|
cabextract \
|
||||||
|
curl \
|
||||||
|
perl-image-exiftool \
|
||||||
|
pyside6 \
|
||||||
|
python-babel \
|
||||||
|
python-beautifulsoup4 \
|
||||||
|
python-evdev \
|
||||||
|
python-numpy \
|
||||||
|
python-orjson \
|
||||||
|
python-pillow \
|
||||||
|
python-psutil \
|
||||||
|
python-pyudev \
|
||||||
|
python-rapidfuzz \
|
||||||
|
python-requests \
|
||||||
|
python-tqdm \
|
||||||
|
python-websocket-client \
|
||||||
|
unrar \
|
||||||
|
unzip \
|
||||||
|
xdg-utils
|
||||||
|
|
||||||
|
echo "Installing debloated packages..."
|
||||||
|
echo "---------------------------------------------------------------"
|
||||||
|
wget --retry-connrefused --tries=30 "$EXTRA_PACKAGES" -O ./get-debloated-pkgs.sh
|
||||||
|
chmod +x ./get-debloated-pkgs.sh
|
||||||
|
./get-debloated-pkgs.sh --add-common --prefer-nano
|
||||||
|
|
||||||
|
echo "Installing AUR packages..."
|
||||||
|
echo "---------------------------------------------------------------"
|
||||||
|
wget --retry-connrefused --tries=30 "$PACKAGE_BUILDER" -O ./make-aur-package.sh
|
||||||
|
chmod +x ./make-aur-package.sh
|
||||||
|
|
||||||
|
./make-aur-package.sh --chaotic-aur icoextract
|
||||||
|
./make-aur-package.sh --chaotic-aur python-vdf
|
||||||
|
|
||||||
|
echo "Building PortProtonQt from PKGBUILD..."
|
||||||
|
echo "---------------------------------------------------------------"
|
||||||
|
wget --retry-connrefused --tries=30 "$PPQT_PKGBUILD" -O ./PKGBUILD
|
||||||
|
makepkg -si --noconfirm
|
||||||
|
|
||||||
|
if [ "$GIT_MODE" = true ]; then
|
||||||
|
# For git version, we use portprotonqt-git
|
||||||
|
pacman -Q portprotonqt-git | awk '{print $2; exit}' > ~/version
|
||||||
|
else
|
||||||
|
# For stable version, we use portprotonqt
|
||||||
|
pacman -Q portprotonqt | awk '{print $2; exit}' > ~/version
|
||||||
|
fi
|
||||||
37
build-aux/AppImage/portprotonqt-appimage.sh
Executable file
37
build-aux/AppImage/portprotonqt-appimage.sh
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
ARCH="$(uname -m)"
|
||||||
|
VERSION="$(cat ~/version)"
|
||||||
|
URUNTIME="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/uruntime2appimage.sh"
|
||||||
|
SHARUN="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh"
|
||||||
|
|
||||||
|
export DESKTOP=/usr/share/applications/ru.linux_gaming.PortProtonQt.desktop
|
||||||
|
export ICON=/usr/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
|
||||||
|
export OUTNAME=portprotonqt-"$VERSION"-anylinux-"$ARCH".AppImage
|
||||||
|
export DEPLOY_OPENGL=1
|
||||||
|
export DEPLOY_PIPEWIRE=1
|
||||||
|
export DEPLOY_SYS_PYTHON=1
|
||||||
|
export DEPLOY_VULKAN=1
|
||||||
|
export ANYLINUX_LIB=1
|
||||||
|
export OPTIMIZE_LAUNCH=1
|
||||||
|
|
||||||
|
# DEPLOY ALL LIBS
|
||||||
|
wget --retry-connrefused --tries=30 "$SHARUN" -O ./quick-sharun
|
||||||
|
chmod +x ./quick-sharun
|
||||||
|
./quick-sharun /usr/bin/portprotonqt /usr/lib/libudev.so*
|
||||||
|
|
||||||
|
# Add udev rules
|
||||||
|
mkdir -p ./AppDir/etc/udev/rules.d
|
||||||
|
cp /usr/lib/udev/rules.d/60-portprotonqt.rules ./AppDir/etc/udev/rules.d
|
||||||
|
|
||||||
|
# MAKE APPIMAGE WITH URUNTIME
|
||||||
|
wget --retry-connrefused --tries=30 "$URUNTIME" -O ./uruntime2appimage
|
||||||
|
chmod +x ./uruntime2appimage
|
||||||
|
./uruntime2appimage
|
||||||
|
|
||||||
|
mkdir -p ./dist
|
||||||
|
mv -v ./*.AppImage* ./dist
|
||||||
|
mv -v ~/version ./dist
|
||||||
|
echo "All Done!"
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
version: 1
|
|
||||||
script:
|
|
||||||
- rm -rf AppDir || true
|
|
||||||
- mkdir -p AppDir/usr/local/lib/python3.10/dist-packages
|
|
||||||
- uv venv
|
|
||||||
- uv pip install --no-cache-dir ../
|
|
||||||
- cp -r .venv/lib/python3.10/site-packages/* AppDir/usr/local/lib/python3.10/dist-packages
|
|
||||||
- cp -r share AppDir/usr
|
|
||||||
- cp -r lib AppDir/usr
|
|
||||||
- rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/qml/
|
|
||||||
- rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{assistant,designer,linguist,lrelease,lupdate}
|
|
||||||
- rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{Qt3DAnimation*,Qt3DCore*,Qt3DExtras*,Qt3DInput*,Qt3DLogic*,Qt3DRender*,QtBluetooth*,QtCharts*,QtConcurrent*,QtDataVisualization*,QtDesigner*,QtExampleIcons*,QtGraphs*,QtGraphsWidgets*,QtHelp*,QtHttpServer*,QtLocation*,QtMultimedia*,QtMultimediaWidgets*,QtNetworkAuth*,QtNfc*,QtOpenGL*,QtOpenGLWidgets*,QtPdf*,QtPdfWidgets*,QtPositioning*,QtPrintSupport*,QtQml*,QtQuick*,QtQuick3D*,QtQuickControls2*,QtQuickTest*,QtQuickWidgets*,QtRemoteObjects*,QtScxml*,QtSensors*,QtSerialBus*,QtSerialPort*,QtSpatialAudio*,QtSql*,QtStateMachine*,QtSvgWidgets*,QtTest*,QtTextToSpeech*,QtUiTools*,QtWebChannel*,QtWebEngineCore*,QtWebEngineQuick*,QtWebEngineWidgets*,QtWebSockets*,QtWebView*,QtXml*}
|
|
||||||
- shopt -s extglob
|
|
||||||
- rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/lib/!(libQt6Core*|libQt6DBus*|libQt6Egl*|libQt6Gui*|libQt6Network*|libQt6Svg*|libQt6Wayland*|libQt6Widgets*|libQt6XcbQpa*|libicudata*|libicui18n*|libicuuc*)
|
|
||||||
AppDir:
|
|
||||||
path: ./AppDir
|
|
||||||
after_bundle:
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/man || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/doc || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/doc-base || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/info || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/help || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/gtk-doc || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/devhelp || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/examples || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/pkgconfig || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/bash-completion || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/pixmaps || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/mime || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/share/metainfo || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/include || true
|
|
||||||
- rm -rf $TARGET_APPDIR/usr/lib/pkgconfig || true
|
|
||||||
- find $TARGET_APPDIR -type f \( -name '*.a' -o -name '*.la' -o -name '*.h' -o -name '*.cmake' -o -name '*.pdb' \) -delete || true
|
|
||||||
- "find $TARGET_APPDIR -type f -executable -exec file {} \\; | grep ELF | grep -v '/dist-packages/' | grep -v '/site-packages/' | cut -d: -f1 | xargs strip --strip-unneeded || true"
|
|
||||||
- find $TARGET_APPDIR -type d -empty -delete || true
|
|
||||||
app_info:
|
|
||||||
id: ru.linux_gaming.PortProtonQt
|
|
||||||
name: PortProtonQt
|
|
||||||
icon: ru.linux_gaming.PortProtonQt
|
|
||||||
version: 0.1.9
|
|
||||||
exec: usr/bin/python3
|
|
||||||
exec_args: "-m portprotonqt.app $@"
|
|
||||||
apt:
|
|
||||||
arch: amd64
|
|
||||||
sources:
|
|
||||||
- sourceline: 'deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse'
|
|
||||||
key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920d1991bc93c'
|
|
||||||
include:
|
|
||||||
- python3-minimal
|
|
||||||
- python3-pkg-resources
|
|
||||||
- libopengl0
|
|
||||||
- libk5crypto3
|
|
||||||
- libkrb5-3
|
|
||||||
- libgssapi-krb5-2
|
|
||||||
- libxcb-cursor0
|
|
||||||
- libimage-exiftool-perl
|
|
||||||
- xdg-utils
|
|
||||||
- cabextract
|
|
||||||
- curl
|
|
||||||
- 7zip
|
|
||||||
- unzip
|
|
||||||
- unrar
|
|
||||||
exclude:
|
|
||||||
- "*-doc"
|
|
||||||
- "*-man"
|
|
||||||
- manpages
|
|
||||||
- mandb
|
|
||||||
- "*-dev"
|
|
||||||
- "*-static"
|
|
||||||
- "*-dbg"
|
|
||||||
- "*-dbgsym"
|
|
||||||
runtime:
|
|
||||||
env:
|
|
||||||
PYTHONHOME: '${APPDIR}/usr'
|
|
||||||
PYTHONPATH: '${APPDIR}/usr/local/lib/python3.10/dist-packages'
|
|
||||||
PERLLIB: '${APPDIR}/usr/share/perl5:${APPDIR}/usr/lib/x86_64-linux-gnu/perl/5.34:${APPDIR}/usr/share/perl/5.34'
|
|
||||||
AppImage:
|
|
||||||
sign-key: None
|
|
||||||
arch: x86_64
|
|
||||||
comp: zstd
|
|
||||||
Reference in New Issue
Block a user