juegos

Juegos de terminal de Pancho: Catan (TUI, GUI, web, servidor, PicoCalc), ajedrez, calculadora y minijuegos
git clone https://git.lu3dhn.xyz/juegos.git
Log | Files | Refs

commit 13fefa9eefe684730f069272d099e26ef7290c8b
parent 7a86cf8f3c5c0445d6d9569ec24be57f4f4cd19c
Author: Francisco Armando Rosmino <franciscorosmino@rosmino.com.ar>
Date:   Sat,  3 Oct 2026 11:38:16 -0300

Catan: linux-release.sh compila en docker local (sudo con askpass) o remoto

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Diffstat:
Mcatan/tools/linux-release.sh | 74++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
1 file changed, 52 insertions(+), 22 deletions(-)

diff --git a/catan/tools/linux-release.sh b/catan/tools/linux-release.sh @@ -1,30 +1,60 @@ #!/bin/sh # Compila el catan de Linux para repartir: un solo archivo que corre en la mayoria de las # distros. Se compila dentro de un Ubuntu 22.04 (docker) porque un binario de Linux solo -# corre en sistemas con una libc igual o mas nueva que la de donde se compilo; la de esta -# compu es muy nueva. SDL3 y ncurses van adentro (estaticos); lo grafico (X11/Wayland, audio) -# SDL lo busca al arrancar en la compu de cada uno. +# corre en sistemas con una libc igual o mas nueva que la de donde se compilo; la de la X1 +# es muy nueva. SDL3 y ncurses van adentro (estaticos); lo grafico (X11/Wayland, audio) SDL +# lo busca al arrancar en la compu de cada uno. +# +# Docker corre en esta compu (en la X1 pancho no esta en el grupo docker: se usa sudo con el +# popup de sudo-askpass), o en RELEASE_HOST por ssh (ej. RELEASE_HOST=ct112-remoto, que tiene +# docker y entramos como root). # Uso: tools/linux-release.sh <version> <salida> (lo llama make release) set -e VERSION=$1; OUT=$2 +HOST=${RELEASE_HOST:-local} +DOCKER=docker +if [ "$HOST" = local ] && ! docker info >/dev/null 2>&1; then + export SUDO_ASKPASS=${SUDO_ASKPASS:-$(command -v sudo-askpass)} + DOCKER="sudo -A docker" +fi SDL_SRC=${WIN_SDL_SRC:-$HOME/.local/opt/src/SDL3-3.4.16} ROOT=$(cd "$(dirname "$0")/../.." && pwd) -docker run --rm -v "$ROOT":/src:ro -v "$SDL_SRC":/sdl:ro -v "$(dirname "$(realpath -m "$OUT")")":/out \ - -e VERSION="$VERSION" -e OUTNAME="$(basename "$OUT")" -e HUID="$(id -u)" ubuntu:22.04 sh -ec ' - export DEBIAN_FRONTEND=noninteractive - apt-get update -qq >/dev/null - apt-get install -y -qq build-essential cmake ninja-build pkg-config libncurses-dev \ - libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev libxfixes-dev \ - libwayland-dev libxkbcommon-dev wayland-protocols libegl-dev libgl-dev libdecor-0-dev \ - libasound2-dev libpulse-dev libdrm-dev libgbm-dev >/dev/null - cmake -S /sdl -B /tmp/sdl -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sdl \ - -DSDL_SHARED=OFF -DSDL_STATIC=ON -DSDL_TESTS=OFF -DSDL_EXAMPLES=OFF >/dev/null - cmake --build /tmp/sdl >/dev/null && cmake --install /tmp/sdl >/dev/null - cp -r /src /tmp/j && cd /tmp/j/catan && rm -f catan - make catan VERSION="$VERSION" CFLAGS="-O2" \ - SDL="$(PKG_CONFIG_PATH=/opt/sdl/lib/pkgconfig pkg-config --cflags --static --libs sdl3)" \ - NCURSES="-Wl,-Bstatic -lncursesw -ltinfo -Wl,-Bdynamic" >/dev/null - strip catan - cp catan /out/$OUTNAME && chown $HUID /out/$OUTNAME - ldd /out/$OUTNAME | sed "s/^/ /" -' + +# lo que corre dentro del contenedor: /src el repo, /sdl la fuente de SDL3, /out la salida +BUILD='set -e +export DEBIAN_FRONTEND=noninteractive +apt-get update -qq >/dev/null +apt-get install -y -qq build-essential cmake ninja-build pkg-config libncurses-dev \ + libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev libxfixes-dev \ + libwayland-dev libxkbcommon-dev wayland-protocols libegl-dev libgl-dev libdecor-0-dev \ + libasound2-dev libpulse-dev libdrm-dev libgbm-dev >/dev/null +cmake -S /sdl -B /tmp/sdl -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sdl \ + -DSDL_SHARED=OFF -DSDL_STATIC=ON -DSDL_TESTS=OFF -DSDL_EXAMPLES=OFF >/dev/null +cmake --build /tmp/sdl >/dev/null && cmake --install /tmp/sdl >/dev/null +cp -r /src /tmp/j && cd /tmp/j/catan && rm -f catan +make catan VERSION="$VERSION" CFLAGS="-O2" \ + SDL="$(PKG_CONFIG_PATH=/opt/sdl/lib/pkgconfig pkg-config --cflags --static --libs sdl3)" \ + NCURSES="-Wl,-Bstatic -lncursesw -ltinfo -Wl,-Bdynamic" >/dev/null +strip catan +cp catan /out/catan +ldd /out/catan | sed "s/^/ /"' + +if [ "$HOST" = local ]; then + mkdir -p "$(dirname "$OUT")" + T=$(mktemp -d) + $DOCKER run --rm -v "$ROOT":/src:ro -v "$SDL_SRC":/sdl:ro -v "$T":/out -e VERSION="$VERSION" \ + ubuntu:22.04 sh -c "$BUILD" + cp "$T/catan" "$OUT"; rm -rf "$T" + exit 0 +fi + +# remoto: se manda el codigo (lo que esta en git, tal como esta ahora) y la fuente de SDL3 +R=/tmp/catan-release +ssh "$HOST" "rm -rf $R && mkdir -p $R/src $R/sdl $R/out" +(cd "$ROOT" && git ls-files -z | tar --null -T - -cz) | ssh "$HOST" "tar -xz -C $R/src" +tar -C "$SDL_SRC" --exclude='build*' -cz . | ssh "$HOST" "tar -xz -C $R/sdl" +ssh "$HOST" "docker run --rm -v $R/src:/src:ro -v $R/sdl:/sdl:ro -v $R/out:/out -e VERSION='$VERSION' \ + ubuntu:22.04 sh -c '$(printf '%s' "$BUILD" | sed "s/'/'\\\\''/g")'" +mkdir -p "$(dirname "$OUT")" +scp -q "$HOST:$R/out/catan" "$OUT" +ssh "$HOST" "rm -rf $R"