From ebd308609782f00cbde044dfbe7fa75685348f17 Mon Sep 17 00:00:00 2001 From: Thomas Mueller <th.mueller@fz-juelich.de> Date: Fri, 11 Aug 2023 13:03:46 +0200 Subject: [PATCH] updated for open source MIT version of CPMD --- Custom_EasyBlocks/cpmd.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/Custom_EasyBlocks/cpmd.py b/Custom_EasyBlocks/cpmd.py index 25b382968..8885f4b26 100644 --- a/Custom_EasyBlocks/cpmd.py +++ b/Custom_EasyBlocks/cpmd.py @@ -36,7 +36,8 @@ EasyBuild support for building and installing CPMD, implemented as an easyblock #the pseudo-fix is to remove installdir/obj as postinstallcmds from the easyconfig file #the documentation was missing and is now added in a somewhat weird procedure #to the builddir and subsequently copied to the installdir/doc via postinstallcmds from the easyconfig file -#the hybrid MPI/OMP version can solely installed through the openmp toolchain option +#the hybrid version is installed via prefix_opt = '-omp -DEST=' independent of toolchain options in easyconfig file +# #the cuda implementation is ignored # @@ -68,6 +69,7 @@ class EB_CPMD(ConfigureMake): """Custom easyconfig parameters for CPMD.""" extra_vars = { 'base_configuration': [None, "Base configuration from which to start (file name)", CUSTOM], + 'MIT' : [None, "Open-Source Version of CPMD (MIT licence)",CUSTOM], } return ConfigureMake.extra_options(extra_vars) @@ -89,7 +91,12 @@ class EB_CPMD(ConfigureMake): config_file_candidates = [] for confdirname in ["configure", "CONFIGURE"]: - config_file_prefix = os.path.join(self.builddir, "CPMD", confdirname) + if self.cfg['MIT']: + cpmdname = 'CPMD-%s' % self.version + else: + cpmdname = 'CPMD' + + config_file_prefix = os.path.join(self.builddir, cpmdname , confdirname) if os.path.isdir(config_file_prefix): break else: @@ -149,6 +156,8 @@ class EB_CPMD(ConfigureMake): (r"^(\s*CC=.*)", r"#\1"), (r"^(\s*FC=.*)", r"#\1"), (r"^(\s*LD)=.*", r"\1='$(FC)'"), + (r" -openmp ", r" -qopenmp "), + (r"-mkl=", r"-qmkl="), ]) except IOError as err: raise EasyBuildError("Failed to patch %s: %s", selected_base_config, err) @@ -174,8 +183,8 @@ class EB_CPMD(ConfigureMake): options = [self.cfg['configopts']] # enable OpenMP support if desired - if self.toolchain.options.get('openmp', None) and LooseVersion(self.version) >= LooseVersion('4.0'): - options.append("-omp") +# if self.toolchain.options.get('openmp', None) and LooseVersion(self.version) >= LooseVersion('4.0'): +# options.append("-omp") # This "option" has to come last as it's the chief argument, coming after # all flags and so forth. @@ -240,11 +249,12 @@ class EB_CPMD(ConfigureMake): if preproc_flag is None: preproc_flag = '' +# do not use default='None' for CPPFLAGS apply_regex_substitutions(makefile, [ - (r"^(\s*CPPFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('CPPFLAGS'))), - (r"^(\s*CFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('CFLAGS'))), - (r"^(\s*FFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('FFLAGS'))), - (r"^(\s*LFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('LDFLAGS'))), + (r"^(\s*CPPFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('CPPFLAGS',' '))), + (r"^(\s*CFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('CFLAGS',' '))), + (r"^(\s*FFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('FFLAGS',' '))), + (r"^(\s*LFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('LDFLAGS',' '))), # Allow to define own XFLAGS (r"# CPPFLAGS =", r"CPPFLAGS +="), @@ -259,14 +269,14 @@ class EB_CPMD(ConfigureMake): ]) if self.toolchain.options.get('openmp', None): apply_regex_substitutions(makefile, [ - (r"^(\s*LFLAGS\s*=.*)", r"\1 {0} {1}".format(os.getenv('LIBLAPACK_MT'), os.getenv('LIBBLAS_MT'))) + (r"^(\s*LFLAGS\s*=.*)", r"\1 {0} {1}".format(os.getenv('LIBLAPACK_MT',' '), os.getenv('LIBBLAS_MT',' '))) ]) else: apply_regex_substitutions(makefile, [ - (r"^(\s*LFLAGS\s*=.*)", r"\1 {0} {1}".format(os.getenv('LIBLAPACK'), os.getenv('LIBBLAS'))) + (r"^(\s*LFLAGS\s*=.*)", r"\1 {0} {1}".format(os.getenv('LIBLAPACK',' '), os.getenv('LIBBLAS',' '))) ]) apply_regex_substitutions(makefile, [ - (r"^(\s*LFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('LIBFFT'))), + (r"^(\s*LFLAGS\s*=.*)", r"\1 {0}".format(os.getenv('LIBFFT',' '))), ]) if get_software_root('imkl'): -- GitLab