diff --git a/.ci/setup.sh b/.ci/setup.sh index c1e39b67d1a0..a1cfff5525d7 100755 --- a/.ci/setup.sh +++ b/.ci/setup.sh @@ -7,6 +7,7 @@ if [[ $OS_NAME == "macos" ]]; then sudo xcode-select -s /Applications/Xcode_10.3.app/Contents/Developer || exit -1 fi else # gcc + sudo xcode-select -s /Applications/Xcode_14.1.app/Contents/Developer || exit -1 if [[ $TASK != "mpi" ]]; then brew install gcc fi @@ -60,20 +61,33 @@ else # Linux sudo update-locale fi if [[ $TASK == "mpi" ]]; then - sudo apt-get update - sudo apt-get install --no-install-recommends -y \ - libopenmpi-dev \ - openmpi-bin + if [[ $IN_UBUNTU_LATEST_CONTAINER == "true" ]]; then + sudo apt-get update + sudo apt-get install --no-install-recommends -y \ + libopenmpi-dev \ + openmpi-bin + else # in manylinux image + sudo yum update -y + sudo yum install -y \ + openmpi-devel \ + || exit -1 + fi fi if [[ $TASK == "gpu" ]]; then - sudo add-apt-repository ppa:mhier/libboost-latest -y - sudo apt-get update - sudo apt-get install --no-install-recommends -y \ - libboost1.74-dev \ - ocl-icd-opencl-dev if [[ $IN_UBUNTU_LATEST_CONTAINER == "true" ]]; then + sudo add-apt-repository ppa:mhier/libboost-latest -y + sudo apt-get update sudo apt-get install --no-install-recommends -y \ + libboost1.74-dev \ + ocl-icd-opencl-dev \ pocl-opencl-icd + else # in manylinux image + sudo yum update -y + sudo yum install -y \ + boost-devel \ + ocl-icd-devel \ + opencl-headers \ + || exit -1 fi fi if [[ $TASK == "cuda" || $TASK == "cuda_exp" ]]; then diff --git a/.vsts-ci.yml b/.vsts-ci.yml index d80af79ce22c..8c73368a8c1a 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -18,8 +18,8 @@ variables: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true resources: containers: - - container: ubuntu1404 - image: lightgbm/vsts-agent:ubuntu-14.04 + - container: linux-artifact-builder + image: lightgbm/vsts-agent:manylinux_2_28_x86_64-dev - container: ubuntu-latest image: 'ubuntu:20.04' options: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro" @@ -35,7 +35,7 @@ jobs: OS_NAME: 'linux' PRODUCES_ARTIFACTS: 'true' pool: sh-ubuntu - container: ubuntu1404 + container: linux-artifact-builder strategy: matrix: regular: @@ -62,6 +62,7 @@ jobs: - script: | echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY" echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)" + echo "##vso[task.prependpath]/usr/lib64/openmpi/bin" echo "##vso[task.prependpath]$CONDA/bin" displayName: 'Set variables' - script: | diff --git a/docs/Installation-Guide.rst b/docs/Installation-Guide.rst index 8cb46b4e51f3..6c88773011bb 100644 --- a/docs/Installation-Guide.rst +++ b/docs/Installation-Guide.rst @@ -127,7 +127,7 @@ On Linux LightGBM can be built using **CMake** and **gcc** or **Clang**. cmake .. make -j4 -**Note**: glibc >= 2.14 is required. +**Note**: glibc >= 2.28 is required. **Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). diff --git a/helpers/check_dynamic_dependencies.py b/helpers/check_dynamic_dependencies.py index 48418315b2b2..e91e8cb43fea 100644 --- a/helpers/check_dynamic_dependencies.py +++ b/helpers/check_dynamic_dependencies.py @@ -21,7 +21,7 @@ def check_dependicies(objdump_string: str) -> None: assert len(versions) > 1 for major, minor in versions: assert int(major) <= 2 - assert int(minor) <= 14 + assert int(minor) <= 28 GLIBCXX_version = re.compile(r'0{16}[ \t]+GLIBCXX_(\d{1,2})[.](\d{1,2})[.]?(\d{,3})[ \t]+') versions = GLIBCXX_version.findall(objdump_string) @@ -29,14 +29,14 @@ def check_dependicies(objdump_string: str) -> None: for major, minor, patch in versions: assert int(major) == 3 assert int(minor) == 4 - assert patch == '' or int(patch) <= 19 + assert patch == '' or int(patch) <= 22 GOMP_version = re.compile(r'0{16}[ \t]+G?OMP_(\d{1,2})[.](\d{1,2})[.]?\d{,3}[ \t]+') versions = GOMP_version.findall(objdump_string) assert len(versions) > 1 for major, minor in versions: - assert int(major) == 1 - assert int(minor) == 0 + assert int(major) <= 4 + assert int(minor) <= 5 if __name__ == "__main__": diff --git a/python-package/README.rst b/python-package/README.rst index 420797f6913b..9b1d3c930b22 100644 --- a/python-package/README.rst +++ b/python-package/README.rst @@ -26,7 +26,7 @@ Compiled library that is included in the wheel file supports both **GPU** and ** For **Windows** users, `VC runtime `_ is needed if **Visual Studio** (2015 or newer) is not installed. -For **Linux** users, **glibc** >= 2.14 is required. Also, in some rare cases, when you hit ``OSError: libgomp.so.1: cannot open shared object file: No such file or directory`` error during importing LightGBM, you need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). +For **Linux** users, **glibc** >= 2.14 is required for LightGBM ``<=3.3.3`` and **glibc** >= 2.28 is required for newer versions. Also, in some rare cases, when you hit ``OSError: libgomp.so.1: cannot open shared object file: No such file or directory`` error during importing LightGBM, you need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). For **macOS** (we provide wheels for 3 newest macOS versions) users: @@ -45,7 +45,7 @@ Build from Sources For **Linux** and **macOS** users, installation from sources requires installed `CMake`_. -For **Linux** users, **glibc** >= 2.14 is required. Also, in some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). +For **Linux** users, **glibc** >= 2.28 is required. Also, in some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). For **macOS** users, you can perform installation either with **Apple Clang** or **gcc**.