scalasca + dependencies : simplified build after #255
This commit is contained in:
		| @@ -1,58 +1,55 @@ | ||||
| # FIXME: Add copyright statement | ||||
| ############################################################################## | ||||
| # Copyright (c) 2013, Lawrence Livermore National Security, LLC. | ||||
| # Produced at the Lawrence Livermore National Laboratory. | ||||
| # | ||||
| # This file is part of Spack. | ||||
| # Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. | ||||
| # LLNL-CODE-647188 | ||||
| # | ||||
| # For details, see https://github.com/llnl/spack | ||||
| # Please also see the LICENSE file for our notice and the LGPL. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License (as published by | ||||
| # the Free Software Foundation) version 2.1 dated February 1999. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, but | ||||
| # WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and | ||||
| # conditions of the GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public License | ||||
| # along with this program; if not, write to the Free Software Foundation, | ||||
| # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
| ############################################################################## | ||||
|  | ||||
| from spack import * | ||||
| from contextlib import closing | ||||
|  | ||||
|  | ||||
| class Cube(Package): | ||||
|     """Cube the profile viewer for Score-P and Scalasca profiles. It  | ||||
|        displays a multi-dimensional performance space consisting  | ||||
|        of the dimensions (i) performance metric, (ii) call path,  | ||||
|        and (iii) system resource.""" | ||||
|     """ | ||||
|     Cube the profile viewer for Score-P and Scalasca profiles. It displays a multi-dimensional performance space | ||||
|     consisting of the dimensions: | ||||
|     - performance metric | ||||
|     - call path | ||||
|     - system resource | ||||
|     """ | ||||
|  | ||||
|     homepage = "http://www.scalasca.org/software/cube-4.x/download.html" | ||||
|     url      = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz" | ||||
|     url = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz" | ||||
|  | ||||
|     version('4.3.3', '07e109248ed8ffc7bdcce614264a2909', | ||||
|             url='http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3.3.tar.gz') | ||||
|  | ||||
|     version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20') | ||||
|     version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20', | ||||
|             url="http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz") | ||||
|  | ||||
|     version('4.3TP1', 'a2090fbc7b2ba394bd5c09ba971e237f',  | ||||
|             url = 'http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3-TP1.tar.gz') | ||||
|  | ||||
|     # Using CC as C++ compiler provides quirky workaround for a Score-P build system attempt  | ||||
|     # to guess a matching C compiler when configuring scorep-score | ||||
|     backend_user_provided = """\ | ||||
| CC=cc | ||||
| CXX=CC | ||||
| F77=f77 | ||||
| FC=f90 | ||||
| #CFLAGS=-fPIC | ||||
| #CXXFLAGS=-fPIC | ||||
| """ | ||||
|     frontend_user_provided = """\ | ||||
| CC_FOR_BUILD=cc | ||||
| CXX_FOR_BUILD=CC | ||||
| F77_FOR_BUILD=f70 | ||||
| FC_FOR_BUILD=f90 | ||||
| """ | ||||
|     # TODO : add variant that builds GUI on top of Qt | ||||
|  | ||||
|     def install(self, spec, prefix): | ||||
|         # Use a custom compiler configuration, otherwise the score-p | ||||
|         # build system messes with spack's compiler settings. | ||||
|         # Create these three files in the build directory | ||||
|  | ||||
|         with closing(open("vendor/common/build-config/platforms/platform-backend-user-provided", "w")) as backend_file: | ||||
|             backend_file.write(self.backend_user_provided) | ||||
|         with closing(open("vendor/common/build-config/platforms/platform-frontend-user-provided", "w")) as frontend_file: | ||||
|             frontend_file.write(self.frontend_user_provided) | ||||
|  | ||||
|         configure_args = ["--prefix=%s" % prefix, | ||||
|                           "--with-custom-compilers", | ||||
|                           "--without-paraver",  | ||||
|                           "--without-paraver", | ||||
|                           "--without-gui"] | ||||
|  | ||||
|         configure(*configure_args) | ||||
|  | ||||
|         make(parallel=False) | ||||
|         make("install", parallel=False) | ||||
|   | ||||
| @@ -1,18 +1,38 @@ | ||||
| # FIXME: Add copyright statement here  | ||||
| ############################################################################## | ||||
| # Copyright (c) 2013, Lawrence Livermore National Security, LLC. | ||||
| # Produced at the Lawrence Livermore National Laboratory. | ||||
| # | ||||
| # This file is part of Spack. | ||||
| # Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. | ||||
| # LLNL-CODE-647188 | ||||
| # | ||||
| # For details, see https://github.com/llnl/spack | ||||
| # Please also see the LICENSE file for our notice and the LGPL. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License (as published by | ||||
| # the Free Software Foundation) version 2.1 dated February 1999. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, but | ||||
| # WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and | ||||
| # conditions of the GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public License | ||||
| # along with this program; if not, write to the Free Software Foundation, | ||||
| # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
| ############################################################################## | ||||
|  | ||||
| from spack import * | ||||
| from contextlib import closing | ||||
|  | ||||
| class Opari2(Package): | ||||
|     """OPARI2 is a source-to-source instrumentation tool for OpenMP and  | ||||
|        hybrid codes. It surrounds OpenMP directives and runtime library  | ||||
|        calls with calls to the POMP2 measurement interface. | ||||
|        OPARI2 will provide you with a new initialization method that allows  | ||||
|        for multi-directory and parallel builds as well as the usage of  | ||||
|        pre-instrumented libraries. Furthermore, an efficient way of  | ||||
|        tracking parent-child relationships was added. Additionally, we  | ||||
|        extended OPARI2 to support instrumentation of OpenMP 3.0  | ||||
|        tied tasks. """ | ||||
|     """ | ||||
|     OPARI2 is a source-to-source instrumentation tool for OpenMP and hybrid codes. It surrounds OpenMP directives and | ||||
|     runtime library calls with calls to the POMP2 measurement interface. OPARI2 will provide you with a new | ||||
|     initialization method that allows for multi-directory and parallel builds as well as the usage of pre-instrumented | ||||
|     libraries. Furthermore, an efficient way of tracking parent-child relationships was added. Additionally, we extended | ||||
|     OPARI2 to support instrumentation of OpenMP 3.0 tied tasks. | ||||
|     """ | ||||
|  | ||||
|     homepage = "http://www.vi-hps.org/projects/score-p" | ||||
|     url      = "http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.2.tar.gz" | ||||
| @@ -21,47 +41,8 @@ class Opari2(Package): | ||||
|             url='http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.4.tar.gz') | ||||
|     version('1.1.2', '9a262c7ca05ff0ab5f7775ae96f3539e') | ||||
|  | ||||
|     backend_user_provided = """\ | ||||
| CC=cc | ||||
| CXX=c++ | ||||
| F77=f77 | ||||
| FC=f90 | ||||
| CFLAGS=-fPIC | ||||
| CXXFLAGS=-fPIC | ||||
| """ | ||||
|     frontend_user_provided = """\ | ||||
| CC_FOR_BUILD=cc | ||||
| CXX_FOR_BUILD=c++ | ||||
| F77_FOR_BUILD=f70 | ||||
| FC_FOR_BUILD=f90 | ||||
| CFLAGS_FOR_BUILD=-fPIC | ||||
| CXXFLAGS_FOR_BUILD=-fPIC | ||||
| """ | ||||
|     mpi_user_provided = """\ | ||||
| MPICC=mpicc | ||||
| MPICXX=mpicxx | ||||
| MPIF77=mpif77 | ||||
| MPIFC=mpif90 | ||||
| MPI_CFLAGS=-fPIC | ||||
| MPI_CXXFLAGS=-fPIC | ||||
| """ | ||||
|  | ||||
|     def install(self, spec, prefix): | ||||
|         # Use a custom compiler configuration, otherwise the score-p | ||||
|         # build system messes with spack's compiler settings. | ||||
|         # Create these three files in the build directory | ||||
|         with closing(open("platform-backend-user-provided", "w")) as backend_file: | ||||
|             backend_file.write(self.backend_user_provided) | ||||
|         with closing(open("platform-frontend-user-provided", "w")) as frontend_file: | ||||
|             frontend_file.write(self.frontend_user_provided) | ||||
|         with closing(open("platform-mpi-user-provided", "w")) as mpi_file: | ||||
|             mpi_file.write(self.mpi_user_provided)             | ||||
|  | ||||
|         # FIXME: Modify the configure line to suit your build system here. | ||||
|         configure("--prefix=%s" % prefix, | ||||
|                   "--with-custom-compilers", | ||||
|                   "--enable-shared") | ||||
|  | ||||
|         # FIXME: Add logic to build and install here | ||||
|         make() | ||||
|         make("install") | ||||
|   | ||||
| @@ -1,12 +1,35 @@ | ||||
| # FIXME: Add copyright | ||||
| ############################################################################## | ||||
| # Copyright (c) 2013, Lawrence Livermore National Security, LLC. | ||||
| # Produced at the Lawrence Livermore National Laboratory. | ||||
| # | ||||
| # This file is part of Spack. | ||||
| # Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. | ||||
| # LLNL-CODE-647188 | ||||
| # | ||||
| # For details, see https://github.com/llnl/spack | ||||
| # Please also see the LICENSE file for our notice and the LGPL. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License (as published by | ||||
| # the Free Software Foundation) version 2.1 dated February 1999. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, but | ||||
| # WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and | ||||
| # conditions of the GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public License | ||||
| # along with this program; if not, write to the Free Software Foundation, | ||||
| # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
| ############################################################################## | ||||
|  | ||||
| from spack import * | ||||
| from contextlib import closing | ||||
| import os | ||||
|  | ||||
|  | ||||
| class Otf2(Package): | ||||
|     """The Open Trace Format 2 is a highly scalable, memory efficient event | ||||
|        trace data format plus support library.""" | ||||
|     """ | ||||
|     The Open Trace Format 2 is a highly scalable, memory efficient event trace data format plus support library. | ||||
|     """ | ||||
|  | ||||
|     homepage = "http://www.vi-hps.org/score-p" | ||||
|     url      = "http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz" | ||||
| @@ -22,57 +45,11 @@ class Otf2(Package): | ||||
|     version('1.2.1', '8fb3e11fb7489896596ae2c7c83d7fc8', | ||||
|             url="http://www.vi-hps.org/upload/packages/otf2/otf2-1.2.1.tar.gz") | ||||
|  | ||||
|     backend_user_provided = """\ | ||||
| CC=cc | ||||
| CXX=c++ | ||||
| F77=f77 | ||||
| FC=f90 | ||||
| CFLAGS=-fPIC | ||||
| CXXFLAGS=-fPIC | ||||
| """ | ||||
|     frontend_user_provided = """\ | ||||
| CC_FOR_BUILD=cc | ||||
| CXX_FOR_BUILD=c++ | ||||
| F77_FOR_BUILD=f70 | ||||
| FC_FOR_BUILD=f90 | ||||
| CFLAGS_FOR_BUILD=-fPIC | ||||
| CXXFLAGS_FOR_BUILD=-fPIC | ||||
| """ | ||||
|     mpi_user_provided = """\ | ||||
| MPICC=cc | ||||
| MPICXX=c++ | ||||
| MPIF77=f77 | ||||
| MPIFC=f90 | ||||
| MPI_CFLAGS=-fPIC | ||||
| MPI_CXXFLAGS=-fPIC | ||||
| """ | ||||
|  | ||||
|     @when('@:1.2.1') | ||||
|     def version_specific_args(self): | ||||
|         return ["--with-platform=disabled", "CC=cc", "CXX=c++", "F77=f77", "F90=f90", "CFLAGS=-fPIC", "CXXFLAGS=-fPIC"] | ||||
|  | ||||
|     @when('@1.3:') | ||||
|     def version_specific_args(self): | ||||
|         # TODO: figure out what scorep's build does as of otf2 1.3 | ||||
|         return ["--with-custom-compilers"] | ||||
|  | ||||
|     def install(self, spec, prefix): | ||||
|         # Use a custom compiler configuration, otherwise the score-p | ||||
|         # build system messes with spack's compiler settings. | ||||
|         # Create these three files in the build directory | ||||
|         with closing(open("platform-backend-user-provided", "w")) as backend_file: | ||||
|             backend_file.write(self.backend_user_provided) | ||||
|         with closing(open("platform-frontend-user-provided", "w")) as frontend_file: | ||||
|             frontend_file.write(self.frontend_user_provided) | ||||
|         with closing(open("platform-mpi-user-provided", "w")) as mpi_file: | ||||
|             mpi_file.write(self.mpi_user_provided)             | ||||
|  | ||||
|         configure_args=["--prefix=%s" % prefix, | ||||
|                         "--enable-shared"] | ||||
|  | ||||
|         configure_args.extend(self.version_specific_args()) | ||||
|  | ||||
|                         "--enable-shared", | ||||
|                         "CFLAGS=-fPIC", | ||||
|                         "CXXFLAGS=-fPIC"] | ||||
|         configure(*configure_args) | ||||
|  | ||||
|         make() | ||||
|         make("install") | ||||
|   | ||||
| @@ -44,7 +44,7 @@ class Scalasca(Package): | ||||
|  | ||||
|     depends_on("mpi") | ||||
|     ########## | ||||
|     # Fix dependencies for Scalasca according to what stated in the release page | ||||
|     # Hard-code dependencies for Scalasca according to what stated in the release page | ||||
|     # The OTF2 library path should be detected automatically from SCOREP | ||||
|     # SCALASCA 2.2.2 | ||||
|     depends_on("scorep@1.4:", when='@2.2.2') | ||||
|   | ||||
| @@ -28,9 +28,9 @@ | ||||
|  | ||||
| class Scorep(Package): | ||||
|     """ | ||||
|     The Score-P measurement infrastructure is a highly scalable and | ||||
|        easy-to-use tool suite for profiling, event tracing, and online | ||||
|        analysis of HPC applications.""" | ||||
|     The Score-P measurement infrastructure is a highly scalable and easy-to-use tool suite for profiling, event | ||||
|     tracing, and online analysis of HPC applications. | ||||
|     """ | ||||
|  | ||||
|     homepage = "http://www.vi-hps.org/projects/score-p" | ||||
|     url      = "http://www.vi-hps.org/upload/packages/scorep/scorep-1.2.3.tar.gz" | ||||
| @@ -55,15 +55,6 @@ class Scorep(Package): | ||||
|     depends_on("mpi") | ||||
|     depends_on("papi") | ||||
|  | ||||
|     def get_compiler_config_line(self): | ||||
|         backend_user_provided = ['CC=%s' % self.compiler.cc_names[0], | ||||
|                                  'CXX=%s' % self.compiler.cxx_names[0], | ||||
|                                  'F77=%s' % self.compiler.f77_names[0] if len(self.compiler.f77_names) else "", | ||||
|                                  'FC=%s' % self.compiler.fc_names[0] if len(self.compiler.fc_names) else "", | ||||
|                                  'CFLAGS=-fPIC %s' % self.rpath_args, | ||||
|                                  'CXXFLAGS=-fPIC %s'% self.rpath_args] | ||||
|         return backend_user_provided | ||||
|  | ||||
|     def install(self, spec, prefix): | ||||
|         configure = Executable( join_path(self.stage.source_path, 'configure') ) | ||||
|         with working_dir('spack-build', create=True): | ||||
| @@ -73,8 +64,9 @@ def install(self, spec, prefix): | ||||
|                               "--with-cube=%s" % spec['cube'].prefix.bin, | ||||
|                               "--with-papi-header=%s" % spec['papi'].prefix.include, | ||||
|                               "--with-papi-lib=%s" % spec['papi'].prefix.lib, | ||||
|                               "--enable-shared"] | ||||
|             configure_args.extend(self.get_compiler_config_line()) | ||||
|                               "--enable-shared", | ||||
|                               "CFLAGS=-fPIC", | ||||
|                               "CXXFLAGS=-fPIC"] | ||||
|             configure(*configure_args) | ||||
|             make() | ||||
|             make("install") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 alalazo
					alalazo