new packages: r-cmdstanr and cmdstan (#32364)

This commit is contained in:
Glenn Johnson 2022-08-25 13:58:31 -05:00 committed by GitHub
parent 925a99a043
commit c2291f7eb3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 117 additions and 0 deletions

View 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)

View 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")