143 lines
5.0 KiB
Python
143 lines
5.0 KiB
Python
# Copyright 2013-2023 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 PlanckLikelihood(Package):
|
|
"""2015 Cosmic Microwave Background (CMB) spectra and likelihood code"""
|
|
|
|
homepage = (
|
|
"https://wiki.cosmos.esa.int/planckpla2015/index.php/CMB_spectrum_%26_Likelihood_Code"
|
|
)
|
|
url = "https://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Code-v2.0.R2.00.tar.bz2"
|
|
|
|
version(
|
|
"2.00",
|
|
sha256="c1efa208175b2751e75b2ad1c026dae744a7dd279eb74baa5db3098bc9c971bb",
|
|
url="https://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Code-v2.0.R2.00.tar.bz2",
|
|
)
|
|
|
|
variant("lensing-ext", default=False, description="Provide lensing-ext data")
|
|
variant("plik-DS", default=False, description="Provide plik-DS data")
|
|
variant("plik-HM-ext", default=False, description="Provide plik-HM-ext data")
|
|
variant("plik-unbinned", default=False, description="Provide plik-unbinned data")
|
|
|
|
patch("fortran.patch")
|
|
patch("make.patch")
|
|
patch("arm.patch", when="target=aarch64:")
|
|
|
|
resource(
|
|
name="baseline",
|
|
url="https://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-baseline_R2.00.tar.gz",
|
|
sha256="7c62c5afc105bff28c2da3eddb870b8180536d30e31c4d419b307ad3996e17ab",
|
|
destination=".",
|
|
)
|
|
resource(
|
|
name="lensing-ext",
|
|
url="https://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-extra-lensing-ext.R2.00.tar.gz",
|
|
sha256="0c017984bfd12315b94958f48f8e61e625361a84066838976f676fb5c2e76dbc",
|
|
destination=".",
|
|
when="+lensing-ext",
|
|
)
|
|
resource(
|
|
name="plik-DS",
|
|
url="https://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-extra-plik-DS.R2.00.tar.gz",
|
|
sha256="f6b5ec6b284ea71008f071503faf8319dac48c3ea7fb13f5e5cbd23fff3efd84",
|
|
destination=".",
|
|
when="+plik-DS",
|
|
)
|
|
resource(
|
|
name="plik-HM-ext",
|
|
url="https://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-extra-plik-HM-ext.R2.00.tar.gz",
|
|
sha256="b5b8ead297b31f9b2e4913b54b1d3bbe272075f85ce2ca9bf5d99dbbe1559f77",
|
|
destination=".",
|
|
when="+plik-HM-ext",
|
|
)
|
|
resource(
|
|
name="plik-unbinned",
|
|
url="https://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-extra-plik-unbinned.R2.00.tar.gz",
|
|
sha256="69cdfee40d63a8b60b1f715d4e276d76693ec1a6f1b2658abac2b8d7dff4fa44",
|
|
destination=".",
|
|
when="+plik-unbinned",
|
|
)
|
|
|
|
depends_on("blas")
|
|
depends_on("cfitsio +shared")
|
|
depends_on("lapack")
|
|
|
|
# Note: Could also install Python bindings
|
|
|
|
parallel = False
|
|
|
|
def install(self, spec, prefix):
|
|
# Configure
|
|
|
|
# Don't hide build commands
|
|
filter_file("^\t@", "\t", "Makefile")
|
|
|
|
makeflags = [
|
|
"PREFIX=%s" % prefix,
|
|
"COLORS=0",
|
|
"CFITSIOPATH=%s" % spec["cfitsio"].prefix,
|
|
"CC=cc",
|
|
"FC=fc",
|
|
"IFORTLIBPATH=",
|
|
"IFORTRUNTIME=-lintlc -limf -lsvml -liomp5 -lifportmt -lifcoremt",
|
|
"GFORTRANLIBPATH=",
|
|
"GFORTRANRUNTIME=-lgfortran -lgomp",
|
|
"LAPACKLIBPATH=",
|
|
"LAPACK=%s" % (spec["lapack"].libs + spec["blas"].libs).ld_flags,
|
|
"COPENMP=%s" % self.compiler.openmp_flag,
|
|
"FOPENMP=%s" % self.compiler.openmp_flag,
|
|
]
|
|
|
|
# Build
|
|
make(*makeflags)
|
|
|
|
# Install
|
|
make("install", *makeflags)
|
|
fix_darwin_install_name(prefix.lib)
|
|
dirs = ["plc_2.0"]
|
|
if "+lensing-ext" in spec:
|
|
dirs.append("lensing_ext")
|
|
if "+plik-DS" in spec:
|
|
dirs.append("plik_DS")
|
|
if "+plik-HM-ext" in spec:
|
|
dirs.append("plik_HM_ext")
|
|
if "+plik-unbinned" in spec:
|
|
dirs.append("plik_unbinned")
|
|
for dir in dirs:
|
|
install_tree(dir, join_path(prefix, "share", "clik", dir))
|
|
|
|
def setup_dependent_build_environment(self, env, dependent_spec):
|
|
env.set("CLIK_PATH", self.prefix)
|
|
env.set("CLIK_DATA", self.prefix.share.clik)
|
|
env.set("CLIK_PLUGIN", "rel2015")
|
|
|
|
def setup_run_environment(self, env):
|
|
env.set("CLIK_PATH", self.prefix)
|
|
env.set("CLIK_DATA", self.prefix.share.clik)
|
|
env.set("CLIK_PLUGIN", "rel2015")
|
|
|
|
@run_after("install")
|
|
@on_package_attributes(run_tests=True)
|
|
def check_install(self):
|
|
prefix = self.prefix
|
|
clik_example_c = Executable(join_path(prefix.bin, "clik_example_C"))
|
|
with working_dir("spack-check", create=True):
|
|
clik_example_c(
|
|
join_path(
|
|
prefix,
|
|
"share",
|
|
"clik",
|
|
"plc_2.0",
|
|
"hi_l",
|
|
"plik",
|
|
"plik_dx11dr2_HM_v18_TT.clik",
|
|
)
|
|
)
|