Skip to content

Commit e832193

Browse files
committed
Re-add pdf-builder on minimal
1 parent f1a1578 commit e832193

File tree

3 files changed

+133
-3
lines changed

3 files changed

+133
-3
lines changed

jupyter/minimal/ubi9-python-3.12/Dockerfile.cpu

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,24 @@ ARG BASE_IMAGE
66
# External image alias for UBI repository configuration
77
FROM registry.access.redhat.com/ubi9/ubi AS ubi-repos
88

9+
############################
10+
# Stage 1: PDF Tool Build #
11+
############################
12+
FROM registry.access.redhat.com/ubi9/python-312:latest AS pdf-builder
13+
14+
WORKDIR /opt/app-root/bin
15+
16+
# OS Packages needs to be installed as root
17+
USER 0
18+
19+
# Copy scripts
20+
COPY jupyter/utils/install_texlive.sh ./install_texlive.sh
21+
COPY jupyter/utils/install_pandoc.sh ./install_pandoc.sh
22+
RUN chmod +x install_texlive.sh install_pandoc.sh
23+
24+
RUN ./install_texlive.sh
25+
RUN ./install_pandoc.sh
26+
927
####################
1028
# cpu-base #
1129
####################
@@ -71,9 +89,14 @@ COPY ${JUPYTER_REUSABLE_UTILS} utils/
7189
USER 0
7290

7391
# Dependencies for PDF export begin
74-
RUN ./utils/install_pdf_deps.sh
75-
ENV PATH="/usr/local/texlive/bin/linux:/usr/local/pandoc/bin:$PATH"
76-
# Dependencies for PDF export end
92+
RUN --mount=type=cache,from=pdf-builder,source=/usr/local/,target=/pdf_builder/,rw \
93+
bash -c ' \
94+
if [[ "$(uname -m)" == "ppc64le" ]]; then \
95+
cp -r /pdf_builder/texlive /usr/local/; \
96+
cp -r /pdf_builder/pandoc /usr/local/; \
97+
else \
98+
./utils/install_pdf_deps.sh; \
99+
fi'
77100

78101
USER 1001
79102

jupyter/utils/install_pandoc.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
set -euxo pipefail
3+
4+
# Mapping of `uname -m` values to equivalent GOARCH values
5+
declare -A UNAME_TO_GOARCH
6+
UNAME_TO_GOARCH["x86_64"]="amd64"
7+
UNAME_TO_GOARCH["aarch64"]="arm64"
8+
UNAME_TO_GOARCH["ppc64le"]="ppc64le"
9+
UNAME_TO_GOARCH["s390x"]="s390x"
10+
11+
ARCH="${UNAME_TO_GOARCH[$(uname -m)]}"
12+
13+
if [[ "$ARCH" == "ppc64le" ]]; then
14+
15+
# Install Pandoc from source
16+
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
17+
dnf install -y pandoc
18+
mkdir -p /usr/local/pandoc/bin
19+
ln -s /usr/bin/pandoc /usr/local/pandoc/bin/pandoc
20+
export PATH="/usr/local/pandoc/bin:$PATH"
21+
pandoc --version
22+
23+
fi

jupyter/utils/install_texlive.sh

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#!/bin/bash
2+
set -euxo pipefail
3+
4+
# Mapping of `uname -m` values to equivalent GOARCH values
5+
declare -A UNAME_TO_GOARCH
6+
UNAME_TO_GOARCH["x86_64"]="amd64"
7+
UNAME_TO_GOARCH["aarch64"]="arm64"
8+
UNAME_TO_GOARCH["ppc64le"]="ppc64le"
9+
UNAME_TO_GOARCH["s390x"]="s390x"
10+
11+
ARCH="${UNAME_TO_GOARCH[$(uname -m)]}"
12+
13+
if [[ "$ARCH" == "ppc64le" ]]; then
14+
15+
echo "Installing TeX Live from source for $ARCH..."
16+
17+
# Install build dependencies
18+
dnf install -y gcc-toolset-13 perl make libX11-devel \
19+
zlib-devel freetype-devel libpng-devel ncurses-devel \
20+
gd-devel libtool wget tar xz \
21+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/libXmu-devel-1.1.3-8.el9.ppc64le.rpm \
22+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/libXext-devel-1.3.4-8.el9.ppc64le.rpm \
23+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/libICE-devel-1.0.10-8.el9.ppc64le.rpm \
24+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/libSM-devel-1.2.3-10.el9.ppc64le.rpm \
25+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/libXmu-1.1.3-8.el9.ppc64le.rpm \
26+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/libXaw-devel-1.0.13-19.el9.ppc64le.rpm \
27+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/libXaw-1.0.13-19.el9.ppc64le.rpm \
28+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/libXt-devel-1.2.0-6.el9.ppc64le.rpm \
29+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/flex-2.6.4-9.el9.ppc64le.rpm \
30+
https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os/Packages/bison-3.7.4-5.el9.ppc64le.rpm
31+
32+
# Step 1: Download and extract the TeX Live source
33+
wget https://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2025/texlive-20250308-source.tar.xz
34+
tar -xf texlive-20250308-source.tar.xz
35+
cd texlive-20250308-source
36+
37+
# Enable newer GCC toolchain
38+
source /opt/rh/gcc-toolset-13/enable
39+
40+
# Create build directory and build
41+
mkdir -p ../texlive-build
42+
cd ../texlive-build
43+
../texlive-20250308-source/configure --prefix=/usr/local/texlive
44+
make -j"$(nproc)"
45+
make install
46+
47+
# Symlink for pdflatex
48+
ln -sf pdftex /usr/local/texlive/bin/powerpc64le-unknown-linux-gnu/pdflatex
49+
50+
# Cleanup sources to reduce image size
51+
rm -rf /texlive-20250308-source /texlive-build
52+
53+
# Step 2: Run TeX Live installer for runtime tree setup
54+
cd /
55+
wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
56+
tar -xzf install-tl-unx.tar.gz
57+
cd install-tl-2*/
58+
59+
# Create a custom install profile
60+
TEXLIVE_INSTALL_PREFIX="/usr/local/texlive"
61+
cat <<EOF > texlive.profile
62+
selected_scheme scheme-small
63+
TEXDIR $TEXLIVE_INSTALL_PREFIX
64+
TEXMFCONFIG ~/.texlive2025/texmf-config
65+
TEXMFVAR ~/.texlive2025/texmf-var
66+
option_doc 0
67+
option_src 0
68+
EOF
69+
70+
./install-tl --profile=texlive.profile --custom-bin=$TEXLIVE_INSTALL_PREFIX/bin/powerpc64le-unknown-linux-gnu
71+
72+
# TeX Live binary directory
73+
TEX_BIN_DIR="/usr/local/texlive/bin/powerpc64le-unknown-linux-gnu"
74+
75+
# Create standard symlink 'linux' → arch-specific folder
76+
ln -sf "$TEX_BIN_DIR" /usr/local/texlive/bin/linux
77+
78+
79+
# Set up environment
80+
export PATH="$TEXLIVE_INSTALL_PREFIX/bin/linux:$PATH"
81+
pdflatex --version
82+
tlmgr --version
83+
84+
fi

0 commit comments

Comments
 (0)