140 lines
4.4 KiB
Plaintext
140 lines
4.4 KiB
Plaintext
FROM quay.io/pypa/manylinux_2_28_s390x as base
|
|
|
|
# Language variables
|
|
ENV LC_ALL=C.UTF-8
|
|
ENV LANG=C.UTF-8
|
|
ENV LANGUAGE=C.UTF-8
|
|
|
|
# there is a bugfix in gcc >= 14 for precompiled headers and s390x vectorization interaction.
|
|
# with earlier gcc versions test/inductor/test_cpu_cpp_wrapper.py will fail.
|
|
ARG DEVTOOLSET_VERSION=14
|
|
# Installed needed OS packages. This is to support all
|
|
# the binary builds (torch, vision, audio, text, data)
|
|
RUN yum -y install epel-release
|
|
RUN yum -y update
|
|
RUN yum install -y \
|
|
sudo \
|
|
autoconf \
|
|
automake \
|
|
bison \
|
|
bzip2 \
|
|
curl \
|
|
diffutils \
|
|
file \
|
|
git \
|
|
make \
|
|
patch \
|
|
perl \
|
|
unzip \
|
|
util-linux \
|
|
wget \
|
|
which \
|
|
xz \
|
|
yasm \
|
|
less \
|
|
zstd \
|
|
libgomp \
|
|
gcc-toolset-${DEVTOOLSET_VERSION}-gcc \
|
|
gcc-toolset-${DEVTOOLSET_VERSION}-gcc-c++ \
|
|
gcc-toolset-${DEVTOOLSET_VERSION}-binutils \
|
|
gcc-toolset-${DEVTOOLSET_VERSION}-gcc-gfortran \
|
|
cmake \
|
|
rust \
|
|
cargo \
|
|
llvm-devel \
|
|
libzstd-devel \
|
|
python3.12-devel \
|
|
python3.12-test \
|
|
python3.12-setuptools \
|
|
python3.12-pip \
|
|
python3-virtualenv \
|
|
python3.12-pyyaml \
|
|
python3.12-numpy \
|
|
python3.12-wheel \
|
|
python3.12-cryptography \
|
|
blas-devel \
|
|
openblas-devel \
|
|
lapack-devel \
|
|
atlas-devel \
|
|
libjpeg-devel \
|
|
libxslt-devel \
|
|
libxml2-devel \
|
|
openssl-devel \
|
|
valgrind \
|
|
ninja-build
|
|
|
|
ENV PATH=/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/bin:$PATH
|
|
ENV LD_LIBRARY_PATH=/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/lib64:/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/lib:$LD_LIBRARY_PATH
|
|
|
|
# git236+ would refuse to run git commands in repos owned by other users
|
|
# Which causes version check to fail, as pytorch repo is bind-mounted into the image
|
|
# Override this behaviour by treating every folder as safe
|
|
# For more details see https://github.com/pytorch/pytorch/issues/78659#issuecomment-1144107327
|
|
RUN git config --global --add safe.directory "*"
|
|
|
|
# installed python doesn't have development parts. Rebuild it from scratch
|
|
RUN /bin/rm -rf /opt/_internal /opt/python /usr/local/*/*
|
|
|
|
# EPEL for cmake
|
|
FROM base as patchelf
|
|
# Install patchelf
|
|
ADD ./common/install_patchelf.sh install_patchelf.sh
|
|
RUN bash ./install_patchelf.sh && rm install_patchelf.sh
|
|
RUN cp $(which patchelf) /patchelf
|
|
|
|
FROM patchelf as python
|
|
# build python
|
|
COPY manywheel/build_scripts /build_scripts
|
|
ADD ./common/install_cpython.sh /build_scripts/install_cpython.sh
|
|
ENV SSL_CERT_FILE=
|
|
RUN bash build_scripts/build.sh && rm -r build_scripts
|
|
|
|
FROM base as final
|
|
COPY --from=python /opt/python /opt/python
|
|
COPY --from=python /opt/_internal /opt/_internal
|
|
COPY --from=python /opt/python/cp39-cp39/bin/auditwheel /usr/local/bin/auditwheel
|
|
COPY --from=patchelf /usr/local/bin/patchelf /usr/local/bin/patchelf
|
|
|
|
RUN alternatives --set python /usr/bin/python3.12
|
|
RUN alternatives --set python3 /usr/bin/python3.12
|
|
|
|
RUN pip-3.12 install typing_extensions
|
|
|
|
ENTRYPOINT []
|
|
CMD ["/bin/bash"]
|
|
|
|
# install test dependencies:
|
|
# - grpcio requires system openssl, bundled crypto fails to build
|
|
RUN dnf install -y \
|
|
hdf5-devel \
|
|
python3-h5py \
|
|
git
|
|
|
|
RUN env GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=True pip3 install grpcio
|
|
|
|
# cmake-3.28.0 from pip for onnxruntime
|
|
RUN python3 -mpip install cmake==3.28.0
|
|
|
|
# build onnxruntime 1.21.0 from sources.
|
|
# it is not possible to build it from sources using pip,
|
|
# so just build it from upstream repository.
|
|
# h5py is dependency of onnxruntime_training.
|
|
# h5py==3.11.0 builds with hdf5-devel 1.10.5 from repository.
|
|
# h5py 3.11.0 doesn't build with numpy >= 2.3.0.
|
|
# install newest flatbuffers version first:
|
|
# for some reason old version is getting pulled in otherwise.
|
|
# packaging package is required for onnxruntime wheel build.
|
|
RUN pip3 install flatbuffers && \
|
|
pip3 install cython 'pkgconfig>=1.5.5' 'setuptools>=77' 'numpy<2.3.0' && \
|
|
pip3 install --no-build-isolation h5py==3.11.0 && \
|
|
pip3 install packaging && \
|
|
git clone https://github.com/microsoft/onnxruntime && \
|
|
cd onnxruntime && git checkout v1.21.0 && \
|
|
git submodule update --init --recursive && \
|
|
./build.sh --config Release --parallel 0 --enable_pybind \
|
|
--build_wheel --enable_training --enable_training_apis \
|
|
--enable_training_ops --skip_tests --allow_running_as_root \
|
|
--compile_no_warning_as_error && \
|
|
pip3 install ./build/Linux/Release/dist/onnxruntime_training-*.whl && \
|
|
cd .. && /bin/rm -rf ./onnxruntime
|