From ccfaec7b1c0dbf76d92ee14983a8da3b687260dd Mon Sep 17 00:00:00 2001 From: François Trahay Date: Mon, 14 Mar 2022 11:32:19 +0100 Subject: eztrace: new version and refactor for cmake/autotools build (#29458) --- .../repos/builtin/packages/eztrace/package.py | 77 ++++++++++++++++++---- 1 file changed, 63 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/eztrace/package.py b/var/spack/repos/builtin/packages/eztrace/package.py index 9bcf88b21c..b610beb29a 100644 --- a/var/spack/repos/builtin/packages/eztrace/package.py +++ b/var/spack/repos/builtin/packages/eztrace/package.py @@ -6,21 +6,78 @@ from spack import * -class Eztrace(AutotoolsPackage): +class Eztrace(Package): """EZTrace is a tool to automatically generate execution traces of HPC applications.""" - homepage = "https://eztrace.gforge.inria.fr" - url = "https://gitlab.com/eztrace/eztrace/-/archive/eztrace-1.1-10/eztrace-eztrace-1.1-10.tar.gz" + homepage = "https://gitlab.com/eztrace" maintainers = ['trahay'] + git = "https://gitlab.com/eztrace/eztrace.git" - version('1.1-10', sha256='97aba8f3b3b71e8e2f7ef47e00c262234e27b9cb4a870c85c525317a83a3f0d4') + version('master', branch='master') + version('2.0-rc1', sha256='2ad322df5aeb0c668ebadbfeb3b21c8841831b2c15944d86d1d217f738fee74e') + version('1.1-13', sha256='6144d04fb62b3ccad41af0268cd921161f168d0cca3f6c210c448bb0b07be7e0') + version('1.1-10', sha256='63d1af2db38b04efa817614574f381e7536e12db06a2c75375d1795adda3d1d8') + # dependencies for eztrace 1.x and 2.x depends_on('mpi') + depends_on('opari2') + depends_on('binutils') + # eztrace 1.x dependencies + depends_on('autoconf@2.71', type='build', when="@:1") + depends_on('automake', type='build', when="@:1") + depends_on('libtool', type='build', when="@:1") # Does not work on Darwin due to MAP_POPULATE - conflicts('platform=darwin') + conflicts('platform=darwin', when='@:1') + # eztrace 2.x dependencies + depends_on('cmake@3.1:', type='build', when="@2.0:") + depends_on('otf2', when="@2.0:") + + def url_for_version(self, version): + url = "https://gitlab.com/eztrace/eztrace/-/archive/{0}/eztrace-{1}.tar.gz" + return url.format(version, version) + + @when('@2.0:') + def install(self, spec, prefix): + # Since eztrace 2.0, the build system uses CMake + spec = self.spec + args = [ + "-DCMAKE_INSTALL_PREFIX=$prefix", + "-DEZTRACE_ENABLE_MEMORY=ON", + "-DEZTRACE_ENABLE_MPI=ON", + "-DEZTRACE_ENABLE_OPENMP=ON", + "-DEZTRACE_ENABLE_POSIXIO=ON", + "-DEZTRACE_ENABLE_PTHREAD=ON", + "-DOTF2_INCLUDE_PATH=%s" % spec['otf2'].prefix.include, + "-DOTF2_LIBRARY_PATH=%s" % spec['otf2'].libs, + ] + + if(spec.satisfies('%llvm-openmp-ompt')): + args.append("-DEZTRACE_ENABLE_OMPT=ON") + + args.extend(std_cmake_args) + + with working_dir('spack-build', create=True): + cmake('..', *args) + make() + make('install') + + # Until eztrace 2.0, the build system uses autoconf + @when('@:1') + def install(self, spec, prefix): + if self.spec.satisfies('%fj'): + env.set('LDFLAGS', '--linkfortran') + self.patch() + which('bash')('bootstrap') + configure("--prefix=" + prefix, + "--with-mpi={0}".format(self.spec["mpi"].prefix)) + self.fix_libtool() + make() + make("install") + + @when('@:1') def patch(self): filter_file( '"DEFAULT_OUTFILE"', @@ -29,15 +86,7 @@ class Eztrace(AutotoolsPackage): string=True ) - def setup_build_environment(self, env): - if self.spec.satisfies('%fj'): - env.set('LDFLAGS', '--linkfortran') - - def configure_args(self): - args = ["--with-mpi={0}".format(self.spec["mpi"].prefix)] - return args - - @run_before('build') + @when('@:1') def fix_libtool(self): if self.spec.satisfies('%fj'): libtools = ['extlib/gtg/libtool', -- cgit v1.2.3-60-g2f50