hpcviewer: add support for macosx, add version 2021.10 (#26823)
This commit is contained in:
parent
e35eacf87b
commit
21d909784c
1 changed files with 77 additions and 17 deletions
|
@ -3,6 +3,7 @@
|
|||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import platform
|
||||
|
||||
|
@ -28,17 +29,35 @@ def trace_url(ver, 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):
|
||||
"""Binary distribution of hpcviewer and hpctraceviewer for the Rice
|
||||
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."""
|
||||
"""Binary distribution of hpcviewer and integrated hpctraceviewer for
|
||||
the Rice HPCToolkit (Linux x86_64, ppc64le and aarch64, and MacOSX
|
||||
x86_64).
|
||||
|
||||
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"
|
||||
maintainers = ['mwkrentel']
|
||||
|
||||
darwin_sha = {
|
||||
('2021.10', 'x86_64'): '0b71f2d63d99eb00fbaf9c03cf8632c198627c80e4372eeec5f20864509cbbe8',
|
||||
('2021.05', 'x86_64'): '4643567b41dddbbf9272cb56b0720f4eddfb144ca05aaad7d08c878ffaf8f2fa',
|
||||
}
|
||||
|
||||
viewer_sha = {
|
||||
('2021.10', 'aarch64'): 'c696a0ecc6696f9979de3940b5471a3d99c8d573736cabb24b86255d860a23dc',
|
||||
('2021.10', 'ppc64le'): 'f0eda3510b71fd9115c5653efba29aaefcb335c66b118cf63f36e1353c39e24e',
|
||||
('2021.10', 'x86_64'): 'd5a444e28d6c9d1a087c39bd3ffe55c6f982dc37a7a743b83bbba2fbfc7ca7c6',
|
||||
('2021.05', 'aarch64'): 'a500bf14be14ca9b08a8382f1d122f59b45690b6a567df0932fc2cabd6382a9a',
|
||||
('2021.05', 'ppc64le'): 'd39f9f6556abcd5a184db242711b72b2e8571d0b78bb08d0e497fd4e6dbe87a1',
|
||||
('2021.05', 'x86_64'): 'f316c1fd0b134c96392cd4eb5e5aa2bffa36bd449f401d8fe950ab4f761c34ab',
|
||||
|
@ -121,25 +140,66 @@ class Hpcviewer(Package):
|
|||
('2019.02', 'ppc64le'): '01a159306e7810efe07157ec823ac6ca7570ec2014c95db599a3f90eee33355c',
|
||||
}
|
||||
|
||||
for key in viewer_sha.keys():
|
||||
if key[1] == platform.machine():
|
||||
version(key[0], url=viewer_url(*key), sha256=viewer_sha[key])
|
||||
system = platform.system().lower()
|
||||
machine = platform.machine().lower()
|
||||
|
||||
# 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]))
|
||||
# Versions for MacOSX / Darwin
|
||||
if system == 'darwin':
|
||||
for key in darwin_sha.keys():
|
||||
if key[1] == machine:
|
||||
version(key[0], url=darwin_url(*key), sha256=darwin_sha[key])
|
||||
|
||||
# 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@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.
|
||||
def install(self, spec, prefix):
|
||||
def linux_install(self, spec, prefix):
|
||||
args = [
|
||||
'--java', spec['java'].home,
|
||||
prefix
|
||||
|
|
Loading…
Reference in a new issue