* [bug#48388] [PATCH 0/3] Add xgboost. @ 2021-05-12 23:56 Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 1/3] gnu: Add dmlc-core Vinicius Monego ` (4 more replies) 0 siblings, 5 replies; 14+ messages in thread From: Vinicius Monego @ 2021-05-12 23:56 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego This patchset adds the binaries, C++ library and Python frontend for the XGBoost gradient boosting framework. I noticed r-xgboost in the packages, which compiles a bundled copy of xgboost. Ideally it would inherit from xgboost and build from there, but I do not work with R so I can't help with this. I also had to do some dirty hack in the python patch for reading version and using libxgboost from the xgboost package. Lmk is there is a better way to handle this. Vinicius Monego (3): gnu: Add dmlc-core. gnu: Add xgboost. gnu: Add python-xgboost. gnu/local.mk | 2 + gnu/packages/machine-learning.scm | 125 ++++++++++++++++++ ...xgboost-python-use-system-libxgboost.patch | 69 ++++++++++ .../xgboost-use-system-dmlc-core.patch | 35 +++++ 4 files changed, 231 insertions(+) create mode 100644 gnu/packages/patches/xgboost-python-use-system-libxgboost.patch create mode 100644 gnu/packages/patches/xgboost-use-system-dmlc-core.patch -- 2.31.1 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH 1/3] gnu: Add dmlc-core. 2021-05-12 23:56 [bug#48388] [PATCH 0/3] Add xgboost Vinicius Monego @ 2021-05-12 23:58 ` Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 2/3] gnu: Add xgboost Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 3/3] gnu: Add python-xgboost Vinicius Monego 2021-05-13 15:29 ` [bug#48388] [PATCH v2 2/3] gnu: Add xgboost Vinicius Monego ` (3 subsequent siblings) 4 siblings, 2 replies; 14+ messages in thread From: Vinicius Monego @ 2021-05-12 23:58 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (dmlc-core): New variable. --- gnu/packages/machine-learning.scm | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 837ebbba67..9d6c5505f7 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1927,6 +1927,38 @@ together building blocks and a subclassing API with an imperative style for advanced research.") (license license:asl2.0))) +(define-public dmlc-core + ;; Version 0.4 is too old for xgboost. + (let ((version "0.5") + (commit "f00e3ec7abc9f293a1b7061157b0a4e22a735cf5") + (revision "0")) + (package + (name "dmlc-core") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dmlc/dmlc-core") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1x4ad1jhn84fywlk031fmv1kxyiscclmrqn9hhj8gz0mh7z9vcrh")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DGOOGLE_TEST=ON"))) + (native-inputs + `(("googletest" ,googletest) + ("python" ,python-wrapper))) + (home-page "https://github.com/dmlc/dmlc-core") + (synopsis "Common bricks library for machine learning") + (description + "DMLC-Core is the backbone library to support all DMLC projects, +offers the bricks to build efficient and scalable distributed machine +learning libraries.") + (license license:asl2.0)))) + (define-public python-iml (package (name "python-iml") -- 2.31.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH 2/3] gnu: Add xgboost. 2021-05-12 23:58 ` [bug#48388] [PATCH 1/3] gnu: Add dmlc-core Vinicius Monego @ 2021-05-12 23:58 ` Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 3/3] gnu: Add python-xgboost Vinicius Monego 1 sibling, 0 replies; 14+ messages in thread From: Vinicius Monego @ 2021-05-12 23:58 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (xgboost): New variable. --- gnu/local.mk | 2 + gnu/packages/machine-learning.scm | 33 +++++++++ ...xgboost-python-use-system-libxgboost.patch | 69 +++++++++++++++++++ .../xgboost-use-system-dmlc-core.patch | 35 ++++++++++ 4 files changed, 139 insertions(+) create mode 100644 gnu/packages/patches/xgboost-python-use-system-libxgboost.patch create mode 100644 gnu/packages/patches/xgboost-use-system-dmlc-core.patch diff --git a/gnu/local.mk b/gnu/local.mk index 37166bb2fc..e1d382c543 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1823,6 +1823,8 @@ dist_patch_DATA = \ %D%/packages/patches/xf86-video-voodoo-pcitag.patch \ %D%/packages/patches/xfce4-panel-plugins.patch \ %D%/packages/patches/xfce4-settings-defaults.patch \ + %D%/packages/patches/xgboost-python-use-system-libxgboost.patch \ + %D%/packages/patches/xgboost-use-system-dmlc-core.patch \ %D%/packages/patches/xmonad-dynamic-linking.patch \ %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \ %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch \ diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 9d6c5505f7..fd10de427f 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1959,6 +1959,39 @@ offers the bricks to build efficient and scalable distributed machine learning libraries.") (license license:asl2.0)))) +(define-public xgboost + (package + (name "xgboost") + (version "1.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dmlc/xgboost") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (patches (search-patches "xgboost-python-use-system-libxgboost.patch" + "xgboost-use-system-dmlc-core.patch")) + (sha256 + (base32 "0ixacmpcj844c09xigi1vd4rrckld84k32iarvhnvvm6yjih756y")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags (list "-DGOOGLE_TEST=ON"))) + (native-inputs + `(("googletest" ,googletest) + ("python" ,python-wrapper))) + (inputs + `(("dmlc-core" ,dmlc-core))) + (home-page "https://xgboost.ai/") + (synopsis "Gradient boosting (GBDT, GBRT or GBM) library in C++") + (description + "XGBoost is an optimized distributed gradient boosting library designed +to be highly efficient, flexible and portable. It implements machine learning +algorithms under the Gradient Boosting framework. XGBoost provides a parallel +tree boosting (also known as GBDT, GBM) that solve many data science problems +in a fast and accurate way.") + (license license:asl2.0))) + (define-public python-iml (package (name "python-iml") diff --git a/gnu/packages/patches/xgboost-python-use-system-libxgboost.patch b/gnu/packages/patches/xgboost-python-use-system-libxgboost.patch new file mode 100644 index 0000000000..992e6bb3fd --- /dev/null +++ b/gnu/packages/patches/xgboost-python-use-system-libxgboost.patch @@ -0,0 +1,69 @@ +From 768192b9c6700f0ae6b750c56b114d7022692a0b Mon Sep 17 00:00:00 2001 +From: Vinicius Monego <monego@posteo.net> +Date: Tue, 11 May 2021 19:30:55 -0300 +Subject: [PATCH] Python wrapper: use system libxgboost. + +--- +This patch was extended from the following Debian patch: https://sources.debian.org/src/xgboost/1.2.1-1/debian/patches/setup.py.patch/ + + python-package/setup.py | 4 ++-- + python-package/xgboost/__init__.py | 5 ++--- + python-package/xgboost/libpath.py | 5 +++++ + 3 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/python-package/setup.py b/python-package/setup.py +index a2feb766..b8b78429 100644 +--- a/python-package/setup.py ++++ b/python-package/setup.py +@@ -312,11 +312,11 @@ if __name__ == '__main__': + 'numpy', + 'scipy', + ], +- ext_modules=[CMakeExtension('libxgboost')], ++ # ext_modules=[CMakeExtension('libxgboost')], + cmdclass={ + 'build_ext': BuildExt, + 'sdist': Sdist, +- 'install_lib': InstallLib, ++ # 'install_lib': InstallLib, + 'install': Install + }, + extras_require={ +diff --git a/python-package/xgboost/__init__.py b/python-package/xgboost/__init__.py +index e0ff434d..658e84e6 100644 +--- a/python-package/xgboost/__init__.py ++++ b/python-package/xgboost/__init__.py +@@ -21,9 +21,8 @@ try: + except ImportError: + pass + +-VERSION_FILE = os.path.join(os.path.dirname(__file__), 'VERSION') +-with open(VERSION_FILE) as f: +- __version__ = f.read().strip() ++# This variable will be set during substitution. ++__version__ = '' + + __all__ = ['DMatrix', 'DeviceQuantileDMatrix', 'Booster', + 'train', 'cv', +diff --git a/python-package/xgboost/libpath.py b/python-package/xgboost/libpath.py +index f7a7d9cd..88d9d986 100644 +--- a/python-package/xgboost/libpath.py ++++ b/python-package/xgboost/libpath.py +@@ -19,9 +19,14 @@ def find_lib_path() -> List[str]: + lib_path + List of all found library path to xgboost + """ ++ ++ # This variable will be set during substitution. ++ XGBOOST_PATH = '' ++ + curr_path = os.path.dirname(os.path.abspath(os.path.expanduser(__file__))) + dll_path = [ + # normal, after installation `lib` is copied into Python package tree. ++ os.path.join(XGBOOST_PATH, 'lib'), + os.path.join(curr_path, 'lib'), + # editable installation, no copying is performed. + os.path.join(curr_path, os.path.pardir, os.path.pardir, 'lib'), +-- +2.31.1 + diff --git a/gnu/packages/patches/xgboost-use-system-dmlc-core.patch b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch new file mode 100644 index 0000000000..6209ae1f10 --- /dev/null +++ b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch @@ -0,0 +1,35 @@ +From 34167cc105e47589b86b6f62da76e0ab744002dd Mon Sep 17 00:00:00 2001 +From: Vinicius Monego <monego@posteo.net> +Date: Tue, 11 May 2021 19:35:30 -0300 +Subject: [PATCH] Use dmlc-core from Guix. + +--- +This patch is a subset from the following Debian patch: https://sources.debian.org/src/xgboost/1.2.1-1/debian/patches/cmake.patch/ + +Rabit is now developed as part of xgboost, so we don't build it separately. + + CMakeLists.txt | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6cc19fbd..3b42bc17 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -150,11 +150,9 @@ endif (USE_OPENMP) + + # dmlc-core + msvc_use_static_runtime() +-add_subdirectory(${xgboost_SOURCE_DIR}/dmlc-core) +-set_target_properties(dmlc PROPERTIES +- CXX_STANDARD 14 +- CXX_STANDARD_REQUIRED ON +- POSITION_INDEPENDENT_CODE ON) ++add_library(dmlc SHARED IMPORTED) ++find_library(DMLC_LIBRARY dmlc) ++set_property(TARGET dmlc PROPERTY IMPORTED_LOCATION "${DMLC_LIBRARY}") + if (MSVC) + target_compile_options(dmlc PRIVATE + -D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE) +-- +2.31.1 + -- 2.31.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH 3/3] gnu: Add python-xgboost. 2021-05-12 23:58 ` [bug#48388] [PATCH 1/3] gnu: Add dmlc-core Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 2/3] gnu: Add xgboost Vinicius Monego @ 2021-05-12 23:58 ` Vinicius Monego 1 sibling, 0 replies; 14+ messages in thread From: Vinicius Monego @ 2021-05-12 23:58 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (python-xgboost): New variable. --- gnu/packages/machine-learning.scm | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index fd10de427f..f7bb01f274 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1992,6 +1992,66 @@ tree boosting (also known as GBDT, GBM) that solve many data science problems in a fast and accurate way.") (license license:asl2.0))) +(define-public python-xgboost + (package + (inherit xgboost) + (name "python-xgboost") + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'preparations + (lambda* (#:key inputs #:allow-other-keys) + ;; Move python-package content to parent directory to silence + ;; some warnings about files not being found if we chdir. + (rename-file "python-package/xgboost" "xgboost") + (rename-file "python-package/README.rst" "README.rst") + (rename-file "python-package/setup.cfg" "setup.cfg") + (rename-file "python-package/setup.py" "setup.py") + + (with-directory-excursion "xgboost" + ;; Version is read from a VERSION file, but that file is not + ;; part of the installation. + (substitute* "__init__.py" + (("__version__ = ''") + (string-append "__version__ = " "'" + ,(package-version xgboost) "'"))) + ;; The Python wrapper expects libxgboost to be found in the + ;; same source from where the wrapper builds. This workaround + ;; allows libxgboost to be used from the xgboost package. + (substitute* "libpath.py" + (("XGBOOST_PATH = ''") + (string-append "XGBOOST_PATH = " + "'" (assoc-ref inputs "xgboost") "'")))) + #t)) + (replace 'check + ;; Python-specific tests are located in tests/python. + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "tests/python" + ;; FIXME: CLI tests fail with PermissionError. + "--ignore" "tests/python/test_cli.py" "-k" + (string-append + "not test_cli_regression_demo" + ;; The tests below open a network connection. + " and not test_model_compatibility" + " and not test_get_group" + " and not test_cv_no_shuffle" + " and not test_cv" + " and not test_training" + ;; "'['./runexp.sh']' returned non-zero exit status 1." + " and not test_cli_binary_classification"))))))) + (native-inputs + `(("python-pandas" ,python-pandas) + ("python-pytest" ,python-pytest) + ("python-scikit-learn" ,python-scikit-learn))) + (inputs + `(("xgboost" ,xgboost))) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy))) + (synopsis "Python interface for the XGBoost library"))) + (define-public python-iml (package (name "python-iml") -- 2.31.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v2 2/3] gnu: Add xgboost. 2021-05-12 23:56 [bug#48388] [PATCH 0/3] Add xgboost Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 1/3] gnu: Add dmlc-core Vinicius Monego @ 2021-05-13 15:29 ` Vinicius Monego 2021-05-13 15:29 ` [bug#48388] [PATCH v2 3/3] gnu: Add python-xgboost Vinicius Monego 2021-06-27 17:30 ` [bug#48388] [PATCH v3 1/3] gnu: Add dmlc-core Vinicius Monego ` (2 subsequent siblings) 4 siblings, 1 reply; 14+ messages in thread From: Vinicius Monego @ 2021-05-13 15:29 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (xgboost): New variable. * gnu/packages/patches/xgboost-python-use-system-libxgboost.patch, gnu/packages/patches/xgboost-use-system-dmlc-core.patch: New files. * gnu/local.mk (dist_PATCH_DATA): Add them. --- Changed commit message to add patch files. gnu/local.mk | 2 + gnu/packages/machine-learning.scm | 33 +++++++++ ...xgboost-python-use-system-libxgboost.patch | 69 +++++++++++++++++++ .../xgboost-use-system-dmlc-core.patch | 35 ++++++++++ 4 files changed, 139 insertions(+) create mode 100644 gnu/packages/patches/xgboost-python-use-system-libxgboost.patch create mode 100644 gnu/packages/patches/xgboost-use-system-dmlc-core.patch diff --git a/gnu/local.mk b/gnu/local.mk index 37166bb2fc..e1d382c543 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1823,6 +1823,8 @@ dist_patch_DATA = \ %D%/packages/patches/xf86-video-voodoo-pcitag.patch \ %D%/packages/patches/xfce4-panel-plugins.patch \ %D%/packages/patches/xfce4-settings-defaults.patch \ + %D%/packages/patches/xgboost-python-use-system-libxgboost.patch \ + %D%/packages/patches/xgboost-use-system-dmlc-core.patch \ %D%/packages/patches/xmonad-dynamic-linking.patch \ %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \ %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch \ diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 9d6c5505f7..d81370797f 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1959,6 +1959,39 @@ offers the bricks to build efficient and scalable distributed machine learning libraries.") (license license:asl2.0)))) +(define-public xgboost + (package + (name "xgboost") + (version "1.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dmlc/xgboost") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (patches (search-patches "xgboost-python-use-system-libxgboost.patch" + "xgboost-use-system-dmlc-core.patch")) + (sha256 + (base32 "0ixacmpcj844c09xigi1vd4rrckld84k32iarvhnvvm6yjih756y")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags (list "-DGOOGLE_TEST=ON"))) + (native-inputs + `(("googletest" ,googletest) + ("python" ,python-wrapper))) + (inputs + `(("dmlc-core" ,dmlc-core))) + (home-page "https://xgboost.ai/") + (synopsis "Gradient boosting (GBDT, GBRT or GBM) library in C++") + (description + "XGBoost is an optimized distributed gradient boosting library designed +to be highly efficient, flexible and portable. It implements machine learning +algorithms under the Gradient Boosting framework. XGBoost provides a parallel +tree boosting (also known as GBDT, GBM) that solve many data science problems +in a fast and accurate way.") + (license license:asl2.0))) + (define-public python-iml (package (name "python-iml") diff --git a/gnu/packages/patches/xgboost-python-use-system-libxgboost.patch b/gnu/packages/patches/xgboost-python-use-system-libxgboost.patch new file mode 100644 index 0000000000..992e6bb3fd --- /dev/null +++ b/gnu/packages/patches/xgboost-python-use-system-libxgboost.patch @@ -0,0 +1,69 @@ +From 768192b9c6700f0ae6b750c56b114d7022692a0b Mon Sep 17 00:00:00 2001 +From: Vinicius Monego <monego@posteo.net> +Date: Tue, 11 May 2021 19:30:55 -0300 +Subject: [PATCH] Python wrapper: use system libxgboost. + +--- +This patch was extended from the following Debian patch: https://sources.debian.org/src/xgboost/1.2.1-1/debian/patches/setup.py.patch/ + + python-package/setup.py | 4 ++-- + python-package/xgboost/__init__.py | 5 ++--- + python-package/xgboost/libpath.py | 5 +++++ + 3 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/python-package/setup.py b/python-package/setup.py +index a2feb766..b8b78429 100644 +--- a/python-package/setup.py ++++ b/python-package/setup.py +@@ -312,11 +312,11 @@ if __name__ == '__main__': + 'numpy', + 'scipy', + ], +- ext_modules=[CMakeExtension('libxgboost')], ++ # ext_modules=[CMakeExtension('libxgboost')], + cmdclass={ + 'build_ext': BuildExt, + 'sdist': Sdist, +- 'install_lib': InstallLib, ++ # 'install_lib': InstallLib, + 'install': Install + }, + extras_require={ +diff --git a/python-package/xgboost/__init__.py b/python-package/xgboost/__init__.py +index e0ff434d..658e84e6 100644 +--- a/python-package/xgboost/__init__.py ++++ b/python-package/xgboost/__init__.py +@@ -21,9 +21,8 @@ try: + except ImportError: + pass + +-VERSION_FILE = os.path.join(os.path.dirname(__file__), 'VERSION') +-with open(VERSION_FILE) as f: +- __version__ = f.read().strip() ++# This variable will be set during substitution. ++__version__ = '' + + __all__ = ['DMatrix', 'DeviceQuantileDMatrix', 'Booster', + 'train', 'cv', +diff --git a/python-package/xgboost/libpath.py b/python-package/xgboost/libpath.py +index f7a7d9cd..88d9d986 100644 +--- a/python-package/xgboost/libpath.py ++++ b/python-package/xgboost/libpath.py +@@ -19,9 +19,14 @@ def find_lib_path() -> List[str]: + lib_path + List of all found library path to xgboost + """ ++ ++ # This variable will be set during substitution. ++ XGBOOST_PATH = '' ++ + curr_path = os.path.dirname(os.path.abspath(os.path.expanduser(__file__))) + dll_path = [ + # normal, after installation `lib` is copied into Python package tree. ++ os.path.join(XGBOOST_PATH, 'lib'), + os.path.join(curr_path, 'lib'), + # editable installation, no copying is performed. + os.path.join(curr_path, os.path.pardir, os.path.pardir, 'lib'), +-- +2.31.1 + diff --git a/gnu/packages/patches/xgboost-use-system-dmlc-core.patch b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch new file mode 100644 index 0000000000..6209ae1f10 --- /dev/null +++ b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch @@ -0,0 +1,35 @@ +From 34167cc105e47589b86b6f62da76e0ab744002dd Mon Sep 17 00:00:00 2001 +From: Vinicius Monego <monego@posteo.net> +Date: Tue, 11 May 2021 19:35:30 -0300 +Subject: [PATCH] Use dmlc-core from Guix. + +--- +This patch is a subset from the following Debian patch: https://sources.debian.org/src/xgboost/1.2.1-1/debian/patches/cmake.patch/ + +Rabit is now developed as part of xgboost, so we don't build it separately. + + CMakeLists.txt | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6cc19fbd..3b42bc17 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -150,11 +150,9 @@ endif (USE_OPENMP) + + # dmlc-core + msvc_use_static_runtime() +-add_subdirectory(${xgboost_SOURCE_DIR}/dmlc-core) +-set_target_properties(dmlc PROPERTIES +- CXX_STANDARD 14 +- CXX_STANDARD_REQUIRED ON +- POSITION_INDEPENDENT_CODE ON) ++add_library(dmlc SHARED IMPORTED) ++find_library(DMLC_LIBRARY dmlc) ++set_property(TARGET dmlc PROPERTY IMPORTED_LOCATION "${DMLC_LIBRARY}") + if (MSVC) + target_compile_options(dmlc PRIVATE + -D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE) +-- +2.31.1 + -- 2.31.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v2 3/3] gnu: Add python-xgboost. 2021-05-13 15:29 ` [bug#48388] [PATCH v2 2/3] gnu: Add xgboost Vinicius Monego @ 2021-05-13 15:29 ` Vinicius Monego 0 siblings, 0 replies; 14+ messages in thread From: Vinicius Monego @ 2021-05-13 15:29 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (python-xgboost): New variable. --- Added (when tests?) in check phase to allow --without-tests. gnu/packages/machine-learning.scm | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index d81370797f..ead47a534a 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1992,6 +1992,68 @@ tree boosting (also known as GBDT, GBM) that solve many data science problems in a fast and accurate way.") (license license:asl2.0))) +(define-public python-xgboost + (package + (inherit xgboost) + (name "python-xgboost") + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'preparations + (lambda* (#:key inputs #:allow-other-keys) + ;; Move python-package content to parent directory to silence + ;; some warnings about files not being found if we chdir. + (rename-file "python-package/xgboost" "xgboost") + (rename-file "python-package/README.rst" "README.rst") + (rename-file "python-package/setup.cfg" "setup.cfg") + (rename-file "python-package/setup.py" "setup.py") + + (with-directory-excursion "xgboost" + ;; Version is read from a VERSION file, but that file is not + ;; part of the installation. + (substitute* "__init__.py" + (("__version__ = ''") + (string-append "__version__ = " "'" + ,(package-version xgboost) "'"))) + ;; The Python wrapper expects libxgboost to be found in the + ;; same source from where the wrapper builds. This workaround + ;; allows libxgboost to be used from the xgboost package. + (substitute* "libpath.py" + (("XGBOOST_PATH = ''") + (string-append "XGBOOST_PATH = " + "'" (assoc-ref inputs "xgboost") "'")))) + #t)) + (replace 'check + ;; Python-specific tests are located in tests/python. + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "tests/python" + ;; FIXME: CLI tests fail with PermissionError. + "--ignore" "tests/python/test_cli.py" "-k" + (string-append + "not test_cli_regression_demo" + ;; The tests below open a network connection. + " and not test_model_compatibility" + " and not test_get_group" + " and not test_cv_no_shuffle" + " and not test_cv" + " and not test_training" + ;; "'['./runexp.sh']' returned non-zero exit status 1" + " and not test_cli_binary_classification"))) + #t))))) + (native-inputs + `(("python-pandas" ,python-pandas) + ("python-pytest" ,python-pytest) + ("python-scikit-learn" ,python-scikit-learn))) + (inputs + `(("xgboost" ,xgboost))) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy))) + (synopsis "Python interface for the XGBoost library"))) + (define-public python-iml (package (name "python-iml") -- 2.31.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v3 1/3] gnu: Add dmlc-core. 2021-05-12 23:56 [bug#48388] [PATCH 0/3] Add xgboost Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 1/3] gnu: Add dmlc-core Vinicius Monego 2021-05-13 15:29 ` [bug#48388] [PATCH v2 2/3] gnu: Add xgboost Vinicius Monego @ 2021-06-27 17:30 ` Vinicius Monego 2021-06-27 17:30 ` [bug#48388] [PATCH v3 2/3] gnu: Add xgboost Vinicius Monego 2021-06-27 17:30 ` [bug#48388] [PATCH v3 3/3] gnu: Add python-xgboost Vinicius Monego 2021-06-27 23:11 ` [bug#48388] [PATCH v4 " Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 1/3] gnu: Add dmlc-core Vinicius Monego 4 siblings, 2 replies; 14+ messages in thread From: Vinicius Monego @ 2021-06-27 17:30 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (dmlc-core): New variable. --- No changes. gnu/packages/machine-learning.scm | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 837ebbba67..9d6c5505f7 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1927,6 +1927,38 @@ together building blocks and a subclassing API with an imperative style for advanced research.") (license license:asl2.0))) +(define-public dmlc-core + ;; Version 0.4 is too old for xgboost. + (let ((version "0.5") + (commit "f00e3ec7abc9f293a1b7061157b0a4e22a735cf5") + (revision "0")) + (package + (name "dmlc-core") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dmlc/dmlc-core") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1x4ad1jhn84fywlk031fmv1kxyiscclmrqn9hhj8gz0mh7z9vcrh")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DGOOGLE_TEST=ON"))) + (native-inputs + `(("googletest" ,googletest) + ("python" ,python-wrapper))) + (home-page "https://github.com/dmlc/dmlc-core") + (synopsis "Common bricks library for machine learning") + (description + "DMLC-Core is the backbone library to support all DMLC projects, +offers the bricks to build efficient and scalable distributed machine +learning libraries.") + (license license:asl2.0)))) + (define-public python-iml (package (name "python-iml") -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v3 2/3] gnu: Add xgboost. 2021-06-27 17:30 ` [bug#48388] [PATCH v3 1/3] gnu: Add dmlc-core Vinicius Monego @ 2021-06-27 17:30 ` Vinicius Monego 2021-06-27 17:30 ` [bug#48388] [PATCH v3 3/3] gnu: Add python-xgboost Vinicius Monego 1 sibling, 0 replies; 14+ messages in thread From: Vinicius Monego @ 2021-06-27 17:30 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (xgboost): New variable. * gnu/packages/patches/xgboost-use-system-dmlc-core.patch: New patch. * gnu/local.mk (dist_patch_DATA): Add it. --- Removed the python patch, updated to 1.4.2 and removed "in C++" from synopsis. gnu/local.mk | 1 + gnu/packages/machine-learning.scm | 32 +++++++++++++++++ .../xgboost-use-system-dmlc-core.patch | 34 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 gnu/packages/patches/xgboost-use-system-dmlc-core.patch diff --git a/gnu/local.mk b/gnu/local.mk index f7ff9af997..19db9787dc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1842,6 +1842,7 @@ dist_patch_DATA = \ %D%/packages/patches/xf86-video-voodoo-pcitag.patch \ %D%/packages/patches/xfce4-panel-plugins.patch \ %D%/packages/patches/xfce4-settings-defaults.patch \ + %D%/packages/patches/xgboost-use-system-dmlc-core.patch \ %D%/packages/patches/xmonad-dynamic-linking.patch \ %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \ %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch \ diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 9d6c5505f7..bbdfba960e 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1959,6 +1959,38 @@ offers the bricks to build efficient and scalable distributed machine learning libraries.") (license license:asl2.0)))) +(define-public xgboost + (package + (name "xgboost") + (version "1.4.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dmlc/xgboost") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (patches (search-patches "xgboost-use-system-dmlc-core.patch")) + (sha256 + (base32 "00liz816ahk9zj3jv3m2fqwlf6xxfbgvpmpl72iklx32vl192w5d")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags (list "-DGOOGLE_TEST=ON"))) + (native-inputs + `(("googletest" ,googletest) + ("python" ,python-wrapper))) + (inputs + `(("dmlc-core" ,dmlc-core))) + (home-page "https://xgboost.ai/") + (synopsis "Gradient boosting (GBDT, GBRT or GBM) library") + (description + "XGBoost is an optimized distributed gradient boosting library designed +to be highly efficient, flexible and portable. It implements machine learning +algorithms under the Gradient Boosting framework. XGBoost provides a parallel +tree boosting (also known as GBDT, GBM) that solve many data science problems +in a fast and accurate way.") + (license license:asl2.0))) + (define-public python-iml (package (name "python-iml") diff --git a/gnu/packages/patches/xgboost-use-system-dmlc-core.patch b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch new file mode 100644 index 0000000000..c654694fec --- /dev/null +++ b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch @@ -0,0 +1,34 @@ +From 34167cc105e47589b86b6f62da76e0ab744002dd Mon Sep 17 00:00:00 2001 +From: Vinicius Monego <monego@posteo.net> +Date: Tue, 11 May 2021 19:35:30 -0300 +Subject: [PATCH] Use dmlc-core from Guix. + +--- +This patch is a subset of the following Debian patch: https://sources.debian.org/src/xgboost/1.2.1-1/debian/patches/cmake.patch/ + +Rabit is now developed as part of xgboost, so we don't build it separately. + + CMakeLists.txt | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6cc19fbd..3b42bc17 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -150,11 +150,9 @@ endif (USE_OPENMP) + + # dmlc-core + msvc_use_static_runtime() +-add_subdirectory(${xgboost_SOURCE_DIR}/dmlc-core) +-set_target_properties(dmlc PROPERTIES +- CXX_STANDARD 14 +- CXX_STANDARD_REQUIRED ON +- POSITION_INDEPENDENT_CODE ON) ++add_library(dmlc SHARED IMPORTED) ++find_library(DMLC_LIBRARY dmlc) ++set_property(TARGET dmlc PROPERTY IMPORTED_LOCATION "${DMLC_LIBRARY}") + if (MSVC) + target_compile_options(dmlc PRIVATE + -D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE) +-- +2.31.1 -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v3 3/3] gnu: Add python-xgboost. 2021-06-27 17:30 ` [bug#48388] [PATCH v3 1/3] gnu: Add dmlc-core Vinicius Monego 2021-06-27 17:30 ` [bug#48388] [PATCH v3 2/3] gnu: Add xgboost Vinicius Monego @ 2021-06-27 17:30 ` Vinicius Monego 1 sibling, 0 replies; 14+ messages in thread From: Vinicius Monego @ 2021-06-27 17:30 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (python-xgboost): New variable. * gnu/packages/patches/python-xgboost-use-system-libxgboost.patch: New patch. * gnu/local.mk (dist_patch_DATA): Add it. --- Changed source to inherit from xgboost. Added phase after 'install to add a VERSION file and symlink libxgboost, so it can be found at runtime. This change allowed to greatly simplify the patch. Also removed #t from phases. If this patchset is good enough now, I will do the same changes to LightGBM: http://issues.guix.gnu.org/48785 gnu/local.mk | 1 + gnu/packages/machine-learning.scm | 66 +++++++++++++++++++ ...python-xgboost-use-system-libxgboost.patch | 18 +++++ 3 files changed, 85 insertions(+) create mode 100644 gnu/packages/patches/python-xgboost-use-system-libxgboost.patch diff --git a/gnu/local.mk b/gnu/local.mk index 19db9787dc..821fd390a4 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1632,6 +1632,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-unittest2-python3-compat.patch \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ %D%/packages/patches/python-waitress-fix-tests.patch \ + %D%/packages/patches/python-xgboost-use-system-libxgboost.patch \ %D%/packages/patches/pypy3-7.3.1-fix-tests.patch \ %D%/packages/patches/qemu-build-info-manual.patch \ %D%/packages/patches/qemu-CVE-2021-20203.patch \ diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index bbdfba960e..69b96ffd61 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1991,6 +1991,72 @@ tree boosting (also known as GBDT, GBM) that solve many data science problems in a fast and accurate way.") (license license:asl2.0))) +(define-public python-xgboost + (package + (inherit xgboost) + (name "python-xgboost") + (source + (origin + (inherit (package-source xgboost)) + (patches (search-patches "python-xgboost-use-system-libxgboost.patch")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'preparations + (lambda* (#:key inputs #:allow-other-keys) + ;; Move python-package content to parent directory to silence + ;; some warnings about files not being found if we chdir. + (rename-file "python-package/xgboost" "xgboost") + (rename-file "python-package/README.rst" "README.rst") + (rename-file "python-package/setup.cfg" "setup.cfg") + (rename-file "python-package/setup.py" "setup.py"))) + (add-after 'install 'install-version-and-libxgboost + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (pylib (string-append out "/lib/python" + ,(version-major+minor + (package-version python)) + "/site-packages")) + (xgbdir (string-append pylib "/xgboost")) + (version-file (string-append xgbdir "/VERSION")) + (libxgboost (string-append (assoc-ref inputs "xgboost") + "/lib/libxgboost.so"))) + (with-output-to-file version-file + (lambda () + (display ,(package-version xgboost)))) + (mkdir-p (string-append xgbdir "/lib")) + (symlink libxgboost (string-append xgbdir "/lib" + "/libxgboost.so"))))) + (replace 'check + ;; Python-specific tests are located in tests/python. + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "tests/python" + ;; FIXME: CLI tests fail with PermissionError. + "--ignore" "tests/python/test_cli.py" "-k" + (string-append + "not test_cli_regression_demo" + ;; The tests below open a network connection. + " and not test_model_compatibility" + " and not test_get_group" + " and not test_cv_no_shuffle" + " and not test_cv" + " and not test_training" + ;; "'['./runexp.sh']' returned non-zero exit status 1" + " and not test_cli_binary_classification")))))))) + (native-inputs + `(("python-pandas" ,python-pandas) + ("python-pytest" ,python-pytest) + ("python-scikit-learn" ,python-scikit-learn))) + (inputs + `(("xgboost" ,xgboost))) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy))) + (synopsis "Python interface for the XGBoost library"))) + (define-public python-iml (package (name "python-iml") diff --git a/gnu/packages/patches/python-xgboost-use-system-libxgboost.patch b/gnu/packages/patches/python-xgboost-use-system-libxgboost.patch new file mode 100644 index 0000000000..ce82309afd --- /dev/null +++ b/gnu/packages/patches/python-xgboost-use-system-libxgboost.patch @@ -0,0 +1,18 @@ +This patch was imported from Debian: https://sources.debian.org/src/xgboost/1.2.1-1/debian/patches/setup.py.patch/ + +Description: the libxgboost.so has been installed by another package already +Forwarded: no need +--- a/python-package/setup.py ++++ b/python-package/setup.py +@@ -286,10 +286,8 @@ + 'numpy', + 'scipy', + ], +- ext_modules=[CMakeExtension('libxgboost')], + cmdclass={ + 'build_ext': BuildExt, + 'sdist': Sdist, +- 'install_lib': InstallLib, + 'install': Install + }, + extras_require={ \ No newline at end of file -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v4 3/3] gnu: Add python-xgboost. 2021-05-12 23:56 [bug#48388] [PATCH 0/3] Add xgboost Vinicius Monego ` (2 preceding siblings ...) 2021-06-27 17:30 ` [bug#48388] [PATCH v3 1/3] gnu: Add dmlc-core Vinicius Monego @ 2021-06-27 23:11 ` Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 1/3] gnu: Add dmlc-core Vinicius Monego 4 siblings, 0 replies; 14+ messages in thread From: Vinicius Monego @ 2021-06-27 23:11 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (python-xgboost): New variable. --- Replaced the patch file with substitutions in 'preparations and changed the lambda arguments to _. gnu/packages/machine-learning.scm | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 726d491868..b8d79821e0 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1991,6 +1991,73 @@ tree boosting (also known as GBDT, GBM) that solve many data science problems in a fast and accurate way.") (license license:asl2.0))) +(define-public python-xgboost + (package + (inherit xgboost) + (name "python-xgboost") + (source (package-source xgboost)) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'preparations + (lambda _ + ;; Move python-package content to parent directory to silence + ;; some warnings about files not being found if we chdir. + (rename-file "python-package/xgboost" "xgboost") + (rename-file "python-package/README.rst" "README.rst") + (rename-file "python-package/setup.cfg" "setup.cfg") + (rename-file "python-package/setup.py" "setup.py") + ;; Skip rebuilding libxgboost.so. + (substitute* "setup.py" + (("ext_modules=\\[CMakeExtension\\('libxgboost'\\)\\],") "") + (("'install_lib': InstallLib,") "")))) + (add-after 'install 'install-version-and-libxgboost + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (pylib (string-append out "/lib/python" + ,(version-major+minor + (package-version python)) + "/site-packages")) + (xgbdir (string-append pylib "/xgboost")) + (version-file (string-append xgbdir "/VERSION")) + (libxgboost (string-append (assoc-ref inputs "xgboost") + "/lib/libxgboost.so"))) + (with-output-to-file version-file + (lambda () + (display ,(package-version xgboost)))) + (mkdir-p (string-append xgbdir "/lib")) + (symlink libxgboost (string-append xgbdir "/lib" + "/libxgboost.so"))))) + (replace 'check + ;; Python-specific tests are located in tests/python. + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "tests/python" + ;; FIXME: CLI tests fail with PermissionError. + "--ignore" "tests/python/test_cli.py" "-k" + (string-append + "not test_cli_regression_demo" + ;; The tests below open a network connection. + " and not test_model_compatibility" + " and not test_get_group" + " and not test_cv_no_shuffle" + " and not test_cv" + " and not test_training" + ;; "'['./runexp.sh']' returned non-zero exit status 1" + " and not test_cli_binary_classification")))))))) + (native-inputs + `(("python-pandas" ,python-pandas) + ("python-pytest" ,python-pytest) + ("python-scikit-learn" ,python-scikit-learn))) + (inputs + `(("xgboost" ,xgboost))) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy))) + (synopsis "Python interface for the XGBoost library"))) + (define-public python-iml (package (name "python-iml") -- 2.32.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v5 1/3] gnu: Add dmlc-core. 2021-05-12 23:56 [bug#48388] [PATCH 0/3] Add xgboost Vinicius Monego ` (3 preceding siblings ...) 2021-06-27 23:11 ` [bug#48388] [PATCH v4 " Vinicius Monego @ 2021-09-25 19:36 ` Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 2/3] gnu: Add xgboost Vinicius Monego ` (2 more replies) 4 siblings, 3 replies; 14+ messages in thread From: Vinicius Monego @ 2021-09-25 19:36 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (dmlc-core): New variable. --- Checked out from v0.5 tag instead of a commit. gnu/packages/machine-learning.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 9b5d4c1743..a4768211a0 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -2310,6 +2310,34 @@ learning models. This package provides the \"lite\" variant for mobile devices.") (license license:asl2.0))) +(define-public dmlc-core + (package + (name "dmlc-core") + (version "0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dmlc/dmlc-core") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1x4ad1jhn84fywlk031fmv1kxyiscclmrqn9hhj8gz0mh7z9vcrh")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DGOOGLE_TEST=ON"))) + (native-inputs + `(("googletest" ,googletest) + ("python" ,python-wrapper))) + (home-page "https://github.com/dmlc/dmlc-core") + (synopsis "Common bricks library for machine learning") + (description + "DMLC-Core is the backbone library to support all DMLC projects, +offers the bricks to build efficient and scalable distributed machine +learning libraries.") + (license license:asl2.0))) + (define-public python-iml (package (name "python-iml") -- 2.30.2 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v5 2/3] gnu: Add xgboost. 2021-09-25 19:36 ` [bug#48388] [PATCH v5 1/3] gnu: Add dmlc-core Vinicius Monego @ 2021-09-25 19:36 ` Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 3/3] gnu: Add python-xgboost Vinicius Monego 2021-09-25 20:14 ` bug#48388: [PATCH v5 1/3] gnu: Add dmlc-core Leo Famulari 2 siblings, 0 replies; 14+ messages in thread From: Vinicius Monego @ 2021-09-25 19:36 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (xgboost): New variable. * gnu/packages/patches/xgboost-use-system-dmlc-core.patch: New patch. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/machine-learning.scm | 32 +++++++++++++++++ .../xgboost-use-system-dmlc-core.patch | 34 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 gnu/packages/patches/xgboost-use-system-dmlc-core.patch diff --git a/gnu/local.mk b/gnu/local.mk index 7d706f6f6e..22fc393f0e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1888,6 +1888,7 @@ dist_patch_DATA = \ %D%/packages/patches/xf86-video-voodoo-pcitag.patch \ %D%/packages/patches/xfce4-panel-plugins.patch \ %D%/packages/patches/xfce4-settings-defaults.patch \ + %D%/packages/patches/xgboost-use-system-dmlc-core.patch \ %D%/packages/patches/xmonad-dynamic-linking.patch \ %D%/packages/patches/xnnpack-system-libraries.patch \ %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \ diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index a4768211a0..454088b1a5 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -2338,6 +2338,38 @@ offers the bricks to build efficient and scalable distributed machine learning libraries.") (license license:asl2.0))) +(define-public xgboost + (package + (name "xgboost") + (version "1.4.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dmlc/xgboost") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (patches (search-patches "xgboost-use-system-dmlc-core.patch")) + (sha256 + (base32 "00liz816ahk9zj3jv3m2fqwlf6xxfbgvpmpl72iklx32vl192w5d")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags (list "-DGOOGLE_TEST=ON"))) + (native-inputs + `(("googletest" ,googletest) + ("python" ,python-wrapper))) + (inputs + `(("dmlc-core" ,dmlc-core))) + (home-page "https://xgboost.ai/") + (synopsis "Gradient boosting (GBDT, GBRT or GBM) library") + (description + "XGBoost is an optimized distributed gradient boosting library designed +to be highly efficient, flexible and portable. It implements machine learning +algorithms under the Gradient Boosting framework. XGBoost provides a parallel +tree boosting (also known as GBDT, GBM) that solve many data science problems +in a fast and accurate way.") + (license license:asl2.0))) + (define-public python-iml (package (name "python-iml") diff --git a/gnu/packages/patches/xgboost-use-system-dmlc-core.patch b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch new file mode 100644 index 0000000000..c654694fec --- /dev/null +++ b/gnu/packages/patches/xgboost-use-system-dmlc-core.patch @@ -0,0 +1,34 @@ +From 34167cc105e47589b86b6f62da76e0ab744002dd Mon Sep 17 00:00:00 2001 +From: Vinicius Monego <monego@posteo.net> +Date: Tue, 11 May 2021 19:35:30 -0300 +Subject: [PATCH] Use dmlc-core from Guix. + +--- +This patch is a subset of the following Debian patch: https://sources.debian.org/src/xgboost/1.2.1-1/debian/patches/cmake.patch/ + +Rabit is now developed as part of xgboost, so we don't build it separately. + + CMakeLists.txt | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6cc19fbd..3b42bc17 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -150,11 +150,9 @@ endif (USE_OPENMP) + + # dmlc-core + msvc_use_static_runtime() +-add_subdirectory(${xgboost_SOURCE_DIR}/dmlc-core) +-set_target_properties(dmlc PROPERTIES +- CXX_STANDARD 14 +- CXX_STANDARD_REQUIRED ON +- POSITION_INDEPENDENT_CODE ON) ++add_library(dmlc SHARED IMPORTED) ++find_library(DMLC_LIBRARY dmlc) ++set_property(TARGET dmlc PROPERTY IMPORTED_LOCATION "${DMLC_LIBRARY}") + if (MSVC) + target_compile_options(dmlc PRIVATE + -D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE) +-- +2.31.1 -- 2.30.2 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [bug#48388] [PATCH v5 3/3] gnu: Add python-xgboost. 2021-09-25 19:36 ` [bug#48388] [PATCH v5 1/3] gnu: Add dmlc-core Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 2/3] gnu: Add xgboost Vinicius Monego @ 2021-09-25 19:36 ` Vinicius Monego 2021-09-25 20:14 ` bug#48388: [PATCH v5 1/3] gnu: Add dmlc-core Leo Famulari 2 siblings, 0 replies; 14+ messages in thread From: Vinicius Monego @ 2021-09-25 19:36 UTC (permalink / raw) To: 48388; +Cc: Vinicius Monego * gnu/packages/machine-learning.scm (python-xgboost): New variable. --- Skipped a test that fails in Pandas 1.3.0. gnu/packages/machine-learning.scm | 69 +++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 454088b1a5..5e17b09e89 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -2370,6 +2370,75 @@ tree boosting (also known as GBDT, GBM) that solve many data science problems in a fast and accurate way.") (license license:asl2.0))) +(define-public python-xgboost + (package + (inherit xgboost) + (name "python-xgboost") + (source (package-source xgboost)) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'preparations + (lambda _ + ;; Move python-package content to parent directory to silence + ;; some warnings about files not being found if we chdir. + (rename-file "python-package/xgboost" "xgboost") + (rename-file "python-package/README.rst" "README.rst") + (rename-file "python-package/setup.cfg" "setup.cfg") + (rename-file "python-package/setup.py" "setup.py") + ;; Skip rebuilding libxgboost.so. + (substitute* "setup.py" + (("ext_modules=\\[CMakeExtension\\('libxgboost'\\)\\],") "") + (("'install_lib': InstallLib,") "")))) + (add-after 'install 'install-version-and-libxgboost + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (pylib (string-append out "/lib/python" + ,(version-major+minor + (package-version python)) + "/site-packages")) + (xgbdir (string-append pylib "/xgboost")) + (version-file (string-append xgbdir "/VERSION")) + (libxgboost (string-append (assoc-ref inputs "xgboost") + "/lib/libxgboost.so"))) + (with-output-to-file version-file + (lambda () + (display ,(package-version xgboost)))) + (mkdir-p (string-append xgbdir "/lib")) + (symlink libxgboost (string-append xgbdir "/lib" + "/libxgboost.so"))))) + (replace 'check + ;; Python-specific tests are located in tests/python. + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "tests/python" + ;; FIXME: CLI tests fail with PermissionError. + "--ignore" "tests/python/test_cli.py" "-k" + (string-append + "not test_cli_regression_demo" + ;; The tests below open a network connection. + " and not test_model_compatibility" + " and not test_get_group" + " and not test_cv_no_shuffle" + " and not test_cv" + " and not test_training" + ;; FIXME: May pass in the next version. + " and not test_pandas" + ;; "'['./runexp.sh']' returned non-zero exit status 1" + " and not test_cli_binary_classification")))))))) + (native-inputs + `(("python-pandas" ,python-pandas) + ("python-pytest" ,python-pytest) + ("python-scikit-learn" ,python-scikit-learn))) + (inputs + `(("xgboost" ,xgboost))) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy))) + (synopsis "Python interface for the XGBoost library"))) + (define-public python-iml (package (name "python-iml") -- 2.30.2 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* bug#48388: [PATCH v5 1/3] gnu: Add dmlc-core. 2021-09-25 19:36 ` [bug#48388] [PATCH v5 1/3] gnu: Add dmlc-core Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 2/3] gnu: Add xgboost Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 3/3] gnu: Add python-xgboost Vinicius Monego @ 2021-09-25 20:14 ` Leo Famulari 2 siblings, 0 replies; 14+ messages in thread From: Leo Famulari @ 2021-09-25 20:14 UTC (permalink / raw) To: Vinicius Monego; +Cc: 48388-done On Sat, Sep 25, 2021 at 07:36:49PM +0000, Vinicius Monego wrote: > * gnu/packages/machine-learning.scm (dmlc-core): New variable. Thanks! I pushed v5 of this patch series as commit 40a6d8eb7de42248c886c447a299256853054912 ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2021-09-25 20:15 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-05-12 23:56 [bug#48388] [PATCH 0/3] Add xgboost Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 1/3] gnu: Add dmlc-core Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 2/3] gnu: Add xgboost Vinicius Monego 2021-05-12 23:58 ` [bug#48388] [PATCH 3/3] gnu: Add python-xgboost Vinicius Monego 2021-05-13 15:29 ` [bug#48388] [PATCH v2 2/3] gnu: Add xgboost Vinicius Monego 2021-05-13 15:29 ` [bug#48388] [PATCH v2 3/3] gnu: Add python-xgboost Vinicius Monego 2021-06-27 17:30 ` [bug#48388] [PATCH v3 1/3] gnu: Add dmlc-core Vinicius Monego 2021-06-27 17:30 ` [bug#48388] [PATCH v3 2/3] gnu: Add xgboost Vinicius Monego 2021-06-27 17:30 ` [bug#48388] [PATCH v3 3/3] gnu: Add python-xgboost Vinicius Monego 2021-06-27 23:11 ` [bug#48388] [PATCH v4 " Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 1/3] gnu: Add dmlc-core Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 2/3] gnu: Add xgboost Vinicius Monego 2021-09-25 19:36 ` [bug#48388] [PATCH v5 3/3] gnu: Add python-xgboost Vinicius Monego 2021-09-25 20:14 ` bug#48388: [PATCH v5 1/3] gnu: Add dmlc-core Leo Famulari
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.