Add PGI Compiler Package
This commit is contained in:
		
							
								
								
									
										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) | ||||
		Reference in New Issue
	
	Block a user
	 Adam J. Stewart
					Adam J. Stewart