summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc T. Henry de Frahan <marc.henrydefrahan@nrel.gov>2024-05-03 01:58:35 -0600
committerGitHub <noreply@github.com>2024-05-03 01:58:35 -0600
commit7008bb63352c59b5bcaa688e136ba3bf8e34fc03 (patch)
tree594313bef4b3c0a947eba87ca0beb5083103607c
parent14561fafffbcf311775f8a4844a8b0faffaed40c (diff)
downloadspack-7008bb63352c59b5bcaa688e136ba3bf8e34fc03.tar.gz
spack-7008bb63352c59b5bcaa688e136ba3bf8e34fc03.tar.bz2
spack-7008bb63352c59b5bcaa688e136ba3bf8e34fc03.tar.xz
spack-7008bb63352c59b5bcaa688e136ba3bf8e34fc03.zip
Add rosco package (#43822)
* Add rosco package * format * remove unused * Add in other versions * start adding some patches * finish adding the patches
-rw-r--r--var/spack/repos/builtin/packages/rosco/intel-oneapi-29.patch13
-rw-r--r--var/spack/repos/builtin/packages/rosco/intel-oneapi-2x.patch13
-rw-r--r--var/spack/repos/builtin/packages/rosco/package.py63
3 files changed, 89 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/rosco/intel-oneapi-29.patch b/var/spack/repos/builtin/packages/rosco/intel-oneapi-29.patch
new file mode 100644
index 0000000000..58d6e4bd07
--- /dev/null
+++ b/var/spack/repos/builtin/packages/rosco/intel-oneapi-29.patch
@@ -0,0 +1,13 @@
+diff --git a/rosco/controller/CMakeLists.txt b/rosco/controller/CMakeLists.txt
+index 0d29085..46705c2 100644
+--- a/rosco/controller/CMakeLists.txt
++++ b/rosco/controller/CMakeLists.txt
+@@ -11,7 +11,7 @@ endif()
+ message(STATUS "CMAKE_Fortran_COMPILER_ID = ${CMAKE_Fortran_COMPILER_ID}")
+ if(APPLE OR UNIX)
+ # Enable .dll export
+-if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
++if (CMAKE_Fortran_COMPILER_ID MATCHES "^Intel")
+ set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DIMPLICIT_DLLEXPORT -r8 -double-size 64 -cpp -no-wrap-margin")
+ else()
+ set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DIMPLICIT_DLLEXPORT -ffree-line-length-0 -fdefault-real-8 -fdefault-double-8 -cpp")
diff --git a/var/spack/repos/builtin/packages/rosco/intel-oneapi-2x.patch b/var/spack/repos/builtin/packages/rosco/intel-oneapi-2x.patch
new file mode 100644
index 0000000000..fce7258e20
--- /dev/null
+++ b/var/spack/repos/builtin/packages/rosco/intel-oneapi-2x.patch
@@ -0,0 +1,13 @@
+diff --git a/ROSCO/CMakeLists.txt b/ROSCO/CMakeLists.txt
+index b450a30..9506267 100644
+--- a/ROSCO/CMakeLists.txt
++++ b/ROSCO/CMakeLists.txt
+@@ -11,7 +11,7 @@ endif()
+ message(STATUS "CMAKE_Fortran_COMPILER_ID = ${CMAKE_Fortran_COMPILER_ID}")
+ if(APPLE OR UNIX)
+ # Enable .dll export
+-if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
++if (CMAKE_Fortran_COMPILER_ID MATCHES "^Intel")
+ set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DIMPLICIT_DLLEXPORT -r8 -double-size 64 -cpp -no-wrap-margin")
+ else()
+ set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DIMPLICIT_DLLEXPORT -ffree-line-length-0 -fdefault-real-8 -fdefault-double-8 -cpp")
diff --git a/var/spack/repos/builtin/packages/rosco/package.py b/var/spack/repos/builtin/packages/rosco/package.py
new file mode 100644
index 0000000000..8ef734e1fd
--- /dev/null
+++ b/var/spack/repos/builtin/packages/rosco/package.py
@@ -0,0 +1,63 @@
+# Copyright 2013-2024 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 Rosco(CMakePackage):
+ """
+ ROSCO controls package for OpenFAST from NREL
+ Note: this only builds ROSCO controls library for inclusion with OpenFAST
+ If the toolbox or tuning scripts are needed, please build manually
+ """
+
+ homepage = "https://rosco.readthedocs.io/en/latest/"
+ url = "https://github.com/NREL/ROSCO/archive/refs/tags/v2.9.0.tar.gz"
+ git = "https://github.com/NREL/ROSCO.git"
+
+ maintainers("dzalkind", "ndevelder")
+
+ version("develop", branch="develop")
+ version("main", branch="main")
+ version("2.9.0", sha256="eb7f6220207b8a07c9570fb64bab591906b0c19d73ac4c24bb8dca252722ca79")
+ version("2.8.0", sha256="7a2e3a7bebdf6ee73884a9e3502f904cc3a3f1aa1bf672c223ecbaa041bfc48f")
+ version("2.7.0", sha256="b6a2cda92680cf6a460d194901a2f16c2635710a82788576a6383a3bb189fc83")
+ version("2.6.0", sha256="ca1c1a6ac53e8220b107accccfb8b5299772c38b7c77cd8d2ba383e9825daeaa")
+ version("2.5.1", sha256="55fe7bba612321baa6e089ee1156ef4db2e3bccf1b69534829b06f3367fff05d")
+
+ variant("shared", default=False, description="Build shared libraries")
+ variant("pic", default=False, description="Position independent code")
+
+ patch("intel-oneapi-2x.patch", when="@2.5:2.8%oneapi")
+ patch("intel-oneapi-29.patch", when="@2.9.0:2.9.1%oneapi")
+
+ @property
+ def root_cmakelists_dir(self):
+ if self.spec.version >= Version("2.9.0"):
+ return "rosco/controller"
+ else:
+ return "ROSCO"
+
+ def cmake_args(self):
+ options = []
+
+ options.extend(
+ [
+ self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
+ self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
+ ]
+ )
+
+ return options
+
+ def setup_run_environment(self, env):
+ env.set("ROSCO_DISCON", self.prefix.lib + "/libdiscon.so")
+ env.set("ROSCO_DISCON_DIR", self.prefix.lib)
+
+ def flag_handler(self, name, flags):
+ if name == "fflags" and self.compiler.fc.endswith("gfortran"):
+ flags.extend(["-ffree-line-length-0"])
+
+ return (None, None, flags)