From 4eb10f4c64964afbd8df70e8a3f1d862d5512a0c Mon Sep 17 00:00:00 2001 From: Boris Pozdena Date: Wed, 1 Jul 2026 13:42:10 +0200 Subject: [PATCH] Update AppImageBuilder and build script to use Python 3.10 and Ubuntu Jammy --- AppImageBuilder.yml | 29 ++++++++++++++++++----------- build_appimage_docker.sh | 11 ++++++++--- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/AppImageBuilder.yml b/AppImageBuilder.yml index 30cf09e..5211263 100644 --- a/AppImageBuilder.yml +++ b/AppImageBuilder.yml @@ -6,14 +6,14 @@ script: - cp src AppDir/usr -r - cp src/resources/images/OneDriveGUI.png AppDir/usr/share/icons/hicolor/48x48 - python3 -m pip install --ignore-installed --prefix=/usr --no-cache-dir --root=AppDir -r ./requirements.txt - - rm -rf AppDir/usr/local/lib/python3.12/dist-packages/PySide6/Qt/qml/ - - rm -rf AppDir/usr/local/lib/python3.12/dist-packages/PySide6/examples/ - - rm -rf AppDir/usr/local/lib/python3.12/dist-packages/PySide6/Qt/resources/ - - rm -rf AppDir/usr/local/lib/python3.12/dist-packages/PySide6/Qt/translations/qtwebengine_locales/ - - rm -f AppDir/usr/local/lib/python3.12/dist-packages/PySide6/{assistant,designer,linguist,lrelease,lupdate} - - rm -f AppDir/usr/local/lib/python3.12/dist-packages/PySide6/{Qt3D*,QtBluetooth*,QtCharts*,QtConcurrent*,QtDataVisualization*,QtDBus*,QtDesigner*,QtHelp*,QtMultimedia*,QtNetwork*,QtOpenGL*,QtPositioning*,QtPrintSupport*,QtQml*,QtQuick*,QtRemoteObjects*,QtScxml*,QtSensors*,QtSerialPort*,QtSql*,QtStateMachine*,QtSvg*,QtTest*,QtWeb*,QtXml*} + - rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/qml/ + - rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/examples/ + - rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/resources/ + - rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/translations/qtwebengine_locales/ + - 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/{Qt3D*,QtBluetooth*,QtCharts*,QtConcurrent*,QtDataVisualization*,QtDBus*,QtDesigner*,QtHelp*,QtMultimedia*,QtNetwork*,QtOpenGL*,QtPositioning*,QtPrintSupport*,QtQml*,QtQuick*,QtRemoteObjects*,QtScxml*,QtSensors*,QtSerialPort*,QtSql*,QtStateMachine*,QtSvg*,QtTest*,QtWeb*,QtXml*} - shopt -s extglob - - rm -rf AppDir/usr/local/lib/python3.12/dist-packages/PySide6/Qt/lib/!(libQt6OpenGL*|libQt6XcbQpa*|libQt6Wayland*|libQt6Egl*|libicudata*|libicuuc*|libicui18n*|libQt6DBus*|libQt6Network*|libQt6Qml*|libQt6Core*|libQt6Gui*|libQt6Widgets*|libQt6Svg*|libQt6UiTools*) + - rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/lib/!(libQt6OpenGL*|libQt6XcbQpa*|libQt6Wayland*|libQt6Egl*|libicudata*|libicuuc*|libicui18n*|libQt6DBus*|libQt6Network*|libQt6Qml*|libQt6Core*|libQt6Gui*|libQt6Widgets*|libQt6Svg*|libQt6UiTools*) AppDir: @@ -24,15 +24,22 @@ AppDir: name: OneDriveGUI icon: OneDriveGUI version: 1.3.2 - exec: usr/bin/python3.12 + exec: usr/bin/python3.10 exec_args: "$APPDIR/usr/src/OneDriveGUI.py $@" apt: arch: amd64 sources: - - sourceline: 'deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ noble main restricted universe multiverse' + # Built against Jammy (22.04) rather than Noble (24.04) on purpose: Noble's glibc + # package ships a merged-/usr layout (loader under usr/lib64/), which + # appimage-builder v1.1.0's glibc-compatibility runtime does not account for + # (it hardcodes the pre-merged /lib64 path). That mismatch makes the AppImage + # fail with "APPRUN_ERROR: No such file or directory" (or a linker SIGSEGV) on + # any host with an older glibc than the build machine. Jammy still uses the + # classic layout, so the compatibility runtime works correctly. + - 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=0x3b4fe6acc0b21f32' - - sourceline: 'deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ noble main restricted universe multiverse' + - 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: @@ -48,7 +55,7 @@ AppDir: runtime: env: PYTHONHOME: '${APPDIR}/usr' - PYTHONPATH: '${APPDIR}/usr/local/lib/python3.12/dist-packages/' + PYTHONPATH: '${APPDIR}/usr/local/lib/python3.10/dist-packages/' AppImage: # update-information: gh-releases-zsync diff --git a/build_appimage_docker.sh b/build_appimage_docker.sh index 36cf595..76ce732 100755 --- a/build_appimage_docker.sh +++ b/build_appimage_docker.sh @@ -2,7 +2,12 @@ # Docker-based AppImage builder for OneDriveGUI # Allows building AppImages on non-Debian systems (e.g. Arch Linux) -# using an Ubuntu Noble container with appimage-builder. +# using an Ubuntu Jammy container with appimage-builder. +# +# Must stay on Jammy (22.04), not Noble (24.04): Noble's glibc package uses a +# merged-/usr layout that appimage-builder v1.1.0's glibc-compatibility runtime +# does not handle, breaking the AppImage on hosts with an older glibc than the +# build machine (APPRUN_ERROR / linker SIGSEGV). See AppImageBuilder.yml. set -e @@ -17,14 +22,14 @@ if ! command -v docker &> /dev/null; then exit 1 fi -# Build the AppImage inside an Ubuntu Noble container +# Build the AppImage inside an Ubuntu Jammy container docker run \ --cap-add SYS_ADMIN \ --device /dev/fuse \ --security-opt apparmor:unconfined \ --rm \ -v "$SCRIPT_DIR:/OneDriveGUI" \ - ubuntu:noble \ + ubuntu:jammy \ bash -c ' set -e echo "Installing dependencies..."