New package: ibm-java (#10777)
* Add binary package of the IBM Java SDK for big and little-endian powerpc (power7, 8 and 9). The jdk and openjdk packages only install on x86_64. * Add ibm-java as a java provider * The jdk and openjdk packages only install on x86_64. Add conflicts for ppc64 and ppc64le to jdk and openjdk.
This commit is contained in:
		 Mark W. Krentel
					Mark W. Krentel
				
			
				
					committed by
					
						 Peter Scheibel
						Peter Scheibel
					
				
			
			
				
	
			
			
			 Peter Scheibel
						Peter Scheibel
					
				
			
						parent
						
							e1e5eb29d2
						
					
				
				
					commit
					3ed6e78338
				
			| @@ -27,7 +27,7 @@ packages: | |||||||
|       glu: [mesa-glu, openglu] |       glu: [mesa-glu, openglu] | ||||||
|       golang: [gcc] |       golang: [gcc] | ||||||
|       ipp: [intel-ipp] |       ipp: [intel-ipp] | ||||||
|       java: [jdk] |       java: [jdk, openjdk, ibm-java] | ||||||
|       jpeg: [libjpeg-turbo, libjpeg] |       jpeg: [libjpeg-turbo, libjpeg] | ||||||
|       lapack: [openblas] |       lapack: [openblas] | ||||||
|       mkl: [intel-mkl] |       mkl: [intel-mkl] | ||||||
|   | |||||||
							
								
								
									
										68
									
								
								var/spack/repos/builtin/packages/ibm-java/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								var/spack/repos/builtin/packages/ibm-java/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | # Copyright 2013-2019 Lawrence Livermore National Security, LLC and other | ||||||
|  | # Spack Project Developers. See the top-level COPYRIGHT file for details. | ||||||
|  | # | ||||||
|  | # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||||
|  |  | ||||||
|  | from spack import * | ||||||
|  | import platform | ||||||
|  | import os | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class IbmJava(Package): | ||||||
|  |     """Binary distribution of the IBM Java Software Development Kit | ||||||
|  |     for big and little-endian powerpc (power7, 8 and 9).""" | ||||||
|  |  | ||||||
|  |     homepage = "https://developer.ibm.com/javasdk/" | ||||||
|  |  | ||||||
|  |     # There are separate tar files for big and little-endian machine | ||||||
|  |     # types.  When we add more versions, then turn this into a mapping | ||||||
|  |     # from version and machine type to sha256sum. | ||||||
|  |     mach = platform.machine() | ||||||
|  |     if mach == 'ppc64le': | ||||||
|  |         sha = 'dec6434d926861366c135aac6234fc28b3e7685917015aa3a3089c06c3b3d8f0' | ||||||
|  |     else: | ||||||
|  |         sha = 'd39ce321bdadd2b2b829637cacf9c1c0d90235a83ff6e7dcfa7078faca2f212f' | ||||||
|  |  | ||||||
|  |     version('8.0.5.30', sha256=sha, expand=False) | ||||||
|  |  | ||||||
|  |     provides('java@8') | ||||||
|  |  | ||||||
|  |     conflicts('target=x86_64', msg='ibm-java is only available for ppc64 and ppc64le') | ||||||
|  |  | ||||||
|  |     # This assumes version numbers are 4-tuples: 8.0.5.30 | ||||||
|  |     def url_for_version(self, version): | ||||||
|  |         # Convert 8.0.5.30 to 8.0-5.30 for the file name. | ||||||
|  |         dash = '{0}.{1}-{2}.{3}'.format(*(str(version).split('.'))) | ||||||
|  |  | ||||||
|  |         url = ('http://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud' | ||||||
|  |                '/runtimes/java/{0}/linux/{1}/ibm-java-sdk-{2}-{1}' | ||||||
|  |                '-archive.bin').format(version, self.mach, dash) | ||||||
|  |  | ||||||
|  |         return url | ||||||
|  |  | ||||||
|  |     def setup_environment(self, spack_env, run_env): | ||||||
|  |         run_env.set('JAVA_HOME', self.prefix) | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         archive = os.path.basename(self.stage.archive_file) | ||||||
|  |  | ||||||
|  |         # The archive.bin file is quite fussy and doesn't work as a | ||||||
|  |         # symlink. | ||||||
|  |         if os.path.islink(archive): | ||||||
|  |             targ = os.readlink(archive) | ||||||
|  |             os.unlink(archive) | ||||||
|  |             copy(targ, archive) | ||||||
|  |  | ||||||
|  |         # The properties file is how we avoid an interactive install. | ||||||
|  |         prop = 'properties' | ||||||
|  |         with open(prop, 'w') as file: | ||||||
|  |             file.write('INSTALLER_UI=silent\n') | ||||||
|  |             file.write('USER_INSTALL_DIR=%s\n' % prefix) | ||||||
|  |             file.write('LICENSE_ACCEPTED=TRUE\n') | ||||||
|  |  | ||||||
|  |         # Running the archive file installs everything. | ||||||
|  |         set_executable(archive) | ||||||
|  |         inst = Executable(join_path('.', archive)) | ||||||
|  |         inst('-f', prop) | ||||||
|  |  | ||||||
|  |         return | ||||||
| @@ -66,6 +66,9 @@ class Jdk(Package): | |||||||
|     provides('java@8',  when='@1.8.0:1.8.999') |     provides('java@8',  when='@1.8.0:1.8.999') | ||||||
|     provides('java@7',  when='@1.7.0:1.7.999') |     provides('java@7',  when='@1.7.0:1.7.999') | ||||||
|  |  | ||||||
|  |     conflicts('target=ppc64', msg='jdk is only available for x86_64') | ||||||
|  |     conflicts('target=ppc64le', msg='jdk is only available for x86_64') | ||||||
|  |  | ||||||
|     # FIXME: |     # FIXME: | ||||||
|     # 1. `extends('java')` doesn't work, you need to use `extends('jdk')` |     # 1. `extends('java')` doesn't work, you need to use `extends('jdk')` | ||||||
|     # 2. Packages cannot extend multiple packages, see #987 |     # 2. Packages cannot extend multiple packages, see #987 | ||||||
|   | |||||||
| @@ -18,6 +18,9 @@ class Openjdk(Package): | |||||||
|     provides('java') |     provides('java') | ||||||
|     provides('java@11', when='@11.0:11.99') |     provides('java@11', when='@11.0:11.99') | ||||||
|  |  | ||||||
|  |     conflicts('target=ppc64', msg='openjdk is only available for x86_64') | ||||||
|  |     conflicts('target=ppc64le', msg='openjdk is only available for x86_64') | ||||||
|  |  | ||||||
|     # FIXME: |     # FIXME: | ||||||
|     # 1. `extends('java')` doesn't work, you need to use `extends('openjdk')` |     # 1. `extends('java')` doesn't work, you need to use `extends('openjdk')` | ||||||
|     # 2. Packages cannot extend multiple packages, see #987 |     # 2. Packages cannot extend multiple packages, see #987 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user