hpcviewer: add support for macosx, add version 2021.10 (#26823)

This commit is contained in:
Mark W. Krentel 2021-10-27 14:51:14 -05:00 committed by GitHub
parent e35eacf87b
commit 21d909784c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,6 +3,7 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
import os.path import os.path
import platform import platform
@ -28,17 +29,35 @@ def trace_url(ver, mach):
).format(ver, ver2, mach) ).format(ver, ver2, mach)
def darwin_url(ver, mach):
return (
'http://hpctoolkit.org/download/hpcviewer/{0}/'
'hpcviewer-{0}-macosx.cocoa.{1}.zip'
).format(ver, mach)
class Hpcviewer(Package): class Hpcviewer(Package):
"""Binary distribution of hpcviewer and hpctraceviewer for the Rice """Binary distribution of hpcviewer and integrated hpctraceviewer for
HPCToolkit (Linux x86_64, ppc64le and aarch64). Note: hpctoolkit the Rice HPCToolkit (Linux x86_64, ppc64le and aarch64, and MacOSX
databases are platform independent, so you don't need to install x86_64).
hpctoolkit to run the viewers and it's common to run hpcrun and
hpcviewer on different machines.""" 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.
"""
homepage = "http://hpctoolkit.org" homepage = "http://hpctoolkit.org"
maintainers = ['mwkrentel'] maintainers = ['mwkrentel']
darwin_sha = {
('2021.10', 'x86_64'): '0b71f2d63d99eb00fbaf9c03cf8632c198627c80e4372eeec5f20864509cbbe8',
('2021.05', 'x86_64'): '4643567b41dddbbf9272cb56b0720f4eddfb144ca05aaad7d08c878ffaf8f2fa',
}
viewer_sha = { viewer_sha = {
('2021.10', 'aarch64'): 'c696a0ecc6696f9979de3940b5471a3d99c8d573736cabb24b86255d860a23dc',
('2021.10', 'ppc64le'): 'f0eda3510b71fd9115c5653efba29aaefcb335c66b118cf63f36e1353c39e24e',
('2021.10', 'x86_64'): 'd5a444e28d6c9d1a087c39bd3ffe55c6f982dc37a7a743b83bbba2fbfc7ca7c6',
('2021.05', 'aarch64'): 'a500bf14be14ca9b08a8382f1d122f59b45690b6a567df0932fc2cabd6382a9a', ('2021.05', 'aarch64'): 'a500bf14be14ca9b08a8382f1d122f59b45690b6a567df0932fc2cabd6382a9a',
('2021.05', 'ppc64le'): 'd39f9f6556abcd5a184db242711b72b2e8571d0b78bb08d0e497fd4e6dbe87a1', ('2021.05', 'ppc64le'): 'd39f9f6556abcd5a184db242711b72b2e8571d0b78bb08d0e497fd4e6dbe87a1',
('2021.05', 'x86_64'): 'f316c1fd0b134c96392cd4eb5e5aa2bffa36bd449f401d8fe950ab4f761c34ab', ('2021.05', 'x86_64'): 'f316c1fd0b134c96392cd4eb5e5aa2bffa36bd449f401d8fe950ab4f761c34ab',
@ -121,25 +140,66 @@ class Hpcviewer(Package):
('2019.02', 'ppc64le'): '01a159306e7810efe07157ec823ac6ca7570ec2014c95db599a3f90eee33355c', ('2019.02', 'ppc64le'): '01a159306e7810efe07157ec823ac6ca7570ec2014c95db599a3f90eee33355c',
} }
for key in viewer_sha.keys(): system = platform.system().lower()
if key[1] == platform.machine(): machine = platform.machine().lower()
version(key[0], url=viewer_url(*key), sha256=viewer_sha[key])
# Current versions include the viewer and trace viewer in # Versions for MacOSX / Darwin
# one tar file. Before 2020.07, the trace viewer was a if system == 'darwin':
# separate tar file (resource). for key in darwin_sha.keys():
if key in trace_sha: if key[1] == machine:
resource(name='hpctraceviewer', url=trace_url(*key), version(key[0], url=darwin_url(*key), sha256=darwin_sha[key])
sha256=trace_sha[key], placement='TRACE',
when='@{0}'.format(key[0])) # Versions for Linux and Cray front-end
if system == 'linux':
for key in viewer_sha.keys():
if key[1] == machine:
version(key[0], url=viewer_url(*key), sha256=viewer_sha[key],
deprecated=(key[0] <= '2020.01'))
# 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@11:', type=('build', 'run'), when='@2021.0:') depends_on('java@11:', type=('build', 'run'), when='@2021.0:')
depends_on('java@8', type=('build', 'run'), when='@:2020') depends_on('java@8', type=('build', 'run'), when='@:2020')
conflicts('platform=darwin', msg='hpcviewer requires a manual install on MacOS, see homepage') # Install for MacOSX / Darwin
@when('platform=darwin')
def install(self, spec, prefix):
# Add path to java binary to hpcviewer.ini file.
ini_file = join_path('Contents', 'Eclipse', 'hpcviewer.ini')
java_binary = join_path(spec['java'].prefix.bin, 'java')
filter_file('(-startup)', '-vm\n' + java_binary + '\n' + r'\1',
ini_file, backup=False)
# Copy files into prefix/hpcviewer.app.
app_dir = join_path(prefix, 'hpcviewer.app')
mkdirp(app_dir)
install_tree('.', app_dir)
# Add launch script to call 'open' on app directory.
mkdirp(prefix.bin)
viewer_file = join_path(prefix.bin, 'hpcviewer')
with open(viewer_file, 'w') as file:
file.write('#!/bin/sh\n')
file.write('open ' + app_dir + '\n')
os.chmod(viewer_file, 0o755)
# Install for Cray front-end is the same as Linux.
@when('platform=cray')
def install(self, spec, prefix):
self.linux_install(spec, prefix)
@when('platform=linux')
def install(self, spec, prefix):
self.linux_install(spec, prefix)
# Both hpcviewer and trace viewer have an install script. # Both hpcviewer and trace viewer have an install script.
def install(self, spec, prefix): def linux_install(self, spec, prefix):
args = [ args = [
'--java', spec['java'].home, '--java', spec['java'].home,
prefix prefix