-
Notifications
You must be signed in to change notification settings - Fork 19
RHOAIENG-28547: add TeX Live and Pandoc installation for ppc64le #1318
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: rhoai-2.23-multi-arch-poc
Are you sure you want to change the base?
Changes from 4 commits
0074e35
9522ef1
7a6abc7
240aa79
d031ee5
3c790ad
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#!/bin/bash | ||
set -euxo pipefail | ||
|
||
# Mapping of `uname -m` values to equivalent GOARCH values | ||
declare -A UNAME_TO_GOARCH | ||
UNAME_TO_GOARCH["x86_64"]="amd64" | ||
UNAME_TO_GOARCH["aarch64"]="arm64" | ||
UNAME_TO_GOARCH["ppc64le"]="ppc64le" | ||
UNAME_TO_GOARCH["s390x"]="s390x" | ||
|
||
ARCH="${UNAME_TO_GOARCH[$(uname -m)]}" | ||
|
||
if [[ "$ARCH" == "ppc64le" ]]; then | ||
# Install Pandoc from source | ||
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm | ||
dnf install -y cabal-install ghc gmp-devel | ||
|
||
# Set version | ||
PANDOC_VERSION=3.7.0.2 | ||
|
||
cd /tmp | ||
git clone --recurse-submodules https://github.com/jgm/pandoc.git | ||
cd pandoc | ||
git checkout ${PANDOC_VERSION} | ||
git submodule update --init --recursive | ||
|
||
export HOME=/root | ||
# Initialize cabal user config (don't fail if already done) | ||
cabal user-config init || true | ||
|
||
# Modify config | ||
echo "repository hackage.haskell.org | ||
url: https://hackage.haskell.org/ | ||
secure: False" >> $HOME/.cabal/config | ||
|
||
cabal update | ||
cd pandoc-cli | ||
cabal build -j"$(nproc)" | ||
mkdir -p /usr/local/pandoc/bin | ||
cabal install \ | ||
--installdir=/usr/local/pandoc/bin \ | ||
--overwrite-policy=always \ | ||
--install-method=copy | ||
|
||
# Clean up Haskell build system | ||
rm -rf ~/.cabal ~/.ghc /tmp/pandoc | ||
dnf remove -y cabal-install ghc gmp-devel | ||
dnf clean all && rm -rf /var/cache/dnf | ||
|
||
/usr/local/pandoc/bin/pandoc --version | ||
|
||
elif [[ "$ARCH" == "amd64" ]]; then | ||
# pandoc installation | ||
curl -fL "https://github.com/jgm/pandoc/releases/download/3.7.0.2/pandoc-3.7.0.2-linux-${ARCH}.tar.gz" -o /tmp/pandoc.tar.gz | ||
mkdir -p /usr/local/pandoc | ||
tar xvzf /tmp/pandoc.tar.gz --strip-components 1 -C /usr/local/pandoc/ | ||
rm -f /tmp/pandoc.tar.gz | ||
|
||
else | ||
echo "Unsupported architecture: $ARCH" >&2 | ||
exit 1 | ||
fi |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
#!/bin/bash | ||
set -euxo pipefail | ||
|
||
# Mapping of `uname -m` values to equivalent GOARCH values | ||
declare -A UNAME_TO_GOARCH | ||
UNAME_TO_GOARCH["x86_64"]="amd64" | ||
UNAME_TO_GOARCH["aarch64"]="arm64" | ||
UNAME_TO_GOARCH["ppc64le"]="ppc64le" | ||
UNAME_TO_GOARCH["s390x"]="s390x" | ||
|
||
ARCH="${UNAME_TO_GOARCH[$(uname -m)]}" | ||
|
||
if [[ "$ARCH" == "ppc64le" ]]; then | ||
echo "Installing TeX Live from source for $ARCH..." | ||
|
||
# Install build dependencies | ||
dnf install -y https://mirror.stream.centos.org/9-stream/BaseOS/ppc64le/os/Packages/centos-gpg-keys-9.0-24.el9.noarch.rpm \ | ||
https://mirror.stream.centos.org/9-stream/BaseOS/`arch`/os/Packages/centos-stream-repos-9.0-24.el9.noarch.rpm \ | ||
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm | ||
dnf config-manager --add-repo https://mirror.stream.centos.org/9-stream/BaseOS/ppc64le/os | ||
dnf config-manager --add-repo https://mirror.stream.centos.org/9-stream/AppStream/ppc64le/os | ||
dnf config-manager --set-enabled crb | ||
dnf install -y gcc-toolset-13 perl make libX11-devel libXt-devel \ | ||
zlib-devel freetype-devel libpng-devel ncurses-devel \ | ||
gd-devel libtool wget tar xz bison flex libXaw-devel | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm sorry, but no, this is not permitted, UBI and CentOS may not be mixed in anything that Red Hat does, that's against Red Hat policy. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @jiridanek Thanks for pointing this out. I've now removed CentOS repository configuration from the script. Instead, I'm directly installing only the required packages via RPMs (from CentOS Stream) using rpm -ivh --nodeps, and only for those not available in UBI. |
||
|
||
# Disable temporary CentOS Stream repos after use | ||
dnf config-manager --disable \ | ||
mirror.stream.centos.org_9-stream_BaseOS_ppc64le_os \ | ||
mirror.stream.centos.org_9-stream_AppStream_ppc64le_os \ | ||
crb | ||
|
||
# Step 1: Download and extract the TeX Live source | ||
wget https://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2025/texlive-20250308-source.tar.xz | ||
tar -xf texlive-20250308-source.tar.xz | ||
cd texlive-20250308-source | ||
|
||
# Enable newer GCC toolchain | ||
source /opt/rh/gcc-toolset-13/enable | ||
|
||
# Create build directory and build | ||
mkdir ../texlive-build | ||
cd ../texlive-build | ||
../texlive-20250308-source/configure --prefix=/usr/local/texlive | ||
make -j"$(nproc)" | ||
make install | ||
|
||
# Symlink for pdflatex | ||
ln -sf pdftex /usr/local/texlive/bin/powerpc64le-unknown-linux-gnu/pdflatex | ||
|
||
# Cleanup sources to reduce image size | ||
rm -rf /texlive-20250308-source /texlive-build | ||
|
||
# Step 2: Run TeX Live installer for runtime tree setup | ||
cd / | ||
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz | ||
tar -xzf install-tl-unx.tar.gz | ||
cd install-tl-2*/ | ||
|
||
# Create a custom install profile | ||
TEXLIVE_INSTALL_PREFIX="/usr/local/texlive" | ||
cat <<EOF > texlive.profile | ||
selected_scheme scheme-small | ||
TEXDIR $TEXLIVE_INSTALL_PREFIX | ||
TEXMFCONFIG ~/.texlive2025/texmf-config | ||
TEXMFVAR ~/.texlive2025/texmf-var | ||
option_doc 0 | ||
option_src 0 | ||
EOF | ||
|
||
./install-tl --profile=texlive.profile --custom-bin=$TEXLIVE_INSTALL_PREFIX/bin/powerpc64le-unknown-linux-gnu | ||
|
||
# TeX Live binary directory | ||
TEX_BIN_DIR="/usr/local/texlive/bin/powerpc64le-unknown-linux-gnu" | ||
|
||
# Create standard symlink 'linux' → arch-specific folder | ||
ln -sf "$TEX_BIN_DIR" /usr/local/texlive/bin/linux | ||
|
||
|
||
# Set up environment | ||
export PATH="$TEXLIVE_INSTALL_PREFIX/bin/linux:$PATH" | ||
pdflatex --version | ||
tlmgr --version | ||
|
||
elif [[ "$ARCH" == "amd64" ]]; then | ||
# tex live installation | ||
echo "Installing TexLive to allow PDf export from Notebooks" | ||
curl -fL https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz -o install-tl-unx.tar.gz | ||
zcat < install-tl-unx.tar.gz | tar xf - | ||
cd install-tl-2* | ||
perl ./install-tl --no-interaction --scheme=scheme-small --texdir=/usr/local/texlive | ||
mv /usr/local/texlive/bin/"$(uname -m)-linux" /usr/local/texlive/bin/linux | ||
cd /usr/local/texlive/bin/linux | ||
./tlmgr install tcolorbox pdfcol adjustbox titling enumitem soul ucs collection-fontsrecommended | ||
|
||
else | ||
echo "Unsupported architecture: $ARCH" >&2 | ||
exit 1 | ||
|
||
fi | ||
|
Uh oh!
There was an error while loading. Please reload this page.