Runner běží v host módu, bez dockeru, takže se v něm kontejner na AlmaLinux spustit nedá. Ukázalo se ale, že kontejner potřeba není: stačí stavět proti samostatnému CPythonu od uv. Ten je slinkovaný s glibc 2.17 a nic z hostitele se do binárky nedostane — změřeno objdumpem přes všechno, co se z ní rozbaluje. Výsledek je tedy přenositelnější než přes AlmaLinux 8 (2.28) a build.sh je o polovinu kratší. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cb39036724
commit
8aa54dc7a0
4 files changed
+47
-55
No files matched your search
@@ -1,30 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
# Postaví jednosouborovou binárku pro Linux do dist/kostky.
|
||||
#
|
||||
# Staví se v kontejneru s glibc 2.28 (AlmaLinux 8), ne na hostiteli. Binárka
|
||||
# slinkovaná proti glibc z Fedory 44 by nešla spustit nikde se starším
|
||||
# systémem — glibc drží zpětnou kompatibilitu, ne dopřednou. Postavené na
|
||||
# staré glibc poběží i na nové.
|
||||
# Staví se proti samostatnému CPythonu od uv, ne proti systémovému. Ten je
|
||||
# slinkovaný s glibc 2.17, takže binárka jede i na letitých systémech.
|
||||
# Postavená proti Pythonu z Fedory 44 by chtěla glibc 2.43 a nešla by
|
||||
# spustit skoro nikde — glibc drží zpětnou kompatibilitu, ne dopřednou.
|
||||
# Nic z hostitele se do ní nedostane, takže kontejner k tomu není potřeba.
|
||||
set -euo pipefail
|
||||
|
||||
IMAGE=${IMAGE:-docker.io/library/almalinux:8}
|
||||
PYTHON=${PYTHON:-python3.11}
|
||||
ENGINE=${ENGINE:-$(command -v podman || command -v docker)}
|
||||
VERSION=${VERSION:-3.11}
|
||||
BUILD=${BUILD:-.build}
|
||||
|
||||
# Rootless podman mapuje roota v kontejneru na tebe, docker ne — tam by
|
||||
# dist/ zůstalo cizí.
|
||||
FIXUP=":"
|
||||
[[ "$ENGINE" == *docker ]] && FIXUP="chown -R $(id -u):$(id -g) dist"
|
||||
uv python install "$VERSION"
|
||||
uv venv --quiet --managed-python --python "$VERSION" "$BUILD"
|
||||
uv pip install --quiet --python "$BUILD/bin/python" -r requirements.txt pyinstaller
|
||||
|
||||
"$ENGINE" run --rm -v "$PWD:/src:z" -w /src "$IMAGE" bash -euc "
|
||||
dnf install -y -q python3.11 binutils
|
||||
$PYTHON -m venv /tmp/build
|
||||
/tmp/build/bin/pip install --quiet --upgrade pip
|
||||
/tmp/build/bin/pip install --quiet flask qrcode pyinstaller
|
||||
/tmp/build/bin/pyinstaller --clean --noconfirm \
|
||||
--distpath dist --workpath /tmp/work kostky.spec
|
||||
$FIXUP
|
||||
"
|
||||
"$BUILD/bin/pyinstaller" --clean --noconfirm \
|
||||
--distpath dist --workpath "$BUILD/work" kostky.spec
|
||||
|
||||
echo
|
||||
ls -lh dist/kostky
|
||||
Reference in new issue
Block a user