Add PGI Compiler Package
This commit is contained in:
parent
0216fa2a00
commit
2fb128fb34
97
var/spack/repos/builtin/packages/pgi/package.py
Normal file
97
var/spack/repos/builtin/packages/pgi/package.py
Normal file
@ -0,0 +1,97 @@
|
||||
from spack import *
|
||||
import spack
|
||||
import llnl.util.tty as tty
|
||||
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, such as CUDA")
|
||||
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")
|
||||
|
||||
|
||||
def set_up_license(self, prefix):
|
||||
license_path = "%s/license.dat" % prefix
|
||||
|
||||
with open(license_path, "w") as license:
|
||||
license.write("""\
|
||||
# The PGI compilers require a license to use. There are two ways to set this up.
|
||||
#
|
||||
# 1. (Recommended) Store your license key in this license.dat file. Example:
|
||||
#
|
||||
# SERVER <hostname> 0123456789ab 27000
|
||||
# DAEMON pgroupd
|
||||
# PACKAGE PGI2015-<PGI_PIN> pgroupd <subscription end date> A13AB920D570 \\
|
||||
# <...>
|
||||
# 6167 7015 3F05 9C37 2315 ACDF 1B73 DAA9 FBAE"
|
||||
#
|
||||
# 2. Use the environment variable PGROUPD_LICENSE_FILE or LM_LICENSE_FILE.
|
||||
#
|
||||
# If you choose to store your license in a non-standard location, you may
|
||||
# set either one of these variables to a full pathname to the license
|
||||
# file, or port@host if you store your license keys on a dedicated
|
||||
# license server. You will likely want to set this variable in a module
|
||||
# file so that it gets loaded every time someone wants to use PGI.
|
||||
#
|
||||
# For further information on how to acquire a license, please refer to:
|
||||
# http://www.pgroup.com/doc/pgiinstall.pdf
|
||||
#
|
||||
# You may enter your license below.
|
||||
|
||||
""")
|
||||
|
||||
spack.editor(license_path)
|
||||
tty.message("Set up license file %s" % license_path)
|
||||
|
||||
|
||||
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'] = "%s" % 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 system install.\n'
|
||||
msg += 'You 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")
|
||||
|
||||
# Prompt user to set up license file
|
||||
self.set_up_license(prefix)
|
Loading…
Reference in New Issue
Block a user