# GNU Backgammon de référence pour les tests d'Ustagammon (ADR 0005).
#
# Compile gnubg en ligne de commande, sans interface graphique, depuis le
# commit figé 14b67984737ded0f6de43d63dcb789f729d9b06b (1.08.003), avec le
# scripting Python intégré. Produit aussi, avec les outils officiels de gnubg,
# les données dont le moteur embarqué devra se servir à l'identique :
#   gnubg.wd     : poids du réseau, binaires, par `makeweights` ;
#   gnubg_os0.bd : base de sortie à un côté, par `makebearoff -o 6 -s 7999999` ;
#   gnubg_ts0.bd : base de sortie à deux côtés, par `makebearoff -t 6x6`.
# `make` les produit et `make install` les installe dans /usr/local/share/gnubg/ ;
# leurs sommes SHA-256 sont dans /usr/local/share/gnubg/donnees.sha256.

FROM debian:trixie

ARG GNUBG_DEPOT=https://git.savannah.gnu.org/git/gnubg.git
ARG GNUBG_COMMIT=14b67984737ded0f6de43d63dcb789f729d9b06b

RUN apt-get update \
	&& apt-get install -y --no-install-recommends \
		autoconf automake autopoint bison build-essential ca-certificates \
		flex gettext git libglib2.0-dev libtool pkgconf python3-dev \
	&& rm -rf /var/lib/apt/lists/*

WORKDIR /src/gnubg
RUN git init -q . \
	&& git remote add origin "$GNUBG_DEPOT" \
	&& git fetch -q --depth 1 origin "$GNUBG_COMMIT" \
	&& git checkout -q FETCH_HEAD \
	&& test "$(git rev-parse HEAD)" = "$GNUBG_COMMIT"

# Options figées pour un résultat indépendant de la machine hôte :
# - pas d'interface graphique, pas de plateau 3D, pas de SQLite ;
# - SIMD forcé à SSE2 (présent sur tout x86-64) au lieu de la détection
#   automatique du processeur de la machine qui construit l'image ;
# - drapeaux de compilation par défaut de gnubg (-O3 -ffast-math).
RUN ./autogen.sh \
	&& ./configure --without-gtk --without-board3d --without-sqlite \
		--with-python=python3 --enable-simd=sse2 \
	&& make -j2 \
	&& make install \
	&& cd /usr/local/share/gnubg \
	&& sha256sum /src/gnubg/gnubg.weights gnubg.wd gnubg_os0.bd gnubg_ts0.bd met/Kazaross-XG2.xml > donnees.sha256 \
	&& printf '%s\n' "$GNUBG_COMMIT" > commit

ENV LANG=C.UTF-8
WORKDIR /travail
