Downloads source code from git repo (#41751)
This commit is contained in:
parent
542d7a6d6d
commit
49e5771430
@ -15,15 +15,12 @@ class Roms(MakefilePackage):
|
|||||||
the scientific community for a diverse range of applications"""
|
the scientific community for a diverse range of applications"""
|
||||||
|
|
||||||
homepage = "https://www.myroms.org/"
|
homepage = "https://www.myroms.org/"
|
||||||
url = "file://{0}/roms_3.8_source.tar.gz".format(os.getcwd())
|
url = "https://github.com/myroms/roms/archive/refs/tags/roms-4.1.tar.gz"
|
||||||
manual_download = True
|
|
||||||
|
|
||||||
# TODO: ROMS v3.8 (svn version 986) require credentials to download and use
|
version("4.1", sha256="cf25625066be3ea40fdd7bbe361f830d4415170636163b05bd338ac299809d4e")
|
||||||
# Spack recipe expects ROMS source code in .tar.gz format
|
version("4.0", sha256="d14b4920e791ad24684f439c4751c2f1c38dbf9b82aa0d4d57def93e50a5a747")
|
||||||
# checksum may differ from what is provided here.
|
version("3.9", sha256="8e93f6ed40040e3f1b88d456ea9411ed3c06f280dc50b2787d6e5f793f58f1bc")
|
||||||
# user can skip checksum verification by placing "--no-checksum"
|
version("3.8", sha256="99fb69239e70edaef35771d82e203e43cd301dde4f2a5662da038499b7258ae7")
|
||||||
# next to "spack install"
|
|
||||||
version("3.8", sha256="5da7a61b69bd3e1f84f33f894a9f418971f3ba61cf9f5ef0a806a722161e2c9a")
|
|
||||||
|
|
||||||
variant("openmp", default=False, description="Turn on shared-memory parallelization in ROMS")
|
variant("openmp", default=False, description="Turn on shared-memory parallelization in ROMS")
|
||||||
variant("mpi", default=True, description="Turn on distributed-memory parallelization in ROMS")
|
variant("mpi", default=True, description="Turn on distributed-memory parallelization in ROMS")
|
||||||
@ -77,22 +74,16 @@ def _edit_arch(self, spec, prefix, lib):
|
|||||||
"""
|
"""
|
||||||
Edit Linux-flang.mk makefile to support AOCC compiler
|
Edit Linux-flang.mk makefile to support AOCC compiler
|
||||||
"""
|
"""
|
||||||
fflags = [
|
fflags = ["-fveclib=AMDLIBM", "-O3", "-ffast-math", "-funroll-loops", "-std=f2008"]
|
||||||
"-fveclib=AMDLIBM",
|
|
||||||
"-O3",
|
|
||||||
"-ffast-math",
|
|
||||||
"-funroll-loops",
|
|
||||||
"-Mstack_arrays",
|
|
||||||
"-std=f2008",
|
|
||||||
]
|
|
||||||
make_aocc = join_path("Compilers", "{0}-{1}.mk".format(self.arch, lib))
|
make_aocc = join_path("Compilers", "{0}-{1}.mk".format(self.arch, lib))
|
||||||
|
|
||||||
filter_file(r"\sFC := gfortran*$", "FC := {0}".format(lib), make_aocc)
|
filter_file(r"\sFC := gfortran*$", " FC := {0}".format(lib), make_aocc)
|
||||||
filter_file(r"\sFFLAGS\s:=.*$", "FFLAGS := {0}".format(" ".join(fflags)), make_aocc)
|
filter_file(r"\sFFLAGS :=.*$", " FFLAGS := {0}".format(" ".join(fflags)), make_aocc)
|
||||||
|
filter_file("-fallow-argument-mismatch", "", make_aocc, string=True)
|
||||||
filter_file(
|
filter_file(
|
||||||
r"\sLIBS\s:= [$]", "LIBS := {0} $".format(spec["amdlibm"].libs.ld_flags), make_aocc
|
r"\sLIBS :=.*", " LIBS := {0}".format(spec["amdlibm"].libs.ld_flags), make_aocc
|
||||||
)
|
)
|
||||||
filter_file(r"\sFREEFLAGS\s:=.*", "FREEFLAGS := -ffree-form", make_aocc)
|
filter_file(r"\sFREEFLAGS :=.*", " FREEFLAGS := -ffree-form", make_aocc)
|
||||||
|
|
||||||
def edit(self, spec, prefix):
|
def edit(self, spec, prefix):
|
||||||
# ROMS doesn't have support for AOCC out of the box
|
# ROMS doesn't have support for AOCC out of the box
|
||||||
@ -102,6 +93,14 @@ def edit(self, spec, prefix):
|
|||||||
self._copy_arch_file(lib_info)
|
self._copy_arch_file(lib_info)
|
||||||
self._edit_arch(spec, prefix, lib_info)
|
self._edit_arch(spec, prefix, lib_info)
|
||||||
|
|
||||||
|
# With gfortran >= 10 requires '-fallow-argument-mismatch' flag
|
||||||
|
if spec.satisfies("@:4.0 %gcc@10:"):
|
||||||
|
filter_file(
|
||||||
|
r"\sFFLAGS := ",
|
||||||
|
" FFLAGS := -fallow-argument-mismatch ",
|
||||||
|
"Compilers/Linux-gfortran.mk",
|
||||||
|
)
|
||||||
|
|
||||||
makefile = FileFilter("makefile")
|
makefile = FileFilter("makefile")
|
||||||
|
|
||||||
app_type = self.selected_roms_application
|
app_type = self.selected_roms_application
|
||||||
@ -144,4 +143,8 @@ def build(self, spec, prefix):
|
|||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
mkdirp(prefix.bin)
|
mkdirp(prefix.bin)
|
||||||
|
# Keep ROMS External Standard input scripts
|
||||||
|
mkdirp(spec.prefix.ROMS)
|
||||||
|
|
||||||
install("roms*", prefix.bin)
|
install("roms*", prefix.bin)
|
||||||
|
install_tree("./ROMS/External", join_path(spec.prefix.ROMS.External))
|
||||||
|
Loading…
Reference in New Issue
Block a user