2022-04-30 17:37:25 +02:00
|
|
|
FROM centos/python-38-centos7:20210726-fad62e9
|
|
|
|
|
|
|
|
|
|
USER root
|
|
|
|
|
|
2024-10-03 23:59:00 +02:00
|
|
|
# CentOS7 went EOL on June 30, 2024 this builds out of vault.centos.org
|
|
|
|
|
RUN ls -l /etc/yum.repos.d/ \
|
|
|
|
|
&& cp /etc/yum.repos.d/CentOS-Base.repo /tmp/CentOS-Base.repo.old \
|
|
|
|
|
&& sed -e 's/mirror.centos.org/vault.centos.org/g' -i /etc/yum.repos.d/*.repo \
|
|
|
|
|
&& sed -e 's/^#.*baseurl=http/baseurl=http/g' -i /etc/yum.repos.d/*.repo \
|
|
|
|
|
&& sed -e 's/^mirrorlist=http/#mirrorlist=http/g' -i /etc/yum.repos.d/*.repo \
|
|
|
|
|
&& diff -u /tmp/CentOS-Base.repo.old /etc/yum.repos.d/CentOS-Base.repo; \
|
|
|
|
|
yum clean all \
|
|
|
|
|
&& yum -y update \
|
|
|
|
|
&& rm -f /tmp/CentOS-Base.repo.old
|
|
|
|
|
|
2026-07-20 17:25:38 +02:00
|
|
|
ARG TCL_SOURCE=tarball
|
|
|
|
|
ARG TCL_VERSION=8.6.18
|
|
|
|
|
ARG TCL_REF=core-8-6-18
|
|
|
|
|
ARG TCL_TARBALL_URL=https://codeload.github.com/tcltk/tcl/tar.gz/refs/tags/core-8-6-18
|
|
|
|
|
ARG TK_TARBALL_URL=https://codeload.github.com/tcltk/tk/tar.gz/refs/tags/core-8-6-18
|
|
|
|
|
ARG TCL_TARBALL_SHA256=
|
|
|
|
|
ARG TK_TARBALL_SHA256=
|
|
|
|
|
|
2025-06-26 13:02:42 +02:00
|
|
|
# Build Dependencies (and dump version to logging)
|
2026-07-20 17:46:47 +02:00
|
|
|
# git is installed unconditionally so workflow_dispatch can switch TCL_SOURCE to github when needed.
|
2026-07-20 17:25:38 +02:00
|
|
|
RUN yum install -y cairo-devel freeglut-devel gcc make git tcsh \
|
2025-06-26 13:02:42 +02:00
|
|
|
&& echo "### rpm -qa:" \
|
|
|
|
|
&& rpm -qa | sort \
|
|
|
|
|
&& echo ""
|
2022-04-20 17:04:25 +02:00
|
|
|
|
2026-07-22 17:09:28 +02:00
|
|
|
# LaTeX + dvips (optional). When present, the default "make" regenerates the
|
|
|
|
|
# PostScript documentation from source (configure prints "LaTeX docs: yes");
|
|
|
|
|
# otherwise the pre-built PostScript shipped in the source tree is installed.
|
|
|
|
|
# Kept non-fatal so an unavailable package can never break the release image --
|
|
|
|
|
# the documentation is shipped either way.
|
|
|
|
|
RUN yum install -y texlive-latex texlive-dvips texlive-collection-fontsrecommended \
|
|
|
|
|
|| echo "texlive unavailable; shipping the pre-built PostScript documentation"
|
|
|
|
|
|
2025-07-24 15:36:22 +02:00
|
|
|
# Tcl/Tk
|
2022-04-20 17:04:25 +02:00
|
|
|
WORKDIR /tcl
|
2026-07-20 17:25:38 +02:00
|
|
|
RUN set -eux; \
|
|
|
|
|
if [ "$TCL_SOURCE" = "github" ]; then \
|
|
|
|
|
git clone --filter=blob:none https://github.com/tcltk/tcl.git .; \
|
|
|
|
|
git checkout --detach "$TCL_REF"; \
|
|
|
|
|
else \
|
|
|
|
|
curl -fsSL "$TCL_TARBALL_URL" -o /tmp/tcl-src.tar.gz; \
|
2026-07-20 17:31:27 +02:00
|
|
|
computed_tcl_sha=$(sha256sum /tmp/tcl-src.tar.gz | cut -d' ' -f1); \
|
2026-07-20 17:25:38 +02:00
|
|
|
if [ -n "$TCL_TARBALL_SHA256" ]; then \
|
|
|
|
|
echo "$TCL_TARBALL_SHA256 /tmp/tcl-src.tar.gz" | sha256sum --check -; \
|
|
|
|
|
else \
|
|
|
|
|
echo "WARNING: no known SHA for Tcl tarball ($TCL_TARBALL_URL)"; \
|
2026-07-20 17:31:27 +02:00
|
|
|
echo "WARNING: actual Tcl tarball SHA256 is $computed_tcl_sha"; \
|
2026-07-20 17:25:38 +02:00
|
|
|
fi; \
|
|
|
|
|
tar --strip-components=1 -xzf /tmp/tcl-src.tar.gz -C .; \
|
|
|
|
|
fi; \
|
|
|
|
|
cd unix; \
|
|
|
|
|
./configure --prefix=/prefix; \
|
|
|
|
|
make; \
|
|
|
|
|
make install
|
2022-04-20 17:04:25 +02:00
|
|
|
|
|
|
|
|
WORKDIR /tk
|
2026-07-20 17:25:38 +02:00
|
|
|
RUN set -eux; \
|
|
|
|
|
if [ "$TCL_SOURCE" = "github" ]; then \
|
|
|
|
|
git clone --filter=blob:none https://github.com/tcltk/tk.git .; \
|
|
|
|
|
git checkout --detach "$TCL_REF"; \
|
|
|
|
|
else \
|
|
|
|
|
curl -fsSL "$TK_TARBALL_URL" -o /tmp/tk-src.tar.gz; \
|
2026-07-20 17:31:27 +02:00
|
|
|
computed_tk_sha=$(sha256sum /tmp/tk-src.tar.gz | cut -d' ' -f1); \
|
2026-07-20 17:25:38 +02:00
|
|
|
if [ -n "$TK_TARBALL_SHA256" ]; then \
|
|
|
|
|
echo "$TK_TARBALL_SHA256 /tmp/tk-src.tar.gz" | sha256sum --check -; \
|
|
|
|
|
else \
|
|
|
|
|
echo "WARNING: no known SHA for Tk tarball ($TK_TARBALL_URL)"; \
|
2026-07-20 17:31:27 +02:00
|
|
|
echo "WARNING: actual Tk tarball SHA256 is $computed_tk_sha"; \
|
2026-07-20 17:25:38 +02:00
|
|
|
fi; \
|
|
|
|
|
tar --strip-components=1 -xzf /tmp/tk-src.tar.gz -C .; \
|
|
|
|
|
fi; \
|
|
|
|
|
cd unix; \
|
|
|
|
|
./configure --prefix=/prefix --with-tcl=/prefix/lib; \
|
|
|
|
|
make; \
|
|
|
|
|
make install
|
2026-07-20 18:10:32 +02:00
|
|
|
RUN install -d /prefix/share/licenses/tcl /prefix/share/licenses/tk \
|
|
|
|
|
&& install -m 0644 /tcl/license.terms /prefix/share/licenses/tcl/license.terms \
|
|
|
|
|
&& install -m 0644 /tk/license.terms /prefix/share/licenses/tk/license.terms
|
2022-04-20 17:04:25 +02:00
|
|
|
|
|
|
|
|
WORKDIR /prefix/bin
|
|
|
|
|
RUN cp ./wish8.6 ./wish
|
|
|
|
|
RUN cp ./tclsh8.6 ./tclsh
|
|
|
|
|
|
|
|
|
|
# Magic
|
|
|
|
|
WORKDIR /magic
|
|
|
|
|
COPY . .
|
|
|
|
|
|
|
|
|
|
RUN ./configure \
|
|
|
|
|
--prefix=/prefix \
|
|
|
|
|
--with-tcl=/prefix/lib \
|
|
|
|
|
--with-tk=/prefix/lib \
|
2022-04-30 17:37:25 +02:00
|
|
|
--without-opengl \
|
2022-04-20 17:04:25 +02:00
|
|
|
&& make clean \
|
2026-07-22 17:53:36 +02:00
|
|
|
&& make prepare \
|
2022-04-20 17:04:25 +02:00
|
|
|
&& make -j$(nproc) \
|
2026-07-20 18:10:32 +02:00
|
|
|
&& make install \
|
|
|
|
|
&& install -d /prefix/share/licenses/magic \
|
|
|
|
|
&& install -m 0644 /magic/LICENSE /prefix/share/licenses/magic/LICENSE
|
2022-04-20 17:04:25 +02:00
|
|
|
|
2025-06-26 13:02:42 +02:00
|
|
|
# Produce summary of what was created and confirm their DSOs
|
|
|
|
|
RUN echo "### filesystem:" \
|
|
|
|
|
find /prefix -printf "%y/%M/%m %i/%n %l %u/%U %g/%G %s/%b %T+/%T@\t%p\n"; \
|
|
|
|
|
ls -lR /prefix; \
|
2026-07-20 17:25:38 +02:00
|
|
|
find /prefix -type f -perm /111 -exec bash -c "echo \\#\\#\\# {}; ldd -v {}" \; 2>/dev/null; \
|
2025-06-26 13:02:42 +02:00
|
|
|
for name in libgcc_s libstdc++ libpng liblzma libxml2 libz libcairo libGL libGLU; do \
|
2026-07-20 17:25:38 +02:00
|
|
|
find /lib64 /usr/lib64 -maxdepth 2 -name "*.so" -name "${name}*" -exec bash -c "echo \\#\\#\\# {}; ldd -v {}" \; 2>/dev/null; \
|
2025-06-26 13:02:42 +02:00
|
|
|
done; \
|
|
|
|
|
echo "###"
|
|
|
|
|
|
2022-04-20 17:04:25 +02:00
|
|
|
WORKDIR /
|
|
|
|
|
RUN tar -czf /prefix.tar.gz -C ./prefix .
|
|
|
|
|
|
2025-06-26 13:02:42 +02:00
|
|
|
CMD ["/bin/bash"]
|