From 7b3ea93f18dcb573c46f994bd97714fe616fb114 Mon Sep 17 00:00:00 2001 From: Nikita Titov Date: Tue, 30 Aug 2022 17:56:47 +0300 Subject: [PATCH 01/18] Trigger workflow for `dev2` branch --- .github/workflows/publish_image.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish_image.yml b/.github/workflows/publish_image.yml index be9f121..f0fe492 100644 --- a/.github/workflows/publish_image.yml +++ b/.github/workflows/publish_image.yml @@ -5,6 +5,7 @@ on: branches: - master - dev + - dev2 jobs: push_to_docker_hub: From 8e15bea1a5c3aa70edbcac04d32725c6bedb8466 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 4 Nov 2022 23:35:43 -0500 Subject: [PATCH 02/18] have GitHub Actions try building clang from source --- .github/workflows/publish_image.yml | 2 + dockers/manylinux_2_28_x86_64/.dockerignore | 1 + dockers/manylinux_2_28_x86_64/Dockerfile | 160 +++++++++++++++++++ dockers/manylinux_2_28_x86_64/start_azure.sh | 93 +++++++++++ 4 files changed, 256 insertions(+) create mode 100644 dockers/manylinux_2_28_x86_64/.dockerignore create mode 100644 dockers/manylinux_2_28_x86_64/Dockerfile create mode 100644 dockers/manylinux_2_28_x86_64/start_azure.sh diff --git a/.github/workflows/publish_image.yml b/.github/workflows/publish_image.yml index d593d1b..9baa7da 100644 --- a/.github/workflows/publish_image.yml +++ b/.github/workflows/publish_image.yml @@ -18,6 +18,8 @@ jobs: arch: linux/amd64 - docker_image: manylinux2014_aarch64 arch: linux/arm64 + - docker_image: manylinux_2_28_x86_64 + arch: linux/amd64 steps: - name: Checkout repository uses: actions/checkout@v2 diff --git a/dockers/manylinux_2_28_x86_64/.dockerignore b/dockers/manylinux_2_28_x86_64/.dockerignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/dockers/manylinux_2_28_x86_64/.dockerignore @@ -0,0 +1 @@ +* diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile new file mode 100644 index 0000000..8c97c9c --- /dev/null +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -0,0 +1,160 @@ +FROM quay.io/pypa/manylinux_2_28_x86_64 + +RUN yum update -y \ + && yum makecache --refresh + +# Install basic command-line utilities and essential build tools +# RUN add-apt-repository ppa:git-core/ppa -y \ +# && apt-get update \ +# && apt-get install -y --no-install-recommends \ +# apt-utils \ +# build-essential \ +# ca-certificates \ +# curl \ +# git \ +# iputils-ping \ +# jq \ +# libcurl3 \ +# libhwloc-dev \ +# libicu52 \ +# libssl1.0 \ +# libtinfo-dev \ +# libunwind8 \ +# locales \ +# netcat \ +# ocl-icd-dev \ +# pkg-config \ +# sudo \ +# unzip \ +# wget \ +# zip \ +# zlib1g-dev \ +# && rm -rf /var/lib/apt/lists/* + +# Setup the locale +# ENV LANG en_US.UTF-8 +# ENV LC_ALL $LANG +# RUN locale-gen $LANG \ +# && update-locale + +# Install CMake +RUN curl -sL https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh -o cmake.sh \ + && chmod +x cmake.sh \ + && ./cmake.sh --prefix=/usr/local --exclude-subdir \ + && rm -f ./cmake.sh + +# Install clang (NOTE: v11.0.0 requires GLIBC==2.29, too new for this image) +ARG CLANG_VER=10.0.0 + +# RUN yum install -y \ +# ncurses-devel # for libtinfo.so + +# pre-compiled clang+llvm is not available for AlmaLinux, so build it from source +# https://clang.llvm.org/get_started.html +RUN mkdir /usr/local/src/clang \ + && cd /usr/local/src/clang \ + && git clone --depth 1 --branch llvmorg-$CLANG_VER https://github.com/llvm/llvm-project.git \ + && cd llvm-project \ + && mkdir build \ + && cd build \ + && cmake -DLLVM_ENABLE_PROJECTS="clang;openmp" -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../llvm \ + && make + +# RUN curl -sL https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VER/clang+llvm-$CLANG_VER-x86_64-linux-gnu-ubuntu-18.04.tar.xz -o clang.tar.xz \ +# && tar -C /usr/local -xf clang.tar.xz --strip 1 \ +# && curl -sL https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VER/openmp-$CLANG_VER.src.tar.xz -o openmp.tar.xz \ +# && tar -xf openmp.tar.xz \ +# && cd openmp-$CLANG_VER.src \ +# && mkdir build \ +# && cd build \ +# && cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang .. \ +# && make \ +# && make install \ +# && echo /usr/local/lib > /etc/ld.so.conf.d/openmp.conf \ +# && ldconfig \ +# && cd ../.. \ +# && rm clang.tar.xz \ +# && rm openmp.tar.xz \ +# && rm -rf openmp-$CLANG_VER.src + +# RUN curl -sL https://releases.llvm.org/$CLANG_VER/clang%2bllvm-$CLANG_VER-x86_64-linux-gnu-ubuntu-14.04.tar.xz -o clang.tar.xz \ +# && tar -C /usr/local -xf clang.tar.xz --strip 1 \ +# && curl -sL https://releases.llvm.org/$CLANG_VER/openmp-$CLANG_VER.src.tar.xz -o openmp.tar.xz \ +# && tar -xf openmp.tar.xz \ +# && cd openmp-$CLANG_VER.src \ +# && mkdir build \ +# && cd build \ +# && cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang .. \ +# && make \ +# && make install \ +# && echo /usr/local/lib > /etc/ld.so.conf.d/openmp.conf \ +# && ldconfig \ +# && cd ../.. \ +# && rm clang.tar.xz \ +# && rm openmp.tar.xz \ +# && rm -rf openmp-$CLANG_VER.src + +# # Install PoCL +# RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ +# && cmake \ +# -B pocl/build \ +# -S pocl \ +# -DCMAKE_BUILD_TYPE=release \ +# -DCMAKE_C_COMPILER=clang \ +# -DCMAKE_CXX_COMPILER=clang++ \ +# -DCMAKE_CXX_FLAGS=-stdlib=libc++ \ +# -DPOCL_INSTALL_ICD_VENDORDIR=/etc/OpenCL/vendors \ +# -DPOCL_DEBUG_MESSAGES=OFF \ +# -DSTATIC_LLVM=ON \ +# -DINSTALL_OPENCL_HEADERS=OFF \ +# -DENABLE_SPIR=OFF \ +# -DENABLE_POCLCC=OFF \ +# -DENABLE_TESTS=OFF \ +# -DENABLE_EXAMPLES=OFF \ +# && cmake --build pocl/build -j4 \ +# && cmake --install pocl/build + +# # Install Java +# RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 \ +# && add-apt-repository "deb http://repos.azulsystems.com/ubuntu stable main" -y \ +# && apt-get update \ +# && apt-get install -y --no-install-recommends \ +# zulu-8 \ +# && rm -rf /var/lib/apt/lists/* + +# ENV JAVA_HOME_8_X64=/usr/lib/jvm/zulu-8-amd64 +# ENV JAVA_HOME=$JAVA_HOME_8_X64 + +# # Install SWIG +# RUN curl -sLk https://sourceforge.net/projects/swig/files/swig/swig-4.0.2/swig-4.0.2.tar.gz/download -o swig.tar.gz \ +# && tar -xzf swig.tar.gz \ +# && cd swig-4.0.2 \ +# && ./configure --prefix=/usr/local --without-pcre \ +# && make \ +# && make install \ +# && cd .. \ +# && rm swig.tar.gz \ +# && rm -rf swig-4.0.2 + +# # Install miniforge +# RUN curl -sL "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-$(uname -m).sh" -o miniforge.sh \ +# && chmod +x miniforge.sh \ +# && ./miniforge.sh -b -p /opt/miniforge \ +# && rm miniforge.sh \ +# && /opt/miniforge/bin/conda clean -a -y \ +# && chmod -R 777 /opt/miniforge + +# ENV CONDA=/opt/miniforge/ + +# # Clean system +# RUN apt-get clean \ +# && rm -rf /var/lib/apt/lists/* \ +# && rm -rf /etc/apt/sources.list.d/* \ +# && rm -rf /tmp/* + +# WORKDIR /vsts + +# COPY ./start_azure.sh . +# RUN chmod +x start_azure.sh + +# CMD ["./start_azure.sh"] diff --git a/dockers/manylinux_2_28_x86_64/start_azure.sh b/dockers/manylinux_2_28_x86_64/start_azure.sh new file mode 100644 index 0000000..faec4e9 --- /dev/null +++ b/dockers/manylinux_2_28_x86_64/start_azure.sh @@ -0,0 +1,93 @@ +#!/bin/bash +set -e + +export VSO_AGENT_IGNORE=_,MAIL,OLDPWD,PATH,PWD,VSTS_AGENT,VSTS_ACCOUNT,VSTS_TOKEN_FILE,VSTS_TOKEN,VSTS_POOL,VSTS_WORK,VSO_AGENT_IGNORE +if [ -n "$VSTS_AGENT_IGNORE" ]; then + export VSO_AGENT_IGNORE=$VSO_AGENT_IGNORE,VSTS_AGENT_IGNORE,$VSTS_AGENT_IGNORE +fi + +if [ -e /vsts/agent -a ! -e /vsts/.configure ]; then + trap 'kill -SIGINT $!; exit 130' INT + trap 'kill -SIGTERM $!; exit 143' TERM + /vsts/agent/bin/Agent.Listener run & wait $! + exit $? +fi + +if [ -z "$VSTS_ACCOUNT" ]; then + echo 1>&2 error: missing VSTS_ACCOUNT environment variable + exit 1 +fi + +if [ -z "$VSTS_TOKEN_FILE" ]; then + if [ -z "$VSTS_TOKEN" ]; then + echo 1>&2 error: missing VSTS_TOKEN environment variable + exit 1 + fi + VSTS_TOKEN_FILE=/vsts/.token + echo -n $VSTS_TOKEN > "$VSTS_TOKEN_FILE" +fi +unset VSTS_TOKEN + +if [ -n "$VSTS_AGENT" ]; then + export VSTS_AGENT="$(eval echo $VSTS_AGENT)" +fi + +if [ -n "$VSTS_WORK" ]; then + export VSTS_WORK="$(eval echo $VSTS_WORK)" + mkdir -p "$VSTS_WORK" +fi + +touch /vsts/.configure +rm -rf /vsts/agent +mkdir /vsts/agent +cd /vsts/agent + +web-server() { + while true; do + printf 'HTTP/1.1 302 Found\r\nLocation: https://'$VSTS_ACCOUNT'.visualstudio.com/_admin/_AgentPool\r\n\r\n' | nc -l -p 80 -q 0 > /dev/null + done +} + +cleanup() { + if [ -e config.sh ]; then + ./bin/Agent.Listener remove --unattended \ + --auth PAT \ + --token $(cat "$VSTS_TOKEN_FILE") + fi +} + +trap 'cleanup; exit 130' INT +trap 'cleanup; exit 143' TERM + +echo Determining matching VSTS agent... +VSTS_AGENT_RESPONSE=$(curl -LsS \ + -u user:$(cat "$VSTS_TOKEN_FILE") \ + -H 'Accept:application/json;api-version=3.0-preview' \ + "https://$VSTS_ACCOUNT.visualstudio.com/_apis/distributedtask/packages/agent?platform=linux-x64") + +if echo "$VSTS_AGENT_RESPONSE" | jq . >/dev/null 2>&1; then + VSTS_AGENT_URL=$(echo "$VSTS_AGENT_RESPONSE" \ + | jq -r '.value | map([.version.major,.version.minor,.version.patch,.downloadUrl]) | sort | .[length-1] | .[3]') +fi + +if [ -z "$VSTS_AGENT_URL" -o "$VSTS_AGENT_URL" == "null" ]; then + echo 1>&2 error: could not determine a matching VSTS agent - check that account \'$VSTS_ACCOUNT\' is correct and the token is valid for that account + exit 1 +fi + +echo Downloading and installing VSTS agent... +curl -LsS $VSTS_AGENT_URL | tar -xz --no-same-owner & wait $! + +source ./env.sh + +./bin/Agent.Listener configure --unattended \ + --agent "${VSTS_AGENT:-$(hostname)}" \ + --url "https://$VSTS_ACCOUNT.visualstudio.com" \ + --auth PAT \ + --token $(cat "$VSTS_TOKEN_FILE") \ + --pool "${VSTS_POOL:-Default}" \ + --work "${VSTS_WORK:-_work}" \ + --replace & wait $! + +web-server & +./bin/Agent.Listener run & wait $! From d12823c1fcfe0b4c90ecc032bd76b3d77277987f Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 4 Nov 2022 23:36:50 -0500 Subject: [PATCH 03/18] comment out unnecessary jobs --- .github/workflows/publish_image.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish_image.yml b/.github/workflows/publish_image.yml index 2a39aa9..155b47e 100644 --- a/.github/workflows/publish_image.yml +++ b/.github/workflows/publish_image.yml @@ -15,10 +15,10 @@ jobs: fail-fast: false matrix: include: - - docker_image: ubuntu-14.04 - arch: linux/amd64 - - docker_image: manylinux2014_aarch64 - arch: linux/arm64 + # - docker_image: ubuntu-14.04 + # arch: linux/amd64 + # - docker_image: manylinux2014_aarch64 + # arch: linux/arm64 - docker_image: manylinux_2_28_x86_64 arch: linux/amd64 steps: From ab2b01182c3cc39e1d535f4eba920abe58cf2ff5 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Sat, 5 Nov 2022 23:27:45 -0500 Subject: [PATCH 04/18] minimize clang build --- dockers/manylinux_2_28_x86_64/Dockerfile | 29 ++++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index 8c97c9c..19fdc0a 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -44,22 +44,41 @@ RUN curl -sL https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh -o cmake && rm -f ./cmake.sh # Install clang (NOTE: v11.0.0 requires GLIBC==2.29, too new for this image) -ARG CLANG_VER=10.0.0 +#ARG CLANG_VER=10.0.0 # RUN yum install -y \ # ncurses-devel # for libtinfo.so +# building clang # pre-compiled clang+llvm is not available for AlmaLinux, so build it from source # https://clang.llvm.org/get_started.html +# https://llvm.org/docs/GettingStarted.html#compiling-the-llvm-suite-source-code +ARG CLANG_VER=14.0.6 RUN mkdir /usr/local/src/clang \ && cd /usr/local/src/clang \ && git clone --depth 1 --branch llvmorg-$CLANG_VER https://github.com/llvm/llvm-project.git \ && cd llvm-project \ && mkdir build \ && cd build \ - && cmake -DLLVM_ENABLE_PROJECTS="clang;openmp" -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../llvm \ - && make - + && cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_BUILD_BENCHMARKS=OFF \ + -DLLVM_BUILD_DOCS=OFF \ + -DLLVM_BUILD_TESTS=OFF \ + -DLLVM_INCLUDE_BENCHMARKS=OFF \ + -DLLVM_INCLUDE_DOCS=OFF \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DLLVM_ENABLE_BINDINGS=OFF \ + -DLLVM_ENABLE_DOXYGEN=OFF \ + -DLLVM_ENABLE_OCAMLDOC=OFF \ + -DLLVM_ENABLE_PROJECTS="clang;openmp" \ + -DLLVM_ENABLE_SPHINX=OFF \ + -DLLVM_TARGETS_TO_BUILD="X86" \ + -G "Unix Makefiles" \ + ../llvm \ + && make -j2 + +# ARG CLANG_VER=14.0.0 # RUN curl -sL https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VER/clang+llvm-$CLANG_VER-x86_64-linux-gnu-ubuntu-18.04.tar.xz -o clang.tar.xz \ # && tar -C /usr/local -xf clang.tar.xz --strip 1 \ # && curl -sL https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VER/openmp-$CLANG_VER.src.tar.xz -o openmp.tar.xz \ @@ -67,7 +86,7 @@ RUN mkdir /usr/local/src/clang \ # && cd openmp-$CLANG_VER.src \ # && mkdir build \ # && cd build \ -# && cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang .. \ +# && cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DGCC_INSTALL_PREFIX=/opt/rh/gcc-toolset-11/root/usr/bin .. \ # && make \ # && make install \ # && echo /usr/local/lib > /etc/ld.so.conf.d/openmp.conf \ From c5ad9e8fa9fd6ddd6fe4b8664931600c7d40ce60 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Sun, 6 Nov 2022 20:28:52 -0600 Subject: [PATCH 05/18] actually install after building --- dockers/manylinux_2_28_x86_64/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index 19fdc0a..0666c77 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -76,7 +76,8 @@ RUN mkdir /usr/local/src/clang \ -DLLVM_TARGETS_TO_BUILD="X86" \ -G "Unix Makefiles" \ ../llvm \ - && make -j2 + && make -j2 \ + && make install # ARG CLANG_VER=14.0.0 # RUN curl -sL https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VER/clang+llvm-$CLANG_VER-x86_64-linux-gnu-ubuntu-18.04.tar.xz -o clang.tar.xz \ From 5b083a2f1effbc247fcd2ef2a3239244dd449baf Mon Sep 17 00:00:00 2001 From: James Lamb Date: Sun, 6 Nov 2022 21:03:39 -0600 Subject: [PATCH 06/18] add gcc RPATH to clang --- dockers/manylinux_2_28_x86_64/Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index 0666c77..fbe4584 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -49,6 +49,8 @@ RUN curl -sL https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh -o cmake # RUN yum install -y \ # ncurses-devel # for libtinfo.so +# /opt/rh/gcc-toolset-11/root/usr + # building clang # pre-compiled clang+llvm is not available for AlmaLinux, so build it from source # https://clang.llvm.org/get_started.html @@ -62,6 +64,7 @@ RUN mkdir /usr/local/src/clang \ && cd build \ && cmake \ -DCMAKE_BUILD_TYPE=Release \ + -DGCC_INSTALL_PREFIX=${DEVTOOLSET_ROOTPATH} \ -DLLVM_BUILD_BENCHMARKS=OFF \ -DLLVM_BUILD_DOCS=OFF \ -DLLVM_BUILD_TESTS=OFF \ From 533773524a996cddb2799cbaf3e569617fc6821a Mon Sep 17 00:00:00 2001 From: James Lamb Date: Sun, 6 Nov 2022 23:37:52 -0600 Subject: [PATCH 07/18] use clang11, build libc++ --- dockers/manylinux_2_28_x86_64/Dockerfile | 62 +++++++----------------- 1 file changed, 18 insertions(+), 44 deletions(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index fbe4584..cf41873 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -3,59 +3,32 @@ FROM quay.io/pypa/manylinux_2_28_x86_64 RUN yum update -y \ && yum makecache --refresh -# Install basic command-line utilities and essential build tools -# RUN add-apt-repository ppa:git-core/ppa -y \ -# && apt-get update \ -# && apt-get install -y --no-install-recommends \ -# apt-utils \ -# build-essential \ -# ca-certificates \ -# curl \ -# git \ -# iputils-ping \ -# jq \ -# libcurl3 \ -# libhwloc-dev \ -# libicu52 \ -# libssl1.0 \ -# libtinfo-dev \ -# libunwind8 \ -# locales \ -# netcat \ -# ocl-icd-dev \ -# pkg-config \ -# sudo \ -# unzip \ -# wget \ -# zip \ -# zlib1g-dev \ -# && rm -rf /var/lib/apt/lists/* - -# Setup the locale -# ENV LANG en_US.UTF-8 -# ENV LC_ALL $LANG -# RUN locale-gen $LANG \ -# && update-locale - # Install CMake RUN curl -sL https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh -o cmake.sh \ && chmod +x cmake.sh \ && ./cmake.sh --prefix=/usr/local --exclude-subdir \ && rm -f ./cmake.sh -# Install clang (NOTE: v11.0.0 requires GLIBC==2.29, too new for this image) -#ARG CLANG_VER=10.0.0 - -# RUN yum install -y \ -# ncurses-devel # for libtinfo.so - -# /opt/rh/gcc-toolset-11/root/usr - # building clang -# pre-compiled clang+llvm is not available for AlmaLinux, so build it from source +# +# [why v11.1.0] +# +# - LightGBM is incompatible with libomp v12 and v13 (https://github.com/microsoft/LightGBM/issues/4229) +# - PoCL v1.8 requires LLVM+clang, but only supports v6-v13 (https://github.com/pocl/pocl/blob/3f420ef735672e439097d020db605778dbc4a6a1/cmake/LLVM.cmake#L209) +# - so v11.x is the latest version that will work with the these constraints, and v11.1.0 was the last release in the v11 series +# +# [why from source?] +# +# - manylinux images use a custom sysroot foor the gcc toolchain, which doesn't play well with the precompiled llvm+clang available from https://github.com/llvm/llvm-project/releases +# - there is not a precompiled llvm+clang available for x86_64 architecture + non-Ubuntu distributions +# +# [why are we building libcxx?] +# +# - PoCL v1.8 compilation uses libc++ instead of libstdc++ +# # https://clang.llvm.org/get_started.html # https://llvm.org/docs/GettingStarted.html#compiling-the-llvm-suite-source-code -ARG CLANG_VER=14.0.6 +ARG CLANG_VER=11.1.0 RUN mkdir /usr/local/src/clang \ && cd /usr/local/src/clang \ && git clone --depth 1 --branch llvmorg-$CLANG_VER https://github.com/llvm/llvm-project.git \ @@ -75,6 +48,7 @@ RUN mkdir /usr/local/src/clang \ -DLLVM_ENABLE_DOXYGEN=OFF \ -DLLVM_ENABLE_OCAMLDOC=OFF \ -DLLVM_ENABLE_PROJECTS="clang;openmp" \ + -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ -DLLVM_ENABLE_SPHINX=OFF \ -DLLVM_TARGETS_TO_BUILD="X86" \ -G "Unix Makefiles" \ From e0a7a071bc4ae5b8d59a1d553b869f8bd788cfb0 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 7 Nov 2022 12:25:11 -0600 Subject: [PATCH 08/18] add PoCL and Java --- dockers/manylinux_2_28_x86_64/Dockerfile | 97 ++++++++---------------- 1 file changed, 32 insertions(+), 65 deletions(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index cf41873..e130c92 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -1,5 +1,8 @@ FROM quay.io/pypa/manylinux_2_28_x86_64 +# ensure that libraries like libc++ built in this image can be found by the linker +ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" + RUN yum update -y \ && yum makecache --refresh @@ -22,9 +25,10 @@ RUN curl -sL https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh -o cmake # - manylinux images use a custom sysroot foor the gcc toolchain, which doesn't play well with the precompiled llvm+clang available from https://github.com/llvm/llvm-project/releases # - there is not a precompiled llvm+clang available for x86_64 architecture + non-Ubuntu distributions # -# [why are we building libcxx?] +# [why are we building libcxx and lld?] # -# - PoCL v1.8 compilation uses libc++ instead of libstdc++ +# - PoCL v1.8 compilation uses libc++ instead of libstdc++, and requires lld for linking +# - # # https://clang.llvm.org/get_started.html # https://llvm.org/docs/GettingStarted.html#compiling-the-llvm-suite-source-code @@ -54,73 +58,36 @@ RUN mkdir /usr/local/src/clang \ -G "Unix Makefiles" \ ../llvm \ && make -j2 \ - && make install - -# ARG CLANG_VER=14.0.0 -# RUN curl -sL https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VER/clang+llvm-$CLANG_VER-x86_64-linux-gnu-ubuntu-18.04.tar.xz -o clang.tar.xz \ -# && tar -C /usr/local -xf clang.tar.xz --strip 1 \ -# && curl -sL https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VER/openmp-$CLANG_VER.src.tar.xz -o openmp.tar.xz \ -# && tar -xf openmp.tar.xz \ -# && cd openmp-$CLANG_VER.src \ -# && mkdir build \ -# && cd build \ -# && cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DGCC_INSTALL_PREFIX=/opt/rh/gcc-toolset-11/root/usr/bin .. \ -# && make \ -# && make install \ -# && echo /usr/local/lib > /etc/ld.so.conf.d/openmp.conf \ -# && ldconfig \ -# && cd ../.. \ -# && rm clang.tar.xz \ -# && rm openmp.tar.xz \ -# && rm -rf openmp-$CLANG_VER.src + && make install \ + # 'make install' doesn't install these libraries to a standard location + && cp /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ \ -# RUN curl -sL https://releases.llvm.org/$CLANG_VER/clang%2bllvm-$CLANG_VER-x86_64-linux-gnu-ubuntu-14.04.tar.xz -o clang.tar.xz \ -# && tar -C /usr/local -xf clang.tar.xz --strip 1 \ -# && curl -sL https://releases.llvm.org/$CLANG_VER/openmp-$CLANG_VER.src.tar.xz -o openmp.tar.xz \ -# && tar -xf openmp.tar.xz \ -# && cd openmp-$CLANG_VER.src \ -# && mkdir build \ -# && cd build \ -# && cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang .. \ -# && make \ -# && make install \ -# && echo /usr/local/lib > /etc/ld.so.conf.d/openmp.conf \ -# && ldconfig \ -# && cd ../.. \ -# && rm clang.tar.xz \ -# && rm openmp.tar.xz \ -# && rm -rf openmp-$CLANG_VER.src - -# # Install PoCL -# RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ -# && cmake \ -# -B pocl/build \ -# -S pocl \ -# -DCMAKE_BUILD_TYPE=release \ -# -DCMAKE_C_COMPILER=clang \ -# -DCMAKE_CXX_COMPILER=clang++ \ -# -DCMAKE_CXX_FLAGS=-stdlib=libc++ \ -# -DPOCL_INSTALL_ICD_VENDORDIR=/etc/OpenCL/vendors \ -# -DPOCL_DEBUG_MESSAGES=OFF \ -# -DSTATIC_LLVM=ON \ -# -DINSTALL_OPENCL_HEADERS=OFF \ -# -DENABLE_SPIR=OFF \ -# -DENABLE_POCLCC=OFF \ -# -DENABLE_TESTS=OFF \ -# -DENABLE_EXAMPLES=OFF \ -# && cmake --build pocl/build -j4 \ -# && cmake --install pocl/build +# Install PoCL +RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ + && cmake \ + -B pocl/build \ + -S pocl \ + -DCMAKE_BUILD_TYPE=release \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_CXX_FLAGS=-stdlib=libstdc++ \ + -DPOCL_INSTALL_ICD_VENDORDIR=/etc/OpenCL/vendors \ + -DPOCL_DEBUG_MESSAGES=OFF \ + -DSTATIC_LLVM=ON \ + -DINSTALL_OPENCL_HEADERS=OFF \ + -DENABLE_SPIR=OFF \ + -DENABLE_POCLCC=OFF \ + -DENABLE_TESTS=OFF \ + -DENABLE_EXAMPLES=OFF \ + && cmake --build pocl/build -j4 \ + && cmake --install pocl/build # # Install Java -# RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 \ -# && add-apt-repository "deb http://repos.azulsystems.com/ubuntu stable main" -y \ -# && apt-get update \ -# && apt-get install -y --no-install-recommends \ -# zulu-8 \ -# && rm -rf /var/lib/apt/lists/* +RUN yum install -y \ + java-1.8.0-openjdk.x86_64 -# ENV JAVA_HOME_8_X64=/usr/lib/jvm/zulu-8-amd64 -# ENV JAVA_HOME=$JAVA_HOME_8_X64 +ENV JAVA_HOME_8_X64=/usr/lib/jvm/jre-1.8.0-openjdk/lib/ +ENV JAVA_HOME=$JAVA_HOME_8_X64 # # Install SWIG # RUN curl -sLk https://sourceforge.net/projects/swig/files/swig/swig-4.0.2/swig-4.0.2.tar.gz/download -o swig.tar.gz \ From b388859d58b7d70d12f82686d5692a0998cc03da Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 7 Nov 2022 15:09:15 -0600 Subject: [PATCH 09/18] fix trailing slash --- dockers/manylinux_2_28_x86_64/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index e130c92..c40b4ec 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -60,7 +60,7 @@ RUN mkdir /usr/local/src/clang \ && make -j2 \ && make install \ # 'make install' doesn't install these libraries to a standard location - && cp /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ \ + && cp /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ # Install PoCL RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ From dabd70e966acdab3d6cbce568d9292f6088944a8 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 7 Nov 2022 21:39:50 -0600 Subject: [PATCH 10/18] add remaining components and clean up --- dockers/manylinux_2_28_x86_64/.dockerignore | 1 + dockers/manylinux_2_28_x86_64/Dockerfile | 71 ++++++++++----------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/dockers/manylinux_2_28_x86_64/.dockerignore b/dockers/manylinux_2_28_x86_64/.dockerignore index 72e8ffc..930a274 100644 --- a/dockers/manylinux_2_28_x86_64/.dockerignore +++ b/dockers/manylinux_2_28_x86_64/.dockerignore @@ -1 +1,2 @@ * +!start_azure.sh diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index c40b4ec..d1b7462 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -4,7 +4,7 @@ FROM quay.io/pypa/manylinux_2_28_x86_64 ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" RUN yum update -y \ - && yum makecache --refresh + && yum clean all # Install CMake RUN curl -sL https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh -o cmake.sh \ @@ -14,7 +14,7 @@ RUN curl -sL https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh -o cmake # building clang # -# [why v11.1.0] +# [why v11.1.0?] # # - LightGBM is incompatible with libomp v12 and v13 (https://github.com/microsoft/LightGBM/issues/4229) # - PoCL v1.8 requires LLVM+clang, but only supports v6-v13 (https://github.com/pocl/pocl/blob/3f420ef735672e439097d020db605778dbc4a6a1/cmake/LLVM.cmake#L209) @@ -27,8 +27,7 @@ RUN curl -sL https://cmake.org/files/v3.23/cmake-3.23.1-linux-x86_64.sh -o cmake # # [why are we building libcxx and lld?] # -# - PoCL v1.8 compilation uses libc++ instead of libstdc++, and requires lld for linking -# - +# - in case compilation with clang (e.g. of PoCL v1.8) uses libc++ instead of libstdc++ # # https://clang.llvm.org/get_started.html # https://llvm.org/docs/GettingStarted.html#compiling-the-llvm-suite-source-code @@ -60,7 +59,9 @@ RUN mkdir /usr/local/src/clang \ && make -j2 \ && make install \ # 'make install' doesn't install these libraries to a standard location - && cp /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ + && cp /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ \ + && cd "${HOME}" \ + && rm -rf /usr/local/src/clang # Install PoCL RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ @@ -80,45 +81,43 @@ RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ -DENABLE_TESTS=OFF \ -DENABLE_EXAMPLES=OFF \ && cmake --build pocl/build -j4 \ - && cmake --install pocl/build + && cmake --install pocl/build \ + && rm -f ./compile_test*.bc \ + && rm -f ./compile_test*.o \ + && rm -rf ./pocl -# # Install Java +# Install Java RUN yum install -y \ - java-1.8.0-openjdk.x86_64 + java-1.8.0-openjdk.x86_64 \ + && yum clean all ENV JAVA_HOME_8_X64=/usr/lib/jvm/jre-1.8.0-openjdk/lib/ ENV JAVA_HOME=$JAVA_HOME_8_X64 -# # Install SWIG -# RUN curl -sLk https://sourceforge.net/projects/swig/files/swig/swig-4.0.2/swig-4.0.2.tar.gz/download -o swig.tar.gz \ -# && tar -xzf swig.tar.gz \ -# && cd swig-4.0.2 \ -# && ./configure --prefix=/usr/local --without-pcre \ -# && make \ -# && make install \ -# && cd .. \ -# && rm swig.tar.gz \ -# && rm -rf swig-4.0.2 - -# # Install miniforge -# RUN curl -sL "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-$(uname -m).sh" -o miniforge.sh \ -# && chmod +x miniforge.sh \ -# && ./miniforge.sh -b -p /opt/miniforge \ -# && rm miniforge.sh \ -# && /opt/miniforge/bin/conda clean -a -y \ -# && chmod -R 777 /opt/miniforge +# Install SWIG +RUN curl -sLk https://sourceforge.net/projects/swig/files/swig/swig-4.0.2/swig-4.0.2.tar.gz/download -o swig.tar.gz \ + && tar -xzf swig.tar.gz \ + && cd swig-4.0.2 \ + && ./configure --prefix=/usr/local --without-pcre \ + && make \ + && make install \ + && cd .. \ + && rm -f ./swig.tar.gz \ + && rm -rf ./swig-4.0.2 -# ENV CONDA=/opt/miniforge/ +# Install miniforge +RUN curl -sL "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-$(uname -m).sh" -o miniforge.sh \ + && chmod +x miniforge.sh \ + && ./miniforge.sh -b -p /opt/miniforge \ + && rm -f ./miniforge.sh \ + && /opt/miniforge/bin/conda clean -a -y \ + && chmod -R 777 /opt/miniforge -# # Clean system -# RUN apt-get clean \ -# && rm -rf /var/lib/apt/lists/* \ -# && rm -rf /etc/apt/sources.list.d/* \ -# && rm -rf /tmp/* +ENV CONDA=/opt/miniforge/ -# WORKDIR /vsts +WORKDIR /vsts -# COPY ./start_azure.sh . -# RUN chmod +x start_azure.sh +COPY ./start_azure.sh . +RUN chmod +x start_azure.sh -# CMD ["./start_azure.sh"] +CMD ["./start_azure.sh"] From c3554d167f8661df3170f33ae21daa35220b6774 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 9 Nov 2022 21:00:42 -0600 Subject: [PATCH 11/18] fix JAVA_HOME --- dockers/manylinux_2_28_x86_64/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index d1b7462..12b5e22 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -91,7 +91,7 @@ RUN yum install -y \ java-1.8.0-openjdk.x86_64 \ && yum clean all -ENV JAVA_HOME_8_X64=/usr/lib/jvm/jre-1.8.0-openjdk/lib/ +ENV JAVA_HOME_8_X64=/usr/lib/jvm/jre-1.8.0-openjdk ENV JAVA_HOME=$JAVA_HOME_8_X64 # Install SWIG From fd653d96b911bbed61275b59e92972a624dcec3d Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 9 Nov 2022 21:22:41 -0600 Subject: [PATCH 12/18] java-devel --- dockers/manylinux_2_28_x86_64/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index 12b5e22..1f3be36 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -88,7 +88,7 @@ RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ # Install Java RUN yum install -y \ - java-1.8.0-openjdk.x86_64 \ + java-1.8.0-openjdk-devel.x86_64 \ && yum clean all ENV JAVA_HOME_8_X64=/usr/lib/jvm/jre-1.8.0-openjdk From 8b31b8b07423cd6ae41e9fbf37d272a3b5d0b5bc Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 9 Nov 2022 23:29:30 -0600 Subject: [PATCH 13/18] install sudo --- dockers/manylinux_2_28_x86_64/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index 1f3be36..f474554 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -4,6 +4,8 @@ FROM quay.io/pypa/manylinux_2_28_x86_64 ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" RUN yum update -y \ + && yum install -y \ + sudo \ && yum clean all # Install CMake From aaf9fd229e20a388f4a9f1793d57cd5ecb666c15 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Sun, 13 Nov 2022 20:33:02 -0600 Subject: [PATCH 14/18] set JAVA_HOME to a location with jni.h --- dockers/manylinux_2_28_x86_64/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index f474554..10fff8a 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -93,7 +93,7 @@ RUN yum install -y \ java-1.8.0-openjdk-devel.x86_64 \ && yum clean all -ENV JAVA_HOME_8_X64=/usr/lib/jvm/jre-1.8.0-openjdk +ENV JAVA_HOME_8_X64=/usr/lib/jvm/java ENV JAVA_HOME=$JAVA_HOME_8_X64 # Install SWIG From b1c602be7f271f5ceb96d5eb79664ffcaa973d73 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Sun, 13 Nov 2022 22:22:10 -0600 Subject: [PATCH 15/18] save clang to figure out what is happening --- dockers/manylinux_2_28_x86_64/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index 10fff8a..9646fe0 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -61,9 +61,10 @@ RUN mkdir /usr/local/src/clang \ && make -j2 \ && make install \ # 'make install' doesn't install these libraries to a standard location - && cp /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ \ - && cd "${HOME}" \ - && rm -rf /usr/local/src/clang + && ls /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++ > /usr/local/src/cpp-dir-ls.txt \ + && cp /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ + # && cd "${HOME}" + # && rm -rf /usr/local/src/clang # Install PoCL RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ From ebe16d538b5ea16977bd8fce59a37999b80b84f7 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 14 Nov 2022 15:00:04 -0600 Subject: [PATCH 16/18] switch to symlinks for libc++ --- dockers/manylinux_2_28_x86_64/Dockerfile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index 9646fe0..df0845d 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -60,11 +60,15 @@ RUN mkdir /usr/local/src/clang \ ../llvm \ && make -j2 \ && make install \ - # 'make install' doesn't install these libraries to a standard location - && ls /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++ > /usr/local/src/cpp-dir-ls.txt \ - && cp /usr/local/src/clang/llvm-project/build/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ - # && cd "${HOME}" - # && rm -rf /usr/local/src/clang + # `make install` places libc++ into a different directory, + # symlinking it into /usr/local/lib so the linker can find it + && cp -s /usr/local/lib/x86_64-unknown-linux-gnu/c++/* /usr/local/lib/ \ + # manylinux images already come with an ldconfig rule pointing at /usr/local/lib, + # but just doing this explicitly to be safe in case they remove that in the future + && echo /usr/local/lib > /etc/ld.so.conf.d/llvm.conf \ + && ldconfig \ + && cd "${HOME}" \ + && rm -rf /usr/local/src/clang # Install PoCL RUN git clone --depth 1 --branch v1.8 https://github.com/pocl/pocl.git \ From 7965b4c4932826ef37c88f9c9115b8c4ee8a7310 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 18 Nov 2022 23:23:40 -0600 Subject: [PATCH 17/18] uncomment --- .github/workflows/publish_image.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish_image.yml b/.github/workflows/publish_image.yml index 155b47e..2a39aa9 100644 --- a/.github/workflows/publish_image.yml +++ b/.github/workflows/publish_image.yml @@ -15,10 +15,10 @@ jobs: fail-fast: false matrix: include: - # - docker_image: ubuntu-14.04 - # arch: linux/amd64 - # - docker_image: manylinux2014_aarch64 - # arch: linux/arm64 + - docker_image: ubuntu-14.04 + arch: linux/amd64 + - docker_image: manylinux2014_aarch64 + arch: linux/arm64 - docker_image: manylinux_2_28_x86_64 arch: linux/amd64 steps: From 1c2df3221f1e42a676e252be0c31f29e4a7c0d6e Mon Sep 17 00:00:00 2001 From: James Lamb Date: Sat, 19 Nov 2022 19:50:45 -0600 Subject: [PATCH 18/18] add /usr/local/lib64 to LD_LIBRARY_PATH --- dockers/manylinux_2_28_x86_64/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/manylinux_2_28_x86_64/Dockerfile b/dockers/manylinux_2_28_x86_64/Dockerfile index df0845d..b004b72 100644 --- a/dockers/manylinux_2_28_x86_64/Dockerfile +++ b/dockers/manylinux_2_28_x86_64/Dockerfile @@ -1,7 +1,7 @@ FROM quay.io/pypa/manylinux_2_28_x86_64 # ensure that libraries like libc++ built in this image can be found by the linker -ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" +ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib:/usr/local/lib64" RUN yum update -y \ && yum install -y \