diff --git a/CREDITS.md b/CREDITS.md index 6c344f0..2611a5d 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -21,6 +21,16 @@ précisément ici dès que du code en sera repris : ## Outils de développement - **ShellCheck** (GPLv3), analyse des scripts shell, utilisé via Docker. +- **Debian** (image Docker `debian:trixie`, logiciels libres sous leurs + licences respectives), base de l'image du gnubg de référence. +- **GNU Backgammon** (GPLv3 ou ultérieure), compilé dans Docker au commit + 14b67984737ded0f6de43d63dcb789f729d9b06b depuis + https://git.savannah.gnu.org/git/gnubg.git, sert de référence aux tests + (`docker/gnubg-reference/`, `tests/reference/`). Les résultats de + `tests/reference/results/` et les données `gnubg.wd`, `gnubg_os0.bd`, + `gnubg_ts0.bd` sont produits par ce programme. +- **jq** (licence MIT), lecture des JSON dans `tests/test_reference.sh` ; + utilisé sur le PC, pas dans Docker. ## Remerciements diff --git a/docker/gnubg-reference/Dockerfile b/docker/gnubg-reference/Dockerfile new file mode 100644 index 0000000..ef14ed1 --- /dev/null +++ b/docker/gnubg-reference/Dockerfile @@ -0,0 +1,46 @@ +# 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