#
# This file is licensed under the MIT No Attribution license.
#

FROM alpine:3.24.1

RUN apk --no-cache add \
  bash \
  bison \
  build-base \
  dvisvgm=3.6-r0 \
  ghostscript \
  ghostscript-fonts \
  mupdf-tools=1.27.2-r0 \
  netpbm \
  perl \
  python3 \
  sed \
;

COPY texinfo-6.7.tar.gz /
WORKDIR /
RUN tar xzf texinfo-6.7.tar.gz
WORKDIR /texinfo-6.7
RUN CFLAGS='-g -O2 -std=gnu17' ./configure
RUN make -j4
RUN make install

COPY groff-1.24.1.tar.gz /
WORKDIR /
RUN tar xzf groff-1.24.1.tar.gz
WORKDIR /groff-1.24.1
COPY html-svg.patch.tmp /
COPY svg-text.py.tmp /usr/local/bin/groff-svg-text
RUN chmod +x /usr/local/bin/groff-svg-text
RUN grep -Fxq '1.24.1' .tarball-version
RUN patch --batch --fuzz=0 -p1 < /html-svg.patch.tmp
RUN sed -i.old \
  -e 's/{ "\\\\-", "2212" }/{ "\\\\-", "002D" }/' \
  src/libs/libgroff/glyphuni.cpp \
;
RUN sed -i.old \
  -e 's/{ "002C", "," },/& { "002D", "\\\\-" },/' \
  src/libs/libgroff/uniglyph.cpp \
;
RUN CFLAGS='-g -O2 -std=gnu17' ./configure \
  --without-x \
  --with-urw-fonts-dir=/usr/share/fonts/Type1 \
;
RUN make -j4
RUN make install

# Keep ligatures disabled even when manuals or macros request them.
RUN printf '%s\n' \
  '.do lg 0' \
  '.do de lg' \
  '..' \
  '.do char \[ff] f\&f' \
  '.do char \[fi] f\&i' \
  '.do char \[fl] f\&l' \
  '.do char \[Fi] f\&f\&i' \
  '.do char \[Fl] f\&f\&l' \
  '.do char \[uFB00] f\&f' \
  '.do char \[uFB01] f\&i' \
  '.do char \[uFB02] f\&l' \
  '.do char \[uFB03] f\&f\&i' \
  '.do char \[uFB04] f\&f\&l' \
  '.do char \[uFB05] s\&t' \
  '.do char \[uFB06] s\&t' \
  >> /usr/local/share/groff/1.24.1/tmac/troffrc-end

COPY dist.tmp /groff/source/
WORKDIR /groff/source

COPY *.bash.tmp /
COPY *.py.tmp /
RUN bash /prepare.bash.tmp
RUN bash /render.bash.tmp
