mirror of
https://git.srhtnin.garden/sarah/SaraFem.git
synced 2026-10-14 18:18:12 +02:00
AppImage build script for older glibc
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
b295db3fb6
commit
b067d5e7ae
3 files changed
+45
-2
No files matched your search
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
# Builds Packaging/appimage/SaraFem-x86_64.AppImage (where Install.sh expects
|
||||
# it): a PyInstaller one-file build from SaraFem.spec, put into the AppDir
|
||||
# next to it and wrapped by appimagetool. Needs podman and appimagetool on
|
||||
# PATH.
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$(readlink -f "$0")")/.."
|
||||
|
||||
# PyInstaller runs in a manylinux_2_28 container (glibc 2.28) with uv's
|
||||
# portable Python, not with Fedora's: PyInstaller bundles libpython, and
|
||||
# Fedora's needs a newer glibc than many distros have ("GLIBC_ABI_GNU2_TLS
|
||||
# not found"). The Python, venv and downloads are cached in build/Container.
|
||||
mkdir -p build/Container
|
||||
podman run --rm --security-opt label=disable -v "$PWD:/src" -w /src \
|
||||
-e UV_CACHE_DIR=/src/build/Container/cache -e UV_PYTHON_INSTALL_DIR=/src/build/Container/python \
|
||||
quay.io/pypa/manylinux_2_28_x86_64 bash -euo pipefail -c '
|
||||
uv venv --quiet --allow-existing --managed-python --python 3.14 build/Container/venv
|
||||
uv pip install --quiet --python build/Container/venv -r requirements.txt pyinstaller
|
||||
build/Container/venv/bin/pyinstaller --noconfirm --clean --log-level WARN \
|
||||
--distpath build/PyInstaller/dist --workpath build/PyInstaller/work \
|
||||
SaraFem.spec'
|
||||
|
||||
AppDir=Packaging/appimage/AppDir
|
||||
mkdir -p "$AppDir/usr/bin"
|
||||
cp build/PyInstaller/dist/SaraFem "$AppDir/usr/bin/SaraFem"
|
||||
|
||||
# Built under a temporary name, then renamed into place: the AppImage can't be
|
||||
# overwritten while SaraFem is running from it ("Text file busy").
|
||||
ARCH=x86_64 appimagetool --no-appstream "$AppDir" Packaging/appimage/SaraFem-x86_64.AppImage.new
|
||||
mv -f Packaging/appimage/SaraFem-x86_64.AppImage.new Packaging/appimage/SaraFem-x86_64.AppImage
|
||||
echo "Built Packaging/appimage/SaraFem-x86_64.AppImage"
|
||||
@@ -0,0 +1,11 @@
|
||||
# PyInstaller runtime hook. The frozen app runs with LD_LIBRARY_PATH pointing
|
||||
# at its bundled libraries, and programs it starts inherit that: Flet's
|
||||
# desktop client then loads the bundled (older) libstdc++ instead of the
|
||||
# system's and won't start ("GLIBCXX_3.4.29 not found"). Give them the
|
||||
# original value back; the app itself has already loaded what it needs.
|
||||
import os
|
||||
|
||||
if "LD_LIBRARY_PATH_ORIG" in os.environ:
|
||||
os.environ["LD_LIBRARY_PATH"] = os.environ["LD_LIBRARY_PATH_ORIG"]
|
||||
else:
|
||||
os.environ.pop("LD_LIBRARY_PATH", None)
|
||||
+3
-2
@@ -1,15 +1,16 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
from PyInstaller.utils.hooks import collect_data_files
|
||||
|
||||
|
||||
a = Analysis(
|
||||
['Main.py'],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[('assets', 'assets')],
|
||||
datas=[('assets', 'assets')] + collect_data_files('flet'), # without Flet's, ft.Icons crashes when frozen
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
runtime_hooks=['Packaging/RestoreLibraryPath.py'],
|
||||
excludes=[],
|
||||
noarchive=False,
|
||||
optimize=0,
|
||||
|
||||
Reference in new issue
Block a user