Merge pull request #558 from adamjstewart/features/pgi

Add Licensed Software Support
This commit is contained in:
Todd Gamblin
2016-05-11 17:17:47 -07:00
7 changed files with 446 additions and 4 deletions

View File

@@ -0,0 +1,28 @@
from spack import *
class AllineaForge(Package):
"""Allinea Forge is the complete toolsuite for software development - with
everything needed to debug, profile, optimize, edit and build C, C++ and
Fortran applications on Linux for high performance - from single threads
through to complex parallel HPC codes with MPI, OpenMP, threads or CUDA."""
homepage = "http://www.allinea.com/products/develop-allinea-forge"
version('6.0.4', 'df7f769975048477a36f208d0cd57d7e')
# Licensing
license_required = True
license_comment = '#'
license_files = ['licences/Licence']
license_vars = ['ALLINEA_LICENCE_FILE', 'ALLINEA_LICENSE_FILE']
license_url = 'http://www.allinea.com/user-guide/forge/Installation.html'
def url_for_version(self, version):
# TODO: add support for other architectures/distributions
url = "http://content.allinea.com/downloads/"
return url + "allinea-forge-%s-Redhat-6.0-x86_64.tar" % version
def install(self, spec, prefix):
textinstall = which('textinstall.sh')
textinstall('--accept-licence', prefix)

View File

@@ -0,0 +1,28 @@
from spack import *
class AllineaReports(Package):
"""Allinea Performance Reports are the most effective way to characterize
and understand the performance of HPC application runs. One single-page
HTML report elegantly answers a range of vital questions for any HPC site
"""
homepage = "http://www.allinea.com/products/allinea-performance-reports"
version('6.0.4', '3f13b08a32682737bc05246fbb2fcc77')
# Licensing
license_required = True
license_comment = '#'
license_files = ['licences/Licence']
license_vars = ['ALLINEA_LICENCE_FILE', 'ALLINEA_LICENSE_FILE']
license_url = 'http://www.allinea.com/user-guide/reports/Installation.html'
def url_for_version(self, version):
# TODO: add support for other architectures/distributions
url = "http://content.allinea.com/downloads/"
return url + "allinea-reports-%s-Redhat-6.0-x86_64.tar" % version
def install(self, spec, prefix):
textinstall = which('textinstall.sh')
textinstall('--accept-licence', prefix)

View File

@@ -0,0 +1,32 @@
from spack import *
import os
class Nag(Package):
"""The NAG Fortran Compiler."""
homepage = "http://www.nag.com/nagware/np.asp"
version('6.1', '1e29d9d435b7ccc2842a320150b28ba4')
version('6.0', '3fa1e7f7b51ef8a23e6c687cdcad9f96')
# Licensing
license_required = True
license_comment = '!'
license_files = ['lib/nag.key']
license_vars = ['NAG_KUSARI_FILE']
license_url = 'http://www.nag.com/doc/inun/np61/lin-mac/klicence.txt'
def url_for_version(self, version):
# TODO: url and checksum are architecture dependent
# TODO: We currently only support x86_64
return 'http://www.nag.com/downloads/impl/npl6a%sna_amd64.tgz' % \
str(version).replace('.', '')
def install(self, spec, prefix):
# Set installation directories
os.environ['INSTALL_TO_BINDIR'] = prefix.bin
os.environ['INSTALL_TO_LIBDIR'] = prefix.lib
os.environ['INSTALL_TO_MANDIR'] = prefix + '/share/man/man'
# Run install script
os.system('./INSTALLU.sh')

View File

@@ -0,0 +1,72 @@
from spack import *
import os
class Pgi(Package):
"""PGI optimizing multi-core x64 compilers for Linux, MacOS & Windows
with support for debugging and profiling of local MPI processes.
Note: The PGI compilers are licensed software. You will need to create
an account on the PGI homepage and download PGI yourself. Once the download
finishes, rename the file (which may contain information such as the
architecture) to the format: pgi-<version>.tar.gz. Spack will search your
current directory for a file of this format. Alternatively, add this
file to a mirror so that Spack can find it. For instructions on how to
set up a mirror, see http://software.llnl.gov/spack/mirrors.html"""
homepage = "http://www.pgroup.com/"
url = "file://%s/pgi-16.3.tar.gz" % os.getcwd()
version('16.3', '618cb7ddbc57d4e4ed1f21a0ab25f427')
variant('network', default=True,
description="Perform a network install")
variant('single', default=False,
description="Perform a single system install")
variant('nvidia', default=False,
description="Enable installation of optional NVIDIA components")
variant('amd', default=False,
description="Enable installation of optional AMD components")
variant('java', default=False,
description="Enable installation of Java Runtime Environment")
variant('mpi', default=False,
description="Enable installation of Open MPI")
# Licensing
license_required = True
license_comment = '#'
license_files = ['license.dat']
license_vars = ['PGROUPD_LICENSE_FILE', 'LM_LICENSE_FILE']
license_url = 'http://www.pgroup.com/doc/pgiinstall.pdf'
def install(self, spec, prefix):
# Enable the silent installation feature
os.environ['PGI_SILENT'] = "true"
os.environ['PGI_ACCEPT_EULA'] = "accept"
os.environ['PGI_INSTALL_DIR'] = prefix
if '+network' in spec and '~single' in spec:
os.environ['PGI_INSTALL_TYPE'] = "network"
os.environ['PGI_INSTALL_LOCAL_DIR'] = "%s/%s/share_objects" % \
(prefix, self.version)
elif '+single' in spec and '~network' in spec:
os.environ['PGI_INSTALL_TYPE'] = "single"
else:
msg = 'You must choose either a network install or a single '
msg += 'system install.\nYou cannot choose both.'
raise RuntimeError(msg)
if '+nvidia' in spec:
os.environ['PGI_INSTALL_NVIDIA'] = "true"
if '+amd' in spec:
os.environ['PGI_INSTALL_AMD'] = "true"
if '+java' in spec:
os.environ['PGI_INSTALL_JAVA'] = "true"
if '+mpi' in spec:
os.environ['PGI_INSTALL_MPI'] = "true"
# Run install script
os.system("./install")