From 58bf894fc9baebdf9e5db60297004cfaa8bcf286 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 21 Nov 2022 08:24:59 -0600 Subject: [PATCH 01/17] prefer 'vsnprintf' to 'vsprintf' (#5561) --- include/LightGBM/utils/log.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/LightGBM/utils/log.h b/include/LightGBM/utils/log.h index 6eb02fbf3a77..7cab31c15b09 100644 --- a/include/LightGBM/utils/log.h +++ b/include/LightGBM/utils/log.h @@ -109,12 +109,13 @@ class Log { } static void Fatal(const char *format, ...) { va_list val; - char str_buf[1024]; + const size_t kBufSize = 1024; + char str_buf[kBufSize]; va_start(val, format); #ifdef _MSC_VER - vsprintf_s(str_buf, format, val); + vsnprintf_s(str_buf, kBufSize, format, val); #else - vsprintf(str_buf, format, val); + vsnprintf(str_buf, kBufSize, format, val); #endif va_end(val); From 3f407e6e6eb12791ac14f3a03e5f7d24644e34f0 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 5 Dec 2022 19:47:36 -0600 Subject: [PATCH 02/17] update VERSION.txt to 3.3.4 --- .appveyor.yml | 2 +- VERSION.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index e51feb918675..2876aac4dfbe 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,4 +1,4 @@ -version: 3.3.3.{build} +version: 3.3.4.{build} image: Visual Studio 2015 platform: x64 diff --git a/VERSION.txt b/VERSION.txt index 619b53766848..a0891f563f38 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -3.3.3 +3.3.4 From b2e51b0afd7d2c5b46614ac87db9ad85727f391b Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 6 Dec 2022 01:52:26 +0000 Subject: [PATCH 03/17] Auto-update configure --- R-package/configure | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/R-package/configure b/R-package/configure index 2b4951755c2f..01bad5e9cd87 100755 --- a/R-package/configure +++ b/R-package/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for lightgbm 3.3.3. +# Generated by GNU Autoconf 2.69 for lightgbm 3.3.4. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -576,8 +576,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='lightgbm' PACKAGE_TARNAME='lightgbm' -PACKAGE_VERSION='3.3.3' -PACKAGE_STRING='lightgbm 3.3.3' +PACKAGE_VERSION='3.3.4' +PACKAGE_STRING='lightgbm 3.3.4' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1182,7 +1182,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures lightgbm 3.3.3 to adapt to many kinds of systems. +\`configure' configures lightgbm 3.3.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1244,7 +1244,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of lightgbm 3.3.3:";; + short | recursive ) echo "Configuration of lightgbm 3.3.4:";; esac cat <<\_ACEOF @@ -1311,7 +1311,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -lightgbm configure 3.3.3 +lightgbm configure 3.3.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1328,7 +1328,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by lightgbm $as_me 3.3.3, which was +It was created by lightgbm $as_me 3.3.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2419,7 +2419,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by lightgbm $as_me 3.3.3, which was +This file was extended by lightgbm $as_me 3.3.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2472,7 +2472,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -lightgbm config.status 3.3.3 +lightgbm config.status 3.3.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" From f71f8fd85e5016d188a07229dcbe18e0ec90417a Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 5 Dec 2022 20:13:28 -0600 Subject: [PATCH 04/17] use xcode 14.1 on macOS-latest --- .ci/setup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/setup.sh b/.ci/setup.sh index c1e39b67d1a0..3f095e0ffbb9 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 From 49a6f897294d8bf9316f9746c0f5e258a6d0e4bd Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 5 Dec 2022 20:56:14 -0600 Subject: [PATCH 05/17] remove dask pin and use R 4.2.2 in CI --- .ci/test.sh | 13 ++++--------- .ci/test_r_package.sh | 4 ++-- .ci/test_r_package_windows.ps1 | 2 +- tests/python_package_test/test_dask.py | 1 + 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/.ci/test.sh b/.ci/test.sh index 6439f4c660fd..a69890fe3178 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -118,17 +118,11 @@ if [[ $TASK == "swig" ]]; then exit 0 fi -# temporary fix for https://github.com/microsoft/LightGBM/issues/5390 -if [[ $PYTHON_VERSION == "3.7" ]]; then - DEPENDENCIES="dask distributed" -else - DEPENDENCIES="dask=2022.7.0 distributed=2022.7.0 scipy<1.9" -fi - # re-including python=version[build=*cpython] to ensure that conda doesn't fall back to pypy conda install -q -y -n $CONDA_ENV \ cloudpickle \ - ${DEPENDENCIES} \ + dask-core \ + distributed \ joblib \ matplotlib \ numpy \ @@ -137,7 +131,8 @@ conda install -q -y -n $CONDA_ENV \ pytest \ "python=$PYTHON_VERSION[build=*cpython]" \ python-graphviz \ - scikit-learn || exit -1 + scikit-learn \ + scipy || exit -1 if [[ $OS_NAME == "macos" ]] && [[ $COMPILER == "clang" ]]; then # fix "OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized." (OpenMP library conflict due to conda's MKL) diff --git a/.ci/test_r_package.sh b/.ci/test_r_package.sh index c15b5c59df7b..42269e7dfb18 100755 --- a/.ci/test_r_package.sh +++ b/.ci/test_r_package.sh @@ -21,9 +21,9 @@ if [[ "${R_MAJOR_VERSION}" == "3" ]]; then export R_LINUX_VERSION="3.6.3-1bionic" export R_APT_REPO="bionic-cran35/" elif [[ "${R_MAJOR_VERSION}" == "4" ]]; then - export R_MAC_VERSION=4.2.1 + export R_MAC_VERSION=4.2.2 export R_MAC_PKG_URL=${CRAN_MIRROR}/bin/macosx/base/R-${R_MAC_VERSION}.pkg - export R_LINUX_VERSION="4.2.1-1.2004.0" + export R_LINUX_VERSION="4.2.2-1.2004.0" export R_APT_REPO="focal-cran40/" else echo "Unrecognized R version: ${R_VERSION}" diff --git a/.ci/test_r_package_windows.ps1 b/.ci/test_r_package_windows.ps1 index 2005ad5adeeb..e4d20de50b90 100644 --- a/.ci/test_r_package_windows.ps1 +++ b/.ci/test_r_package_windows.ps1 @@ -80,7 +80,7 @@ if ($env:R_MAJOR_VERSION -eq "3") { $env:RTOOLS_BIN = "$RTOOLS_INSTALL_PATH\usr\bin" $env:RTOOLS_MINGW_BIN = "$RTOOLS_INSTALL_PATH\x86_64-w64-mingw32.static.posix\bin" $env:RTOOLS_EXE_FILE = "rtools42-5253-5107.exe" - $env:R_WINDOWS_VERSION = "4.2.1" + $env:R_WINDOWS_VERSION = "4.2.2" } else { Write-Output "[ERROR] Unrecognized R version: $env:R_VERSION" Check-Output $false diff --git a/tests/python_package_test/test_dask.py b/tests/python_package_test/test_dask.py index afcbc11a77a6..8e8acd61b5de 100644 --- a/tests/python_package_test/test_dask.py +++ b/tests/python_package_test/test_dask.py @@ -1436,6 +1436,7 @@ def test_network_params_not_required_but_respected_if_given(task, listen_port, c @pytest.mark.parametrize('task', tasks) def test_machines_should_be_used_if_provided(task, cluster): + pytest.skip("skipping due to timeout issues discussed in https://github.com/microsoft/LightGBM/issues/5390") with Client(cluster) as client: _, _, _, _, dX, dy, _, dg = _create_data( objective=task, From c587223e38caf358fd1abe6e0d8916ff4b79c141 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 5 Dec 2022 22:30:05 -0600 Subject: [PATCH 06/17] fix R 4.2.2 builds --- .ci/test_r_package.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.ci/test_r_package.sh b/.ci/test_r_package.sh index 42269e7dfb18..0db88453ab7c 100755 --- a/.ci/test_r_package.sh +++ b/.ci/test_r_package.sh @@ -76,7 +76,7 @@ if [[ $OS_NAME == "macos" ]]; then brew install --cask basictex || exit -1 export PATH="/Library/TeX/texbin:$PATH" sudo tlmgr --verify-repo=none update --self || exit -1 - sudo tlmgr --verify-repo=none install inconsolata helvetic || exit -1 + sudo tlmgr --verify-repo=none install inconsolata helvetic rsfs || exit -1 curl -sL ${R_MAC_PKG_URL} -o R.pkg || exit -1 sudo installer \ @@ -163,10 +163,11 @@ elif [[ $R_BUILD_TYPE == "cran" ]]; then || (cat ${RCHK_LOG_FILE} && exit -1) cat ${RCHK_LOG_FILE} - # the exception below is from R itself and not LightGBM: + # the exceptions below are from R itself and not LightGBM: # https://github.com/kalibera/rchk/issues/22#issuecomment-656036156 exit $( cat ${RCHK_LOG_FILE} \ + | grep -v "in function RunGenCollect" \ | grep -v "in function strptime_internal" \ | grep --count -E '\[PB\]|ERROR' ) From 17cecd157588dbc45ca7487f874c6f702ff97539 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Mon, 5 Dec 2022 22:56:55 -0600 Subject: [PATCH 07/17] empty commit From caecafdefd600343e6e47ce2db15c4ecd87dd94d Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 7 Dec 2022 21:32:54 -0600 Subject: [PATCH 08/17] try pinning dependencies --- .ci/test.sh | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.ci/test.sh b/.ci/test.sh index a69890fe3178..9dc1339ae73b 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -118,6 +118,13 @@ if [[ $TASK == "swig" ]]; then exit 0 fi +# hack around https://github.com/microsoft/LightGBM/pull/5619#issuecomment-1341935203 just to produce +# a releasable artifact on Ubuntu 14.04 +PACKAGE_CONSTRAINTS="pandas numpy scikit-learn scipy" +if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]] && [[ $TASK == "sdist" ]]; then + PACKAGE_CONSTRAINTS="libstdcxx-ng<12.0 numpy<=1.2.0 pandas scikit-learn<=1.1.0 scipy<=1.8.0" +fi + # re-including python=version[build=*cpython] to ensure that conda doesn't fall back to pypy conda install -q -y -n $CONDA_ENV \ cloudpickle \ @@ -125,14 +132,11 @@ conda install -q -y -n $CONDA_ENV \ distributed \ joblib \ matplotlib \ - numpy \ - pandas \ psutil \ pytest \ + ${PACKAGE_CONSTRAINTS} \ "python=$PYTHON_VERSION[build=*cpython]" \ - python-graphviz \ - scikit-learn \ - scipy || exit -1 + python-graphviz || exit -1 if [[ $OS_NAME == "macos" ]] && [[ $COMPILER == "clang" ]]; then # fix "OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized." (OpenMP library conflict due to conda's MKL) From cb9962a5d752917a3c541a07f4c1c6840c78cbb5 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 8 Dec 2022 22:09:44 -0600 Subject: [PATCH 09/17] ceiling on dask too --- .ci/test.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.ci/test.sh b/.ci/test.sh index 9dc1339ae73b..7842191bd2d4 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -120,16 +120,14 @@ fi # hack around https://github.com/microsoft/LightGBM/pull/5619#issuecomment-1341935203 just to produce # a releasable artifact on Ubuntu 14.04 -PACKAGE_CONSTRAINTS="pandas numpy scikit-learn scipy" +PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scikit-learn scipy" if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]] && [[ $TASK == "sdist" ]]; then - PACKAGE_CONSTRAINTS="libstdcxx-ng<12.0 numpy<=1.2.0 pandas scikit-learn<=1.1.0 scipy<=1.8.0" + PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.2.0 pandas scikit-learn<=1.1.0 scipy<=1.8.0" fi # re-including python=version[build=*cpython] to ensure that conda doesn't fall back to pypy conda install -q -y -n $CONDA_ENV \ cloudpickle \ - dask-core \ - distributed \ joblib \ matplotlib \ psutil \ From d721f4e9958183a0c3c610b9b56c232733223d96 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 13 Dec 2022 22:48:31 -0600 Subject: [PATCH 10/17] ceiling on scikit-learn --- .ci/test.sh | 7 ++++--- .ci/test_windows.ps1 | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.ci/test.sh b/.ci/test.sh index 7842191bd2d4..9adf3746240b 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -120,9 +120,9 @@ fi # hack around https://github.com/microsoft/LightGBM/pull/5619#issuecomment-1341935203 just to produce # a releasable artifact on Ubuntu 14.04 -PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scikit-learn scipy" +PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scipy" if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]] && [[ $TASK == "sdist" ]]; then - PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.2.0 pandas scikit-learn<=1.1.0 scipy<=1.8.0" + PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.2.0 pandas<=1.4.1 scipy<=1.8.0" fi # re-including python=version[build=*cpython] to ensure that conda doesn't fall back to pypy @@ -134,7 +134,8 @@ conda install -q -y -n $CONDA_ENV \ pytest \ ${PACKAGE_CONSTRAINTS} \ "python=$PYTHON_VERSION[build=*cpython]" \ - python-graphviz || exit -1 + python-graphviz \ + 'scikit-learn<=1.1.0' || exit -1 if [[ $OS_NAME == "macos" ]] && [[ $COMPILER == "clang" ]]; then # fix "OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized." (OpenMP library conflict due to conda's MKL) diff --git a/.ci/test_windows.ps1 b/.ci/test_windows.ps1 index 6c0ffb8249f0..4e5750e6e827 100644 --- a/.ci/test_windows.ps1 +++ b/.ci/test_windows.ps1 @@ -51,7 +51,7 @@ if ($env:TASK -eq "swig") { } # re-including python=version[build=*cpython] to ensure that conda doesn't fall back to pypy -conda install -q -y -n $env:CONDA_ENV cloudpickle joblib matplotlib numpy pandas psutil pytest "python=$env:PYTHON_VERSION[build=*cpython]" python-graphviz scikit-learn scipy ; Check-Output $? +conda install -q -y -n $env:CONDA_ENV cloudpickle joblib matplotlib numpy pandas psutil pytest "python=$env:PYTHON_VERSION[build=*cpython]" python-graphviz 'scikit-learn<=1.1' scipy ; Check-Output $? if ($env:TASK -eq "regular") { mkdir $env:BUILD_SOURCESDIRECTORY/build; cd $env:BUILD_SOURCESDIRECTORY/build From 940022c8e818cf50170c27562b6ce640ba1c93d3 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 13 Dec 2022 22:51:07 -0600 Subject: [PATCH 11/17] try capping python version --- .ci/test.sh | 6 ++++-- .vsts-ci.yml | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.ci/test.sh b/.ci/test.sh index 9adf3746240b..d1c6c13fce8a 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -121,8 +121,10 @@ fi # hack around https://github.com/microsoft/LightGBM/pull/5619#issuecomment-1341935203 just to produce # a releasable artifact on Ubuntu 14.04 PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scipy" -if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]] && [[ $TASK == "sdist" ]]; then - PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.2.0 pandas<=1.4.1 scipy<=1.8.0" +if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]]; then + if [[ $TASK == "sdist" ]] || [[ $TASK == "regular" ]]; then + PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.2.0 pandas<=1.4.1 scipy<=1.8.0" + fi fi # re-including python=version[build=*cpython] to ensure that conda doesn't fall back to pypy diff --git a/.vsts-ci.yml b/.vsts-ci.yml index d80af79ce22c..3b368d4f709f 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -40,7 +40,7 @@ jobs: matrix: regular: TASK: regular - PYTHON_VERSION: '3.9' + PYTHON_VERSION: '3.8' sdist: TASK: sdist PYTHON_VERSION: '3.7' @@ -49,6 +49,7 @@ jobs: PYTHON_VERSION: '3.8' inference: TASK: if-else + PYTHON_VERSION: '3.8' mpi_source: TASK: mpi METHOD: source @@ -56,8 +57,10 @@ jobs: gpu_source: TASK: gpu METHOD: source + PYTHON_VERSION: '3.8' swig: TASK: swig + PYTHON_VERSION: '3.8' steps: - script: | echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY" From 581a7fa6984e9206b5b43fad412625f8a3b4119b Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 13 Dec 2022 23:05:12 -0600 Subject: [PATCH 12/17] fix numpy constraint --- .ci/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/test.sh b/.ci/test.sh index d1c6c13fce8a..b79089a20ba7 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -123,7 +123,7 @@ fi PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scipy" if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]]; then if [[ $TASK == "sdist" ]] || [[ $TASK == "regular" ]]; then - PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.2.0 pandas<=1.4.1 scipy<=1.8.0" + PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.20.0 pandas<=1.4.1 scipy<=1.8.0" fi fi From 70aa00257fc147e599a3d07bc95377637b4eaf1a Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 13 Dec 2022 23:34:07 -0600 Subject: [PATCH 13/17] more pinning to old versions --- .ci/test.sh | 2 +- .github/workflows/cuda.yml | 22 +++++++++++----------- .github/workflows/r_configure.yml | 2 +- .github/workflows/r_package.yml | 24 ++++++++++++------------ .github/workflows/r_valgrind.yml | 2 +- .vsts-ci.yml | 9 +++------ 6 files changed, 29 insertions(+), 32 deletions(-) diff --git a/.ci/test.sh b/.ci/test.sh index b79089a20ba7..ea7dc9294d6f 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -122,7 +122,7 @@ fi # a releasable artifact on Ubuntu 14.04 PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scipy" if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]]; then - if [[ $TASK == "sdist" ]] || [[ $TASK == "regular" ]]; then + if [[ $TASK == "bdist" ]] || [[ $TASK == "regular" ]] || [[ $TASK == "mpi" ]]; then PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.20.0 pandas<=1.4.1 scipy<=1.8.0" fi fi diff --git a/.github/workflows/cuda.yml b/.github/workflows/cuda.yml index b8ae029079db..a8d69ddcaa33 100644 --- a/.github/workflows/cuda.yml +++ b/.github/workflows/cuda.yml @@ -37,17 +37,17 @@ jobs: compiler: gcc python_version: "3.10" cuda_version: "9.0" - # task: cuda - # - method: source - # compiler: gcc - # python_version: "3.8" - # cuda_version: "11.7.1" - # task: cuda_exp - # - method: pip - # compiler: clang - # python_version: "3.9" - # cuda_version: "10.0" - # task: cuda_exp + task: cuda + - method: source + compiler: gcc + python_version: "3.8" + cuda_version: "11.7.1" + task: cuda_exp + - method: pip + compiler: clang + python_version: "3.9" + cuda_version: "10.0" + task: cuda_exp steps: - name: Setup or update software on host machine run: | diff --git a/.github/workflows/r_configure.yml b/.github/workflows/r_configure.yml index f989c272d2c5..78287c9da080 100644 --- a/.github/workflows/r_configure.yml +++ b/.github/workflows/r_configure.yml @@ -8,7 +8,7 @@ jobs: r-configure: name: r-configure timeout-minutes: 60 - runs-on: ubuntu-latest + runs-on: 'ubuntuu-20.04' container: "ubuntu:20.04" steps: - name: Install essential software before checkout diff --git a/.github/workflows/r_package.yml b/.github/workflows/r_package.yml index 29c203d160f0..9db9f8ba4e06 100644 --- a/.github/workflows/r_package.yml +++ b/.github/workflows/r_package.yml @@ -33,22 +33,22 @@ jobs: ################ # CMake builds # ################ - - os: ubuntu-latest + - os: ubuntu-20.04 task: r-package compiler: gcc r_version: 3.6 build_type: cmake - - os: ubuntu-latest + - os: ubuntu-20.04 task: r-package compiler: gcc r_version: 4.2 build_type: cmake - - os: ubuntu-latest + - os: ubuntu-20.04 task: r-package compiler: clang r_version: 3.6 build_type: cmake - - os: ubuntu-latest + - os: ubuntu-20.04 task: r-package compiler: clang r_version: 4.2 @@ -114,7 +114,7 @@ jobs: toolchain: MSYS r_version: 4.2 build_type: cran - - os: ubuntu-latest + - os: ubuntu-20.04 task: r-package compiler: gcc r_version: 4.2 @@ -127,7 +127,7 @@ jobs: ################ # Other checks # ################ - - os: ubuntu-latest + - os: ubuntu-20.04 task: r-rchk compiler: gcc r_version: 4.2 @@ -151,7 +151,7 @@ jobs: CTAN_MIRROR: https://ctan.math.illinois.edu/systems/win32/miktex TINYTEX_INSTALLER: TinyTeX - name: Setup and run tests on Linux and macOS - if: matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-latest' + if: matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-20.04' shell: bash run: | export TASK="${{ matrix.task }}" @@ -159,7 +159,7 @@ jobs: export GITHUB_ACTIONS="true" if [[ "${{ matrix.os }}" == "macOS-latest" ]]; then export OS_NAME="macos" - elif [[ "${{ matrix.os }}" == "ubuntu-latest" ]]; then + elif [[ "${{ matrix.os }}" == "ubuntu-20.04" ]]; then export OS_NAME="linux" fi export BUILD_DIRECTORY="$GITHUB_WORKSPACE" @@ -181,9 +181,9 @@ jobs: $env:TASK = "${{ matrix.task }}" & "$env:GITHUB_WORKSPACE/.ci/test_windows.ps1" test-r-sanitizers: - name: r-sanitizers (ubuntu-latest, R-devel, ${{ matrix.compiler }} ASAN/UBSAN) + name: r-sanitizers (ubuntu-20.04, R-devel, ${{ matrix.compiler }} ASAN/UBSAN) timeout-minutes: 60 - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 container: wch1/r-debug strategy: fail-fast: false @@ -219,7 +219,7 @@ jobs: test-r-debian-clang: name: r-package (debian, R-devel, clang) timeout-minutes: 60 - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 container: rhub/debian-clang-devel steps: - name: Install Git before checkout @@ -248,7 +248,7 @@ jobs: fi all-successful: # https://github.community/t/is-it-possible-to-require-all-github-actions-tasks-to-pass-without-enumerating-them/117957/4?u=graingert - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 needs: [test, test-r-sanitizers, test-r-debian-clang] steps: - name: Note that all tests succeeded diff --git a/.github/workflows/r_valgrind.yml b/.github/workflows/r_valgrind.yml index 00d74f5c8f39..bc6f343dca0b 100644 --- a/.github/workflows/r_valgrind.yml +++ b/.github/workflows/r_valgrind.yml @@ -8,7 +8,7 @@ jobs: test-r-valgrind: name: r-package (ubuntu-latest, R-devel, valgrind) timeout-minutes: 300 - runs-on: ubuntu-latest + runs-on: 'ubuntu-20.04' container: wch1/r-debug env: SECRETS_WORKFLOW: ${{ secrets.WORKFLOW }} diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 3b368d4f709f..a702dbfe3363 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -49,7 +49,6 @@ jobs: PYTHON_VERSION: '3.8' inference: TASK: if-else - PYTHON_VERSION: '3.8' mpi_source: TASK: mpi METHOD: source @@ -57,10 +56,8 @@ jobs: gpu_source: TASK: gpu METHOD: source - PYTHON_VERSION: '3.8' swig: TASK: swig - PYTHON_VERSION: '3.8' steps: - script: | echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY" @@ -153,7 +150,7 @@ jobs: OS_NAME: 'linux' PRODUCES_ARTIFACTS: 'true' pool: - vmImage: ubuntu-latest + vmImage: 'ubuntu-20.04' timeoutInMinutes: 180 strategy: matrix: @@ -300,7 +297,7 @@ jobs: ########################################### condition: not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')) pool: - vmImage: 'ubuntu-latest' + vmImage: 'ubuntu-20.04' container: rbase steps: - script: | @@ -331,7 +328,7 @@ jobs: - R_artifact condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/'))) pool: - vmImage: 'ubuntu-latest' + vmImage: 'ubuntu-20.04' steps: # Create archives with complete source code included (with git submodules) - task: ArchiveFiles@2 From a47d7c79ae01fba31e7a08f8ae521edd06f8b27e Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 23 Dec 2022 22:25:39 -0600 Subject: [PATCH 14/17] fix QEMU --- .ci/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/test.sh b/.ci/test.sh index ea7dc9294d6f..817f6639c2ba 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -121,7 +121,7 @@ fi # hack around https://github.com/microsoft/LightGBM/pull/5619#issuecomment-1341935203 just to produce # a releasable artifact on Ubuntu 14.04 PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scipy" -if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]]; then +if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]] && [[ $ARCH != "aarch64" ]]; then if [[ $TASK == "bdist" ]] || [[ $TASK == "regular" ]] || [[ $TASK == "mpi" ]]; then PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.20.0 pandas<=1.4.1 scipy<=1.8.0" fi From b95c86506f6ea1129977685faf8eb5797525bf47 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 28 Dec 2022 21:04:02 -0600 Subject: [PATCH 15/17] looser scikit-learn pin to try to get QEMU builds working --- .ci/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/test.sh b/.ci/test.sh index 817f6639c2ba..71bee7fd0b61 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -137,7 +137,7 @@ conda install -q -y -n $CONDA_ENV \ ${PACKAGE_CONSTRAINTS} \ "python=$PYTHON_VERSION[build=*cpython]" \ python-graphviz \ - 'scikit-learn<=1.1.0' || exit -1 + 'scikit-learn<1.2.0' || exit -1 if [[ $OS_NAME == "macos" ]] && [[ $COMPILER == "clang" ]]; then # fix "OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized." (OpenMP library conflict due to conda's MKL) From 8431c38f6c59cfc5c173813712de342723edac4e Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 28 Dec 2022 21:48:04 -0600 Subject: [PATCH 16/17] remove pin on scikit-learn and skip all the load_boston() tests --- .ci/test.sh | 7 +++---- .ci/test_windows.ps1 | 2 +- tests/python_package_test/test_engine.py | 18 ++++++++++++++++- tests/python_package_test/test_sklearn.py | 24 ++++++++++------------- tests/python_package_test/utils.py | 5 ----- 5 files changed, 31 insertions(+), 25 deletions(-) diff --git a/.ci/test.sh b/.ci/test.sh index 71bee7fd0b61..2538ec6249b4 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -120,10 +120,10 @@ fi # hack around https://github.com/microsoft/LightGBM/pull/5619#issuecomment-1341935203 just to produce # a releasable artifact on Ubuntu 14.04 -PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scipy" +PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scikit-learn scipy" if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]] && [[ $ARCH != "aarch64" ]]; then if [[ $TASK == "bdist" ]] || [[ $TASK == "regular" ]] || [[ $TASK == "mpi" ]]; then - PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.20.0 pandas<=1.4.1 scipy<=1.8.0" + PACKAGE_CONSTRAINTS="dask-core<=2022.7.1 distributed<=2022.7.1 libstdcxx-ng<12.0 numpy<=1.20.0 pandas<=1.4.1 scikit-learn<=1.1.0 scipy<=1.8.0" fi fi @@ -136,8 +136,7 @@ conda install -q -y -n $CONDA_ENV \ pytest \ ${PACKAGE_CONSTRAINTS} \ "python=$PYTHON_VERSION[build=*cpython]" \ - python-graphviz \ - 'scikit-learn<1.2.0' || exit -1 + python-graphviz || exit -1 if [[ $OS_NAME == "macos" ]] && [[ $COMPILER == "clang" ]]; then # fix "OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized." (OpenMP library conflict due to conda's MKL) diff --git a/.ci/test_windows.ps1 b/.ci/test_windows.ps1 index 4e5750e6e827..6c0ffb8249f0 100644 --- a/.ci/test_windows.ps1 +++ b/.ci/test_windows.ps1 @@ -51,7 +51,7 @@ if ($env:TASK -eq "swig") { } # re-including python=version[build=*cpython] to ensure that conda doesn't fall back to pypy -conda install -q -y -n $env:CONDA_ENV cloudpickle joblib matplotlib numpy pandas psutil pytest "python=$env:PYTHON_VERSION[build=*cpython]" python-graphviz 'scikit-learn<=1.1' scipy ; Check-Output $? +conda install -q -y -n $env:CONDA_ENV cloudpickle joblib matplotlib numpy pandas psutil pytest "python=$env:PYTHON_VERSION[build=*cpython]" python-graphviz scikit-learn scipy ; Check-Output $? if ($env:TASK -eq "regular") { mkdir $env:BUILD_SOURCESDIRECTORY/build; cd $env:BUILD_SOURCESDIRECTORY/build diff --git a/tests/python_package_test/test_engine.py b/tests/python_package_test/test_engine.py index eaf7244fe150..119b3f6f14e1 100644 --- a/tests/python_package_test/test_engine.py +++ b/tests/python_package_test/test_engine.py @@ -17,7 +17,7 @@ import lightgbm as lgb -from .utils import load_boston, load_breast_cancer, load_digits, load_iris +from .utils import load_breast_cancer, load_digits, load_iris decreasing_generator = itertools.count(0, -1) @@ -99,6 +99,7 @@ def test_rf(): def test_regression(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) params = { @@ -643,6 +644,7 @@ def test_early_stopping(): def test_continue_train(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) params = { @@ -671,6 +673,7 @@ def test_continue_train(): def test_continue_train_reused_dataset(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) params = { 'objective': 'regression', @@ -685,6 +688,7 @@ def test_continue_train_reused_dataset(): def test_continue_train_dart(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) params = { @@ -733,6 +737,7 @@ def test_continue_train_multiclass(): def test_cv(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X_train, y_train = load_boston(return_X_y=True) params = {'verbose': -1} lgb_train = lgb.Dataset(X_train, y_train) @@ -837,6 +842,7 @@ def test_cvbooster(): def test_feature_name(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X_train, y_train = load_boston(return_X_y=True) params = {'verbose': -1} lgb_train = lgb.Dataset(X_train, y_train) @@ -866,6 +872,7 @@ def test_feature_name_with_non_ascii(): def test_save_load_copy_pickle(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") def train_and_predict(init_model=None, return_model=False): X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) @@ -1496,6 +1503,7 @@ def test_refit(): def test_mape_rf(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) params = { 'boosting_type': 'rf', @@ -1514,6 +1522,7 @@ def test_mape_rf(): def test_mape_dart(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) params = { 'boosting_type': 'dart', @@ -2052,6 +2061,7 @@ def test_default_objective_and_metric(): @pytest.mark.skipif(psutil.virtual_memory().available / 1024 / 1024 / 1024 < 3, reason='not enough RAM') def test_model_size(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) data = lgb.Dataset(X, y) bst = lgb.train({'verbose': -1}, data, num_boost_round=2) @@ -2079,6 +2089,7 @@ def test_model_size(): def test_get_split_value_histogram(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) lgb_train = lgb.Dataset(X, y, categorical_feature=[2]) gbm = lgb.train({'verbose': -1}, lgb_train, num_boost_round=20) @@ -2159,6 +2170,7 @@ def test_get_split_value_histogram(): def test_early_stopping_for_only_first_metric(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") def metrics_combination_train_regression(valid_sets, metric_list, assumed_iteration, first_metric_only, feval=None): @@ -2465,6 +2477,7 @@ def test_dataset_params_with_reference(): def test_extra_trees(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") # check extra trees increases regularization X, y = load_boston(return_X_y=True) lgb_x = lgb.Dataset(X, label=y) @@ -2484,6 +2497,7 @@ def test_extra_trees(): def test_path_smoothing(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") # check path smoothing increases regularization X, y = load_boston(return_X_y=True) lgb_x = lgb.Dataset(X, label=y) @@ -2554,6 +2568,7 @@ def _imptcs_to_numpy(X, impcts_dict): def test_interaction_constraints(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) num_features = X.shape[1] train_data = lgb.Dataset(X, label=y) @@ -2709,6 +2724,7 @@ def test_linear_single_leaf(): def test_predict_with_start_iteration(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") def inner_test(X, y, params, early_stopping_rounds): X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) train_data = lgb.Dataset(X_train, label=y_train) diff --git a/tests/python_package_test/test_sklearn.py b/tests/python_package_test/test_sklearn.py index 6b1ac8a9f3d2..d107fa60d1a0 100644 --- a/tests/python_package_test/test_sklearn.py +++ b/tests/python_package_test/test_sklearn.py @@ -18,7 +18,7 @@ import lightgbm as lgb -from .utils import load_boston, load_breast_cancer, load_digits, load_iris, load_linnerud, make_ranking +from .utils import load_breast_cancer, load_digits, load_iris, load_linnerud, make_ranking sk_version = parse_version(sk_version) if sk_version < parse_version("0.23"): @@ -91,6 +91,7 @@ def test_binary(): def test_regression(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) gbm = lgb.LGBMRegressor(n_estimators=50, silent=True) @@ -157,6 +158,7 @@ def test_eval_at_aliases(): def test_regression_with_custom_objective(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) gbm = lgb.LGBMRegressor(n_estimators=50, silent=True, objective=objective_ls) @@ -180,6 +182,7 @@ def test_binary_classification_with_custom_objective(): def test_dart(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) gbm = lgb.LGBMRegressor(boosting_type='dart', n_estimators=50) @@ -217,6 +220,7 @@ def test_stacking_classifier(): # sklearn <0.23 does not have a stacking regressor and n_features_in_ property @pytest.mark.skipif(sk_version < parse_version('0.23'), reason='scikit-learn version is less than 0.23') def test_stacking_regressor(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") from sklearn.ensemble import StackingRegressor X, y = load_boston(return_X_y=True) @@ -384,14 +388,6 @@ def test_regressor_chain(): def test_clone_and_property(): - X, y = load_boston(return_X_y=True) - gbm = lgb.LGBMRegressor(n_estimators=10, silent=True) - gbm.fit(X, y, verbose=False) - - gbm_clone = clone(gbm) - assert isinstance(gbm.booster_, lgb.Booster) - assert isinstance(gbm.feature_importances_, np.ndarray) - X, y = load_digits(n_class=2, return_X_y=True) clf = lgb.LGBMClassifier(n_estimators=10, silent=True) clf.fit(X, y, verbose=False) @@ -402,6 +398,7 @@ def test_clone_and_property(): def test_joblib(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) gbm = lgb.LGBMRegressor(n_estimators=10, objective=custom_asymmetric_obj, @@ -644,6 +641,7 @@ def test_predict(): def test_evaluate_train_set(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) gbm = lgb.LGBMRegressor(n_estimators=10, silent=True) @@ -658,6 +656,7 @@ def test_evaluate_train_set(): def test_metrics(): + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") X, y = load_boston(return_X_y=True) params = {'n_estimators': 2, 'verbose': -1} params_fit = {'X': X, 'y': y, 'eval_set': (X, y), 'verbose': False} @@ -989,7 +988,7 @@ def test_nan_handle(): def test_first_metric_only(): - + pytest.skip("load_boston() was removed in scikit-learn 1.2.0") def fit_and_check(eval_set_names, metric_names, assumed_iteration, first_metric_only): params['first_metric_only'] = first_metric_only gbm = lgb.LGBMRegressor(**params).fit(**params_fit) @@ -1204,7 +1203,7 @@ def test_parameters_default_constructible(estimator): check_parameters_default_constructible(name, Estimator) -@pytest.mark.parametrize('task', ['classification', 'ranking', 'regression']) +@pytest.mark.parametrize('task', ['classification', 'ranking']) def test_training_succeeds_when_data_is_dataframe_and_label_is_column_array(task): pd = pytest.importorskip("pandas") if task == 'ranking': @@ -1214,9 +1213,6 @@ def test_training_succeeds_when_data_is_dataframe_and_label_is_column_array(task elif task == 'classification': X, y = load_iris(return_X_y=True) model_factory = lgb.LGBMClassifier - elif task == 'regression': - X, y = load_boston(return_X_y=True) - model_factory = lgb.LGBMRegressor X = pd.DataFrame(X) y_col_array = y.reshape(-1, 1) params = { diff --git a/tests/python_package_test/utils.py b/tests/python_package_test/utils.py index 320b8e204aa3..7d37bf7c6bb5 100644 --- a/tests/python_package_test/utils.py +++ b/tests/python_package_test/utils.py @@ -6,11 +6,6 @@ from sklearn.utils import check_random_state -@lru_cache(maxsize=None) -def load_boston(**kwargs): - return sklearn.datasets.load_boston(**kwargs) - - @lru_cache(maxsize=None) def load_breast_cancer(**kwargs): return sklearn.datasets.load_breast_cancer(**kwargs) From 8d68f3445b324baa389a6b4ba37c33d90cba9e11 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 28 Dec 2022 22:59:34 -0600 Subject: [PATCH 17/17] fix detection of QEMU in pinning dependencies --- .ci/test.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/test.sh b/.ci/test.sh index 2538ec6249b4..40eec5fa518b 100755 --- a/.ci/test.sh +++ b/.ci/test.sh @@ -120,6 +120,7 @@ fi # hack around https://github.com/microsoft/LightGBM/pull/5619#issuecomment-1341935203 just to produce # a releasable artifact on Ubuntu 14.04 +ARCH=$(uname -m) PACKAGE_CONSTRAINTS="dask-core distributed pandas numpy scikit-learn scipy" if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]] && [[ $ARCH != "aarch64" ]]; then if [[ $TASK == "bdist" ]] || [[ $TASK == "regular" ]] || [[ $TASK == "mpi" ]]; then