Docker: build Session::Token with C17
The image build failed at the dependency installation. Session::Token declares
the functions of its bundled isaac implementation without prototypes, which is
an error since alpine moved to a gcc that defaults to C23:
Token.xs:31:7: error: too many arguments to function 'isaac'; expected 0, have 1
It comes in through Mojolicious::Plugin::Util::RandomString, so nothing works
without it. Only this one distribution is built with C17, everything else keeps
the defaults. CI is not affected, its gcc still defaults to C17.
The image builds again and serves the example model: paradigmatic and
syntagmatic neighbours, count based collocators and getVecsByRanks all return
the expected results.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I16b894aba70f179272bb411bacdde9dcee8aa194
diff --git a/Dockerfile b/Dockerfile
index 2f429a3..2d9b28b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -33,6 +33,12 @@
COPY . .
+# Session::Token, pulled in by Mojolicious::Plugin::Util::RandomString, declares
+# the functions of its bundled isaac implementation without prototypes, which
+# gcc rejects since it defaults to C23. Build this one with C17, the rest of the
+# dependencies compile with the defaults.
+RUN PERL_MM_OPT="CCFLAGS=-std=gnu17" cpm install -g Session::Token
+
# Install dependencies. Devel::CheckLib, which Makefile.PL needs to find
# libcollocatordb, comes bundled in inc/
RUN cpm install -g https://github.com/Akron/Mojolicious-Plugin-Localize.git && \