Stáhni a spusť: jednosouborová binárka pro Linux, uvnitř Python, Flask, šablony i styly. Staví se ./build.sh v kontejneru na AlmaLinux 8, protože binárka slinkovaná proti glibc z Fedory 44 by nešla spustit nikde se starším systémem. Databáze tím dostává dvě různá místa. Ze zdrojáků zůstává dice.db v pracovním adresáři, ať se dá mít víc sad vedle sebe. Z binárky jde do ~/.local/share/kostky/ — binárka se rozbaluje do dočasného adresáře a pouští se odkudkoli, takže relativní cesta by databázi rozsypala po disku. DICE_DB přebije obojí. Server teď cestu k databázi vypisuje při startu, ať se na ni nemusí ptát. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
31 lines
1.1 KiB
Bash
Executable File
31 lines
1.1 KiB
Bash
Executable File
#!/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é.
|
|
set -euo pipefail
|
|
|
|
IMAGE=${IMAGE:-docker.io/library/almalinux:8}
|
|
PYTHON=${PYTHON:-python3.11}
|
|
ENGINE=${ENGINE:-$(command -v podman || command -v docker)}
|
|
|
|
# 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"
|
|
|
|
"$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
|
|
"
|
|
|
|
echo
|
|
ls -lh dist/kostky
|