Downloads source code from git repo (#41751)
This commit is contained in:
		 AMD Toolchain Support
					AMD Toolchain Support
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							542d7a6d6d
						
					
				
				
					commit
					49e5771430
				
			| @@ -15,15 +15,12 @@ class Roms(MakefilePackage): | |||||||
|     the scientific community for a diverse range of applications""" |     the scientific community for a diverse range of applications""" | ||||||
| 
 | 
 | ||||||
|     homepage = "https://www.myroms.org/" |     homepage = "https://www.myroms.org/" | ||||||
|     url = "file://{0}/roms_3.8_source.tar.gz".format(os.getcwd()) |     url = "https://github.com/myroms/roms/archive/refs/tags/roms-4.1.tar.gz" | ||||||
|     manual_download = True |  | ||||||
| 
 | 
 | ||||||
|     # TODO: ROMS v3.8 (svn version 986) require credentials to download and use |     version("4.1", sha256="cf25625066be3ea40fdd7bbe361f830d4415170636163b05bd338ac299809d4e") | ||||||
|     # Spack recipe expects ROMS source code in .tar.gz format |     version("4.0", sha256="d14b4920e791ad24684f439c4751c2f1c38dbf9b82aa0d4d57def93e50a5a747") | ||||||
|     # checksum may differ from what is provided here. |     version("3.9", sha256="8e93f6ed40040e3f1b88d456ea9411ed3c06f280dc50b2787d6e5f793f58f1bc") | ||||||
|     # user can skip checksum verification by placing "--no-checksum" |     version("3.8", sha256="99fb69239e70edaef35771d82e203e43cd301dde4f2a5662da038499b7258ae7") | ||||||
|     # next to "spack install" |  | ||||||
|     version("3.8", sha256="5da7a61b69bd3e1f84f33f894a9f418971f3ba61cf9f5ef0a806a722161e2c9a") |  | ||||||
| 
 | 
 | ||||||
|     variant("openmp", default=False, description="Turn on shared-memory parallelization in ROMS") |     variant("openmp", default=False, description="Turn on shared-memory parallelization in ROMS") | ||||||
|     variant("mpi", default=True, description="Turn on distributed-memory parallelization in ROMS") |     variant("mpi", default=True, description="Turn on distributed-memory parallelization in ROMS") | ||||||
| @@ -77,22 +74,16 @@ def _edit_arch(self, spec, prefix, lib): | |||||||
|         """ |         """ | ||||||
|         Edit Linux-flang.mk makefile to support AOCC compiler |         Edit Linux-flang.mk makefile to support AOCC compiler | ||||||
|         """ |         """ | ||||||
|         fflags = [ |         fflags = ["-fveclib=AMDLIBM", "-O3", "-ffast-math", "-funroll-loops", "-std=f2008"] | ||||||
|             "-fveclib=AMDLIBM", |  | ||||||
|             "-O3", |  | ||||||
|             "-ffast-math", |  | ||||||
|             "-funroll-loops", |  | ||||||
|             "-Mstack_arrays", |  | ||||||
|             "-std=f2008", |  | ||||||
|         ] |  | ||||||
|         make_aocc = join_path("Compilers", "{0}-{1}.mk".format(self.arch, lib)) |         make_aocc = join_path("Compilers", "{0}-{1}.mk".format(self.arch, lib)) | ||||||
| 
 | 
 | ||||||
|         filter_file(r"\sFC := gfortran*$", "FC := {0}".format(lib), make_aocc) |         filter_file(r"\sFC := gfortran*$", " FC := {0}".format(lib), make_aocc) | ||||||
|         filter_file(r"\sFFLAGS\s:=.*$", "FFLAGS := {0}".format(" ".join(fflags)), make_aocc) |         filter_file(r"\sFFLAGS :=.*$", " FFLAGS := {0}".format(" ".join(fflags)), make_aocc) | ||||||
|  |         filter_file("-fallow-argument-mismatch", "", make_aocc, string=True) | ||||||
|         filter_file( |         filter_file( | ||||||
|             r"\sLIBS\s:= [$]", "LIBS := {0} $".format(spec["amdlibm"].libs.ld_flags), make_aocc |             r"\sLIBS :=.*", " LIBS := {0}".format(spec["amdlibm"].libs.ld_flags), make_aocc | ||||||
|         ) |         ) | ||||||
|         filter_file(r"\sFREEFLAGS\s:=.*", "FREEFLAGS := -ffree-form", make_aocc) |         filter_file(r"\sFREEFLAGS :=.*", " FREEFLAGS := -ffree-form", make_aocc) | ||||||
| 
 | 
 | ||||||
|     def edit(self, spec, prefix): |     def edit(self, spec, prefix): | ||||||
|         # ROMS doesn't have support for AOCC out of the box |         # ROMS doesn't have support for AOCC out of the box | ||||||
| @@ -102,6 +93,14 @@ def edit(self, spec, prefix): | |||||||
|             self._copy_arch_file(lib_info) |             self._copy_arch_file(lib_info) | ||||||
|             self._edit_arch(spec, prefix, lib_info) |             self._edit_arch(spec, prefix, lib_info) | ||||||
| 
 | 
 | ||||||
|  |         # With gfortran >= 10 requires '-fallow-argument-mismatch' flag | ||||||
|  |         if spec.satisfies("@:4.0 %gcc@10:"): | ||||||
|  |             filter_file( | ||||||
|  |                 r"\sFFLAGS := ", | ||||||
|  |                 " FFLAGS := -fallow-argument-mismatch ", | ||||||
|  |                 "Compilers/Linux-gfortran.mk", | ||||||
|  |             ) | ||||||
|  | 
 | ||||||
|         makefile = FileFilter("makefile") |         makefile = FileFilter("makefile") | ||||||
| 
 | 
 | ||||||
|         app_type = self.selected_roms_application |         app_type = self.selected_roms_application | ||||||
| @@ -144,4 +143,8 @@ def build(self, spec, prefix): | |||||||
| 
 | 
 | ||||||
|     def install(self, spec, prefix): |     def install(self, spec, prefix): | ||||||
|         mkdirp(prefix.bin) |         mkdirp(prefix.bin) | ||||||
|  |         # Keep ROMS External Standard input scripts | ||||||
|  |         mkdirp(spec.prefix.ROMS) | ||||||
|  | 
 | ||||||
|         install("roms*", prefix.bin) |         install("roms*", prefix.bin) | ||||||
|  |         install_tree("./ROMS/External", join_path(spec.prefix.ROMS.External)) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user