summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Pinnow <pinnow2@llnl.gov>2019-12-17 16:18:24 -0800
committerAdam J. Stewart <ajstewart426@gmail.com>2019-12-17 18:18:24 -0600
commit60a22f1a7a71a7387235b7daa5b9d96d2824050c (patch)
tree904842fcb4bdaaafa74d27acfe1faa2bd833c631
parent5db646d7686e682e7686ff2b8f44a13c42bfd990 (diff)
downloadspack-60a22f1a7a71a7387235b7daa5b9d96d2824050c.tar.gz
spack-60a22f1a7a71a7387235b7daa5b9d96d2824050c.tar.bz2
spack-60a22f1a7a71a7387235b7daa5b9d96d2824050c.tar.xz
spack-60a22f1a7a71a7387235b7daa5b9d96d2824050c.zip
Update and Fix ROSE Package (#14186)
* rose: Update boost dependency for rose * rose: Updated rose to version 0.9.12.45 * rose: Updated jdk dependency * rose: Updated rose to version 0.9.13.0 * rose: Fixed formatting * rose: Added maintainer and switch dependency to java@8
-rw-r--r--var/spack/repos/builtin/packages/rose/package.py153
1 files changed, 70 insertions, 83 deletions
diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py
index 90b6d0d6dd..9a772cb7b0 100644
--- a/var/spack/repos/builtin/packages/rose/package.py
+++ b/var/spack/repos/builtin/packages/rose/package.py
@@ -3,10 +3,6 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-# -----------------------------------------------------------------------------
-# Author: Justin Too
-# -----------------------------------------------------------------------------
-
from spack import *
@@ -16,17 +12,49 @@ class Rose(AutotoolsPackage):
(Developed at Lawrence Livermore National Lab)"""
homepage = "http://rosecompiler.org/"
- url = "https://github.com/rose-compiler/rose-develop/archive/v0.9.10.0.zip"
- git = "https://github.com/rose-compiler/rose-develop.git"
+ url = "https://github.com/rose-compiler/rose/archive/v0.9.13.0.zip"
+ git = "https://github.com/rose-compiler/rose.git"
+
+ maintainers = ['pinnown']
# --------------------------------------------------------------------------
# ROSE Versions
# --------------------------------------------------------------------------
- version("0.9.10.0", sha256="7b53b6913fd6ca0c5050b630dae380f3e6b0897cde6148172ba01095f71cbaca")
- # git versions
- version("0.9.9.52", commit="bd4fc0cc332ce62d9fa54db19879507d9e4f239b")
- version("develop", branch="master")
+ version("0.9.13.0", sha256="64092793dfd38d476152696721e29a410bb31dc3eeb6064c7520087aa8c904a6")
+
+ # Version for edg binary is found in src/frontend/CxxFrontend/EDG_VERSION
+ # EDG_VERSION may be different from ROSE_VERSION
+ resource(name="roseBinaryEDG-5-0-x86_64-pc-linux-gnu-gnu-4.9-5.0.9.12.52.tar.gz",
+ expand=False,
+ placement="rose-build/src/frontend/CxxFrontend/",
+ when="@0.9.13.0 %gcc@4.9.0:4.9.99",
+ url="http://edg-binaries.rosecompiler.org/roseBinaryEDG-5-0-x86_64-pc-linux-gnu-gnu-4.9-5.0.9.12.52.tar.gz",
+ sha256="fb4b50606bdc681b864bbece46d344d7775780ffe7883aa96305d732c9c04a1c")
+
+ resource(name="roseBinaryEDG-5-0-x86_64-pc-linux-gnu-gnu-5-5.0.9.12.52.tar.gz",
+ expand=False,
+ placement="rose-build/src/frontend/CxxFrontend/",
+ when="@0.9.13.0 %gcc@5.0:5.99",
+ url="http://edg-binaries.rosecompiler.org/roseBinaryEDG-5-0-x86_64-pc-linux-gnu-gnu-5-5.0.9.12.52.tar.gz",
+ sha256="584f8f721274f0f2d5c9a0c7701c045af99580ea7cd1d50999e20c2a897298fb")
+
+ resource(name="roseBinaryEDG-5-0-x86_64-pc-linux-gnu-gnu-6-5.0.9.12.52.tar.gz",
+ expand=False,
+ placement="rose-build/src/frontend/CxxFrontend/",
+ when="@0.9.13.0 %gcc@6.0:6.99",
+ url="http://edg-binaries.rosecompiler.org/roseBinaryEDG-5-0-x86_64-pc-linux-gnu-gnu-6-5.0.9.12.52.tar.gz",
+ sha256="561cd5a944d0dd01689aa0bea8eccf30fc994cd20c4c05da7943c6f36cec25b5")
+
+ resource(name="roseBinaryEDG-5-0-x86_64-pc-linux-gnu-gnu-7-5.0.9.12.52.tar.gz",
+ expand=False,
+ placement="rose-build/src/frontend/CxxFrontend/",
+ when="@0.9.13.0 %gcc@7.0:7.99",
+ url="http://edg-binaries.rosecompiler.org/roseBinaryEDG-5-0-x86_64-pc-linux-gnu-gnu-7-5.0.9.12.52.tar.gz",
+ sha256="800a178804e8b5e936942b4eb036cc61e5d5ad43551cb4fd901ec42ba7e7a176")
+
+ # git versions depends on internet connection at build time
+ version("develop", branch="develop")
# --------------------------------------------------------------------------
# Dependencies
@@ -34,15 +62,10 @@ class Rose(AutotoolsPackage):
depends_on("autoconf@2.69:", type="build")
depends_on("automake@1.14:", type="build")
depends_on("libtool@2.4:", type="build")
- depends_on("boost@1.56.0:", when="~cxx11")
# C++11 compatible boost and gcc versions required for +cxx11 variant:
- # https://github.com/spack/spack/wiki/Telcon%3A-2015-05-14
- depends_on("boost@1.60.0: cxxstd=11", when="+cxx11")
-
- # TODO: Doesn't seem to be a way to require a specific compiler: https://github.com/spack/spack/issues/896
- # https://www.gnu.org/software/gcc/projects/cxx-status.html#cxx11
- # depends_on("%gcc@4.8.1:", when="^boost@1.60.0: cxxstd=11")
+ depends_on("boost@1.60.0:1.64.0,1.65.1,1.66.0:1.67.0 cxxstd=11", when="+cxx11")
+ depends_on("boost@1.60.0:1.64.0,1.65.1,1.66.0:1.67.0", when="~cxx11")
# --------------------------------------------------------------------------
# Variants
@@ -53,6 +76,8 @@ class Rose(AutotoolsPackage):
variant("tests", default=False, description="Build the tests directory")
variant("tutorial", default=False, description="Build the tutorial directory")
+ variant("tools", default=False, description="Build a selection of ROSE based tools")
+
variant(
"mvapich2_backend",
default=False,
@@ -68,12 +93,10 @@ class Rose(AutotoolsPackage):
variant("cxx", default=True, description="Enable c++ language support")
# Use spack install cxxflags=-std=c++11
- variant("cxx11", default=False, description="Enable c++11 language support")
+ variant("cxx11", default=True, description="Enable c++11 language support")
variant("fortran", default=False, description="Enable fortran language support")
-
- variant("java", default=False, description="Enable java language support")
- depends_on("jdk", when="+java")
+ depends_on("java@8", when="+fortran")
variant("z3", default=False, description="Enable z3 theorem prover")
depends_on("z3", when="+z3")
@@ -98,34 +121,7 @@ class Rose(AutotoolsPackage):
build_directory = "rose-build"
- def patch(self):
- spec = self.spec
-
- # ROSE needs its to compute its EDG
- # binary compatibility signature for C/C++ and for its
- # --version information.
- #
- # git rev-parse HEAD
- # git log -1 --format="%at"
- #
- with open("VERSION", "w") as f:
- if "@0.9.9.104:" in spec:
- # EDG: 27acd506c6b0e4b1c5f7573c642e3e407237eddd
- f.write("66c87e9395126a7ab8663d81f0e0b99d6e09131e 1504924600")
- elif "@0.9.9.0:" in spec:
- # EDG: 46306e9f73d3ccd690be300aefdaf766a9ba3f70
- f.write("14d3ebdd7f83cbcc295e6ed45b45d2e9ed32b5ff 1492716108")
- elif "@0.9.7.0:" in spec:
- # EDG: 8e63f421f9107ef6c7882b57f9c83e3878623ffa
- f.write("992c21ad06893bc1e9e7688afe0562eee0fda021 1460595442")
- elif "@0.9.10.0:" in spec:
- # EDG: f4624773cb93dfcc67a00efb5e9e8affeb57fb73
- f.write("277fea7e1e5305e5b3c86b550a0c1354e8285b96 1523991417")
- else:
- raise InstallError("Unknown ROSE version!")
-
def autoreconf(self, spec, prefix):
- # if not spec.satisfies('@develop'):
with working_dir(self.stage.source_path):
bash = which("bash")
bash("build")
@@ -145,7 +141,6 @@ class Rose(AutotoolsPackage):
"binaries" if "+binanalysis" in spec else "",
"c" if "+c" in spec else "",
"c++" if "+cxx" in spec else "",
- "java" if "+java" in spec else "",
"fortran" if "+fortran" in spec else "",
]
return list(filter(None, langs))
@@ -160,14 +155,8 @@ class Rose(AutotoolsPackage):
cc = spack_cc
cxx = spack_cxx
- if spec.satisfies("@0.9.8:"):
- edg = "4.12"
- else:
- edg = "4.9"
-
args = [
"--disable-boost-version-check",
- "--enable-edg_version={0}".format(edg),
"--with-alternate_backend_C_compiler={0}".format(cc),
"--with-alternate_backend_Cxx_compiler={0}".format(cxx),
"--with-boost={0}".format(spec["boost"].prefix),
@@ -189,7 +178,7 @@ class Rose(AutotoolsPackage):
else:
args.append("--disable-tutorial-directory")
- if "+java" in spec:
+ if "+fortran" in spec:
args.append("--with-java={0}".format(spec["java"].prefix))
else:
args.append("--without-java")
@@ -223,45 +212,23 @@ class Rose(AutotoolsPackage):
# $ srun -n1 spack install rose
#
with working_dir(self.build_directory):
- # ROSE needs the EDG version for C/C++
- with open("src/frontend/CxxFrontend/EDG-submodule-sha1", "w") as f:
- if "@0.9.9.104" in spec:
- f.write("27acd506c6b0e4b1c5f7573c642e3e407237eddd")
- elif "@0.9.9.52" in spec:
- f.write("56a826126289414db5436e6c49879b99d046d26d")
- elif "@0.9.9.0" in spec:
- f.write("46306e9f73d3ccd690be300aefdaf766a9ba3f70")
- elif "@0.9.7.0" in spec:
- f.write("8e63f421f9107ef6c7882b57f9c83e3878623ffa")
- elif "@0.9.10.0" in spec:
- f.write("f4624773cb93dfcc67a00efb5e9e8affeb57fb73")
- else:
- raise InstallError("Unknown ROSE version for EDG!")
# Compile librose
- with working_dir("src"):
- make()
-
- # Install librose
- with working_dir("src"):
- make("install")
+ make("core")
- # Install "official" ROSE-based tools
- make("install-core")
-
- with working_dir("tools"):
- make("install")
+ if "+tools" in spec:
+ make("tools")
# -----------------------------------------------------------------
# ROSE-based Projects
# -----------------------------------------------------------------
if "+codethorn" in spec:
with working_dir("projects/CodeThorn"):
- make("install")
+ make()
if "+autopar" in spec:
with working_dir("projects/autoParallelization"):
- make("install")
+ make()
if "+polyopt" in spec:
mkdir = which("mkdir")
@@ -277,3 +244,23 @@ class Rose(AutotoolsPackage):
"projects/PolyOpt2/install.sh"
)
)
+
+ def install(self, spec, prefix):
+ with working_dir(self.build_directory):
+
+ # Compile and Install librose
+ make("install-core")
+
+ if "+tools" in spec:
+ make("install-tools")
+
+ # -----------------------------------------------------------------
+ # ROSE-based Projects
+ # -----------------------------------------------------------------
+ if "+codethorn" in spec:
+ with working_dir("projects/CodeThorn"):
+ make("install")
+
+ if "+autopar" in spec:
+ with working_dir("projects/autoParallelization"):
+ make("install")