119 lines
6.9 KiB
Python
119 lines
6.9 KiB
Python
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class PyScikitLearn(PythonPackage):
|
|
"""A set of python modules for machine learning and data mining."""
|
|
|
|
pypi = "scikit-learn/scikit-learn-0.24.0.tar.gz"
|
|
git = "https://github.com/scikit-learn/scikit-learn.git"
|
|
|
|
maintainers = ["adamjstewart"]
|
|
|
|
version("master", branch="master")
|
|
version("1.1.2", sha256="7c22d1305b16f08d57751a4ea36071e2215efb4c09cb79183faa4e8e82a3dbf8")
|
|
version("1.1.1", sha256="3e77b71e8e644f86c8b5be7f1c285ef597de4c384961389ee3e9ca36c445b256")
|
|
version("1.1.0", sha256="80f9904f5b1356adfc32406725dd94c8cc9c8d265047d98390033a6c238cbb29")
|
|
version("1.0.2", sha256="b5870959a5484b614f26d31ca4c17524b1b0317522199dc985c3b4256e030767")
|
|
version("1.0.1", sha256="ac2ca9dbb754d61cfe1c83ba8483498ef951d29b93ec09d6f002847f210a99da")
|
|
version("1.0", sha256="776800194e757cd212b47cd05907e0eb67a554ad333fe76776060dbb729e3427")
|
|
version("0.24.2", sha256="d14701a12417930392cd3898e9646cf5670c190b933625ebe7511b1f7d7b8736")
|
|
version("0.24.1", sha256="a0334a1802e64d656022c3bfab56a73fbd6bf4b1298343f3688af2151810bbdf")
|
|
version("0.24.0", sha256="076369634ee72b5a5941440661e2f306ff4ac30903802dc52031c7e9199ac640")
|
|
version("0.23.2", sha256="20766f515e6cd6f954554387dfae705d93c7b544ec0e6c6a5d8e006f6f7ef480")
|
|
version("0.23.1", sha256="e3fec1c8831f8f93ad85581ca29ca1bb88e2da377fb097cf8322aa89c21bc9b8")
|
|
version("0.23.0", sha256="639a53df6273acc6a7510fb0c658b94e0c70bb13dafff9d14932c981ff9baff4")
|
|
version(
|
|
"0.22.2.post1", sha256="57538d138ba54407d21e27c306735cbd42a6aae0df6a5a30c7a6edde46b0017d"
|
|
)
|
|
version("0.22.1", sha256="51ee25330fc244107588545c70e2f3570cfc4017cff09eed69d6e1d82a212b7d")
|
|
version("0.22", sha256="314abf60c073c48a1e95feaae9f3ca47a2139bd77cebb5b877c23a45c9e03012")
|
|
version("0.21.3", sha256="eb9b8ebf59eddd8b96366428238ab27d05a19e89c5516ce294abc35cea75d003")
|
|
version("0.21.2", sha256="0aafc312a55ebf58073151b9308761a5fcfa45b7f7730cea4b1f066f824c72db")
|
|
version("0.21.1", sha256="228d0611e69e5250946f8cd7bbefec75347950f0ca426d0c518db8f06583f660")
|
|
version("0.20.3", sha256="c503802a81de18b8b4d40d069f5e363795ee44b1605f38bc104160ca3bfe2c41")
|
|
version("0.20.2", sha256="bc5bc7c7ee2572a1edcb51698a6caf11fae554194aaab9a38105d9ec419f29e6")
|
|
version("0.20.0", sha256="97d1d971f8ec257011e64b7d655df68081dd3097322690afa1a71a1d755f8c18")
|
|
version("0.19.2", sha256="b276739a5f863ccacb61999a3067d0895ee291c95502929b2ae56ea1f882e888")
|
|
version("0.19.1", sha256="5ca0ad32ee04abe0d4ba02c8d89d501b4e5e0304bdf4d45c2e9875a735b323a0")
|
|
version("0.18.1", sha256="1eddfc27bb37597a5d514de1299981758e660e0af56981c0bfdf462c9568a60c")
|
|
version("0.15.2", sha256="1a8a881f6f13edc0ac58931ce21f899eb7920af50aa08802413d1239e2aa5fa6")
|
|
version("0.16.1", sha256="c0721e295056c95c7002e05726f2bd271a7923e88bdeab34a2b60aac2b0ee6e4")
|
|
version("0.17.1", sha256="9f4cf58e57d81783289fc503caaed1f210bab49b7a6f680bf3c04b1e0a96e5f0")
|
|
version("0.13.1", sha256="a6e4759a779ba792435d096c882a0d66ee29d369755c09209f1a4e50877bdc94")
|
|
|
|
variant("openmp", default=True, description="Build with OpenMP support")
|
|
|
|
# setup.py
|
|
depends_on("python@2.6:2.8,3.3:", type=("build", "run"))
|
|
depends_on("python@2.7:2.8,3.4:", when="@0.20:", type=("build", "run"))
|
|
depends_on("python@3.5:", when="@0.21:", type=("build", "run"))
|
|
depends_on("python@3.6:", when="@0.23:", type=("build", "run"))
|
|
depends_on("python@3.7:", when="@1.0:", type=("build", "run"))
|
|
depends_on("python@3.8:", when="@1.1:", type=("build", "run"))
|
|
|
|
# pyproject.toml
|
|
depends_on("py-setuptools", type="build")
|
|
depends_on("py-setuptools@:59", when="@1.0.2:", type="build")
|
|
|
|
# sklearn/_min_dependencies.py
|
|
depends_on("py-numpy@1.6.1:", when="@:0.19", type=("build", "run"))
|
|
depends_on("py-numpy@1.8.2:", when="@0.20", type=("build", "run"))
|
|
depends_on("py-numpy@1.11.0:", when="@0.21:", type=("build", "run"))
|
|
depends_on("py-numpy@1.13.3:", when="@0.23:", type=("build", "run"))
|
|
depends_on("py-numpy@1.14.6:", when="@1.0:", type=("build", "run"))
|
|
depends_on("py-numpy@1.17.3:", when="@1.1:", type=("build", "run"))
|
|
depends_on("py-scipy@0.9:", when="@:0.19", type=("build", "run"))
|
|
depends_on("py-scipy@0.13.3:", when="@0.20", type=("build", "run"))
|
|
depends_on("py-scipy@0.17.0:", when="@0.21:", type=("build", "run"))
|
|
depends_on("py-scipy@0.19.1:", when="@0.23:", type=("build", "run"))
|
|
depends_on("py-scipy@1.1.0:", when="@1.0:", type=("build", "run"))
|
|
depends_on("py-scipy@1.3.2:", when="@1.1:", type=("build", "run"))
|
|
depends_on("py-joblib@0.11:", type=("build", "run"))
|
|
depends_on("py-joblib@1:", when="@1.1:", type=("build", "run"))
|
|
depends_on("py-threadpoolctl@2.0.0:", when="@0.23:", type=("build", "run"))
|
|
depends_on("py-cython@0.23:", type="build")
|
|
depends_on("py-cython@0.28.5:", when="@0.21:", type="build")
|
|
depends_on("py-cython@0.29.24:", when="@1.0.2:", type="build")
|
|
depends_on("llvm-openmp", when="@0.21: %apple-clang +openmp")
|
|
|
|
# Test dependencies
|
|
depends_on("py-matplotlib@3.1.2:", type="test")
|
|
depends_on("py-scikit-image@0.16.2:", type="test")
|
|
depends_on("py-pandas@1.0.5:", type="test")
|
|
depends_on("py-pytest@5.0.1:", type="test")
|
|
depends_on("py-pyamg@4:", type="test")
|
|
|
|
# Release tarballs are already cythonized. If you wanted to build a release
|
|
# version without OpenMP support, you would need to delete all .c files
|
|
# that include omp.h, as well as PKG-INFO.
|
|
# See https://github.com/scikit-learn/scikit-learn/issues/14332
|
|
conflicts("~openmp", when="@:999", msg="Only master supports ~openmp")
|
|
|
|
def setup_build_environment(self, env):
|
|
# enable parallel builds of the sklearn backend
|
|
env.append_flags("SKLEARN_BUILD_PARALLEL", str(make_jobs))
|
|
|
|
# https://scikit-learn.org/stable/developers/advanced_installation.html#building-from-source
|
|
if self.spec.satisfies("~openmp"):
|
|
env.set("SKLEARN_NO_OPENMP", "True")
|
|
# https://scikit-learn.org/stable/developers/advanced_installation.html#mac-osx
|
|
elif self.spec.satisfies("@0.21: %apple-clang +openmp"):
|
|
env.append_flags("CPPFLAGS", self.compiler.openmp_flag)
|
|
env.append_flags("CFLAGS", self.spec["llvm-openmp"].headers.include_flags)
|
|
env.append_flags("CXXFLAGS", self.spec["llvm-openmp"].headers.include_flags)
|
|
env.append_flags("LDFLAGS", self.spec["llvm-openmp"].libs.ld_flags)
|
|
|
|
@run_after("install")
|
|
@on_package_attributes(run_tests=True)
|
|
def install_test(self):
|
|
# https://scikit-learn.org/stable/developers/advanced_installation.html#testing
|
|
with working_dir("spack-test", create=True):
|
|
pytest = which("pytest")
|
|
pytest(join_path(self.prefix, python_purelib, "sklearn"))
|