new packages: r-cmdstanr and cmdstan (#32364)
This commit is contained in:
parent
925a99a043
commit
c2291f7eb3
83
var/spack/repos/builtin/packages/cmdstan/package.py
Normal file
83
var/spack/repos/builtin/packages/cmdstan/package.py
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# 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 Cmdstan(MakefilePackage):
|
||||||
|
"""CmdStan is the command line interface to Stan."""
|
||||||
|
|
||||||
|
homepage = "https://mc-stan.org/users/interfaces/cmdstan"
|
||||||
|
url = "https://github.com/stan-dev/cmdstan/releases/download/v2.30.1/cmdstan-2.30.1.tar.gz"
|
||||||
|
|
||||||
|
version("2.30.1", sha256="bab76dcefa7f4c955595c0bf0496770507fc6ab0df5896e8cf8c2db0a17eedb9")
|
||||||
|
|
||||||
|
variant("threads", default=True, description="enable thread support")
|
||||||
|
variant("opencl", default=False, description="enable OpenCl support")
|
||||||
|
variant("mpi", default=False, description="enable MPI support")
|
||||||
|
|
||||||
|
depends_on("opencl", when="+opencl")
|
||||||
|
depends_on("mpi", when="+mpi")
|
||||||
|
|
||||||
|
build_targets = ["build"]
|
||||||
|
|
||||||
|
filter_compiler_wrappers("local", relative_root="make")
|
||||||
|
|
||||||
|
def edit(self, spec, prefix):
|
||||||
|
if spec.compiler.name == "intel":
|
||||||
|
cxx_type = "icc"
|
||||||
|
else:
|
||||||
|
cxx_type = spec.compiler.name
|
||||||
|
|
||||||
|
if "+mpi" in spec:
|
||||||
|
cxx = spec["mpi"].mpicxx
|
||||||
|
else:
|
||||||
|
cxx = spack_cxx
|
||||||
|
|
||||||
|
make_options = [
|
||||||
|
"CXX={0}\n".format(cxx),
|
||||||
|
"CXXFLAGS+= -O2 -funroll-loops\n",
|
||||||
|
"LDFLAGS+={0}{1}\n".format(
|
||||||
|
self.compiler.cc_rpath_arg,
|
||||||
|
join_path(prefix, "stan", "lib", "stan_math", "lib", "tbb"),
|
||||||
|
),
|
||||||
|
"STANCFLAGS+= --warn-pedantic\n",
|
||||||
|
"TBB_CXX_TYPE={0}\n".format(cxx_type),
|
||||||
|
]
|
||||||
|
|
||||||
|
if "+threads" in spec:
|
||||||
|
make_options.append("STAN_THREADS=true\n")
|
||||||
|
|
||||||
|
if "+opencl" in spec:
|
||||||
|
make_options.append("STAN_OPENCL=true\n")
|
||||||
|
|
||||||
|
if "+mpi" in spec:
|
||||||
|
make_options.append("STAN_MPI=true\n")
|
||||||
|
|
||||||
|
filepath = join_path(self.stage.source_path, "make", "local")
|
||||||
|
with open(filepath, "w") as make_file:
|
||||||
|
make_file.writelines(make_options)
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
make(join_path("examples", "bernoulli", "bernoulli"))
|
||||||
|
|
||||||
|
mkdir(prefix.bin)
|
||||||
|
|
||||||
|
with working_dir(self.build_directory):
|
||||||
|
copy("makefile", prefix)
|
||||||
|
copy_tree("make", prefix.make)
|
||||||
|
copy_tree("examples", prefix.examples)
|
||||||
|
copy_tree("lib", prefix.lib)
|
||||||
|
copy_tree("src", prefix.src)
|
||||||
|
copy_tree("stan", prefix.stan)
|
||||||
|
|
||||||
|
with working_dir(join_path(self.build_directory, "bin")):
|
||||||
|
install("diagnose", prefix.bin)
|
||||||
|
install("print", prefix.bin)
|
||||||
|
install("stanc", prefix.bin)
|
||||||
|
install("stansummary", prefix.bin)
|
||||||
|
|
||||||
|
def setup_run_environment(self, env):
|
||||||
|
env.set("CMDSTAN", self.prefix)
|
34
var/spack/repos/builtin/packages/r-cmdstanr/package.py
Normal file
34
var/spack/repos/builtin/packages/r-cmdstanr/package.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# 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 RCmdstanr(RPackage):
|
||||||
|
"""R Interface to 'CmdStan'.
|
||||||
|
|
||||||
|
A lightweight interface to 'Stan' <https://mc-stan.org>. The 'CmdStanR'
|
||||||
|
interface is an alternative to 'RStan' that calls the command line
|
||||||
|
interface for compilation and running algorithms instead of interfacing
|
||||||
|
with C++ via 'Rcpp'. This has many benefits including always being
|
||||||
|
compatible with the latest version of Stan, fewer installation errors,
|
||||||
|
fewer unexpected crashes in RStudio, and a more permissive license."""
|
||||||
|
|
||||||
|
homepage = "https://mc-stan.org/cmdstanr/"
|
||||||
|
url = "https://github.com/stan-dev/cmdstanr/archive/refs/tags/v0.5.3.tar.gz"
|
||||||
|
|
||||||
|
version("0.5.3", sha256="dafd5808e1a17d2e4ae4048437235b4399464a7c65de68ba4af0ab2b03e27871")
|
||||||
|
version("0.5.2", sha256="5bc2e164e7cce3bfb93d592df5e3059157c8d510b136535bdb6d09c3ef060f64")
|
||||||
|
version("0.5.1", sha256="5b3e83d48c19d309ccca720979449a8ac130ba7e443e70992b1771a1dd9124c9")
|
||||||
|
|
||||||
|
depends_on("r@3.5.0:", type=("build", "run"))
|
||||||
|
depends_on("r-checkmate", type=("build", "run"))
|
||||||
|
depends_on("r-data-table", type=("build", "run"))
|
||||||
|
depends_on("r-jsonlite@1.2.0:", type=("build", "run"))
|
||||||
|
depends_on("r-posterior@1.1.0:", type=("build", "run"))
|
||||||
|
depends_on("r-processx@3.5.0:", type=("build", "run"))
|
||||||
|
depends_on("r-r6@2.4.0:", type=("build", "run"))
|
||||||
|
depends_on("r-withr@2.5.0:", type=("build", "run"), when="@0.5.2:")
|
||||||
|
depends_on("cmdstan", type="run")
|
Loading…
Reference in New Issue
Block a user