hpcviewer: add versions 2020.12 and 2021.01 (#21659)

Add versions 2020.12 and 2021.01.  The viewer and trace viewer are now
integrated into a single program and one tar ball.  Now available on
arm/aarch64 and now uses Java 11.
This commit is contained in:
Mark W. Krentel 2021-02-16 09:33:54 -06:00 committed by GitHub
parent 6b521a3a5b
commit bd9289f99d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,6 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
import os.path
import platform
@ -28,7 +29,7 @@ def trace_url(ver, mach):
class Hpcviewer(Package):
"""Binary distribution of hpcviewer and hpctraceviewer for the Rice
HPCToolkit (Linux x86_64, ppc64 and ppc64le). Note: hpctoolkit
HPCToolkit (Linux x86_64, ppc64le and aarch64). Note: hpctoolkit
databases are platform independent, so you don't need to install
hpctoolkit to run the viewers and it's common to run hpcrun and
hpcviewer on different machines."""
@ -37,6 +38,11 @@ class Hpcviewer(Package):
maintainers = ['mwkrentel']
viewer_sha = {
('2021.01', 'aarch64'): 'fe797a1c97943f7509c36a570198291e674cd4a793c1d6538a2761d66542dc52',
('2021.01', 'ppc64le'): 'ba4035de2ae208280c3744000ea08d2d7f8c31bd7095f722e442ddc289648063',
('2021.01', 'x86_64'): '99eba4e1c613203c4658f2874d0e79e1620db7a22ac7dcb810801886ba9f8a79',
('2020.12', 'ppc64le'): 'ce0d741aa8849621c03183dbf11a0dc1f6d296e3de80e25976a7f2a2750899c4',
('2020.12', 'x86_64'): '29c5e1427893f0652e863fd6d54a8585077662597e5073532ec9f3b116626498',
('2020.07', 'x86_64'): '19951662626c7c9817c4a75269c85810352dc48ae9a62dfb6ce4a5b502de2118',
('2020.07', 'ppc64'): '3f5d9358ef8ff9ba4f6dcaa4d7132f41ba55f0c132d9fd1e2f6da18341648a4e',
('2020.07', 'ppc64le'): 'e236a8578dc247279d1021aa35bac47e2d4864b906efcef76c0610ee0086b353',
@ -109,16 +115,20 @@ class Hpcviewer(Package):
}
for key in viewer_sha.keys():
if key in trace_sha and key[1] == platform.machine():
if key[1] == platform.machine():
version(key[0], url=viewer_url(*key), sha256=viewer_sha[key])
resource(name='hpctraceviewer', url=trace_url(*key),
sha256=trace_sha[key], placement='TRACE',
when='@{0}'.format(key[0]))
# Current versions include the viewer and trace viewer in
# one tar file. Before 2020.07, the trace viewer was a
# separate tar file (resource).
if key in trace_sha:
resource(name='hpctraceviewer', url=trace_url(*key),
sha256=trace_sha[key], placement='TRACE',
when='@{0}'.format(key[0]))
depends_on('java@8', type=('build', 'run'))
depends_on('java@11:', type=('build', 'run'), when='@2021.0:')
depends_on('java@8', type=('build', 'run'), when='@:2020.99')
conflicts('target=aarch64:', msg='hpcviewer is not available on arm')
conflicts('platform=darwin', msg='hpcviewer requires a manual install on MacOS, see homepage')
# Both hpcviewer and trace viewer have an install script.
@ -128,10 +138,16 @@ def install(self, spec, prefix):
prefix
]
inst = Executable(join_path('.', 'install'))
# Sometimes the script is install.sh, sometimes install.
inst_path = join_path('.', 'install.sh')
if not os.path.exists(inst_path):
inst_path = join_path('.', 'install')
inst = Executable(inst_path)
inst(*args)
cd('TRACE')
inst = Executable(join_path('.', 'install'))
inst(*args)
# Older versions used a separate resource for the traceviewer.
if os.path.isdir('TRACE'):
cd('TRACE')
inst = Executable(inst_path)
inst(*args)