def sanity_check_step(self): """Custom sanity check paths for ifort.""" shlib_ext = get_shared_lib_ext() binprefix = 'bin/intel64' libprefix = 'lib/intel64' if LooseVersion(self.version) >= LooseVersion('2011'): if LooseVersion(self.version) <= LooseVersion('2011.3.174'): binprefix = 'bin' elif LooseVersion(self.version) >= LooseVersion('2013_sp1'): binprefix = 'bin' else: libprefix = 'compiler/lib/intel64' bins = ['ifort'] if LooseVersion(self.version) < LooseVersion('2013'): # idb is not shipped with ifort anymore in 2013.x versions (it is with icc though) bins.append('idb') libs = [ 'ifcore.a', 'ifcore.%s' % shlib_ext, 'iomp5.a', 'iomp5.%s' % shlib_ext ] custom_paths = { 'files': [os.path.join(binprefix, x) for x in bins] + [os.path.join(libprefix, 'lib%s' % l) for l in libs], 'dirs': [], } custom_commands = ["which ifort"] IntelBase.sanity_check_step(self, custom_paths=custom_paths, custom_commands=custom_commands)
def sanity_check_step(self): """Custom sanity check paths for ifort.""" binprefix = 'bin/intel64' libprefix = 'lib/intel64' if LooseVersion(self.version) >= LooseVersion('2011'): if LooseVersion(self.version) <= LooseVersion('2011.3.174'): binprefix = 'bin' elif LooseVersion(self.version) >= LooseVersion('2013_sp1'): binprefix = 'bin' else: libprefix = 'compiler/lib/intel64' bins = ['ifort'] if LooseVersion(self.version) < LooseVersion('2013'): # idb is not shipped with ifort anymore in 2013.x versions (it is with icc though) bins.append('idb') custom_paths = { 'files': [os.path.join(binprefix, x) for x in bins] + [os.path.join(libprefix, 'lib%s' % x) for x in ['ifcore.a', 'ifcore.so', 'iomp5.a', 'iomp5.so']], 'dirs': [], } IntelBase.sanity_check_step(self, custom_paths=custom_paths)
def sanity_check_step(self): """Custom sanity check paths for ifort.""" shlib_ext = get_shared_lib_ext() binprefix = 'bin/intel64' libprefix = 'lib/intel64' if LooseVersion(self.version) >= LooseVersion('2011'): if LooseVersion(self.version) <= LooseVersion('2011.3.174'): binprefix = 'bin' elif LooseVersion(self.version) >= LooseVersion('2013_sp1'): binprefix = 'bin' else: libprefix = 'compiler/lib/intel64' bins = ['ifort'] if LooseVersion(self.version) < LooseVersion('2013'): # idb is not shipped with ifort anymore in 2013.x versions (it is with icc though) bins.append('idb') libs = ['ifcore.a', 'ifcore.%s' % shlib_ext, 'iomp5.a', 'iomp5.%s' % shlib_ext] custom_paths = { 'files': [os.path.join(binprefix, x) for x in bins] + [os.path.join(libprefix, 'lib%s' % l) for l in libs], 'dirs': [], } custom_commands = ["which ifort"] IntelBase.sanity_check_step(self, custom_paths=custom_paths, custom_commands=custom_commands)
def sanity_check_step(self): """Custom sanity check paths for ifort.""" shlib_ext = get_shared_lib_ext() binprefix = 'bin/intel64' libprefix = 'lib/intel64' if LooseVersion(self.version) >= LooseVersion('2011'): if LooseVersion(self.version) <= LooseVersion('2011.3.174'): binprefix = 'bin' elif LooseVersion(self.version) >= LooseVersion('2013_sp1'): binprefix = 'bin' else: libprefix = 'compiler/lib/intel64' bins = ['ifort'] if LooseVersion(self.version) < LooseVersion('2013'): # idb is not shipped with ifort anymore in 2013.x versions (it is with icc though) bins.append('idb') libs = ['ifcore.a', 'ifcore.%s' % shlib_ext, 'iomp5.a', 'iomp5.%s' % shlib_ext] custom_paths = { 'files': [os.path.join(binprefix, x) for x in bins] + [os.path.join(libprefix, 'lib%s' % l) for l in libs], 'dirs': [], } # make very sure that expected 'compilers_and_libraries_<VERSION>/linux' subdir is there for recent versions, # since we rely on it being there in make_module_req_guess if self.comp_libs_subdir: custom_paths['dirs'].append(self.comp_libs_subdir) custom_commands = ["which ifort"] IntelBase.sanity_check_step(self, custom_paths=custom_paths, custom_commands=custom_commands)
def configure_step(self): """Configure TBB build/installation.""" if self.toolchain.name == DUMMY_TOOLCHAIN_NAME: IntelBase.configure_step(self) else: # no custom configure step when building from source pass
def configure_step(self): """Configure TBB build/installation.""" if self.toolchain.is_system_toolchain(): IntelBase.configure_step(self) else: # no custom configure step when building from source pass
def sanity_check_step(self): """Custom sanity check paths for ifort.""" binprefix = "bin/intel64" libprefix = "lib/intel64/lib" if LooseVersion(self.version) >= LooseVersion("2011"): if LooseVersion(self.version) <= LooseVersion("2011.3.174"): binprefix = "bin" elif LooseVersion(self.version) >= LooseVersion("2013_sp1"): binprefix = "bin" libprefix = "lib/intel64/lib" else: libprefix = "compiler/lib/intel64/lib" bins = ["ifort"] if LooseVersion(self.version) < LooseVersion('2013'): # idb is not shipped with ifort anymore in 2013.x versions (it is with icc though) bins.append("idb") custom_paths = { 'files': ["%s/%s" % (binprefix, x) for x in bins] + [ "%s%s" % (libprefix, x) for x in ["ifcore.a", "ifcore.so", "iomp5.a", "iomp5.so"] ], 'dirs': [], } IntelBase.sanity_check_step(self, custom_paths=custom_paths)
def sanity_check_step(self): """Custom sanity check paths for ifort.""" binprefix = "bin/intel64" libprefix = "lib/intel64/lib" if LooseVersion(self.version) >= LooseVersion("2011"): if LooseVersion(self.version) <= LooseVersion("2011.3.174"): binprefix = "bin" elif LooseVersion(self.version) >= LooseVersion("2013_sp1"): binprefix = "bin" libprefix = "lib/intel64/lib" else: libprefix = "compiler/lib/intel64/lib" bins = ["ifort"] if LooseVersion(self.version) < LooseVersion('2013'): # idb is not shipped with ifort anymore in 2013.x versions (it is with icc though) bins.append("idb") custom_paths = { 'files': ["%s/%s" % (binprefix, x) for x in bins] + ["%s%s" % (libprefix, x) for x in ["ifcore.a", "ifcore.so", "iomp5.a", "iomp5.so"]], 'dirs': [], } IntelBase.sanity_check_step(self, custom_paths=custom_paths)
def sanity_check_step(self): """Custom sanity check paths for ifort.""" binprefix = 'bin/intel64' libprefix = 'lib/intel64' if LooseVersion(self.version) >= LooseVersion('2011'): if LooseVersion(self.version) <= LooseVersion('2011.3.174'): binprefix = 'bin' elif LooseVersion(self.version) >= LooseVersion('2013_sp1'): binprefix = 'bin' else: libprefix = 'compiler/lib/intel64' bins = ['ifort'] if LooseVersion(self.version) < LooseVersion('2013'): # idb is not shipped with ifort anymore in 2013.x versions (it is with icc though) bins.append('idb') custom_paths = { 'files': [os.path.join(binprefix, x) for x in bins] + [ os.path.join(libprefix, 'lib%s' % x) for x in ['ifcore.a', 'ifcore.so', 'iomp5.a', 'iomp5.so'] ], 'dirs': [], } IntelBase.sanity_check_step(self, custom_paths=custom_paths)
def build_step(self): """Configure TBB build/installation.""" if self.toolchain.name == DUMMY_TOOLCHAIN_NAME: IntelBase.build_step(self) else: # build with: make compiler={icl, icc, gcc, clang} self.cfg.update('buildopts', 'compiler="%s"' % os.getenv('CC')) ConfigureMake.build_step(self)
def install_step(self): """Custom install step, to add extra symlinks""" if self.toolchain.name == DUMMY_TOOLCHAIN_NAME: silent_cfg_names_map = None silent_cfg_extras = None if LooseVersion(self.version) < LooseVersion('4.2'): silent_cfg_names_map = { 'activation_name': ACTIVATION_NAME_2012, 'license_file_name': LICENSE_FILE_NAME_2012, } elif LooseVersion(self.version) < LooseVersion('4.4'): silent_cfg_names_map = { 'install_mode_name': INSTALL_MODE_NAME_2015, 'install_mode': INSTALL_MODE_2015, } # In case of TBB 4.4.x and newer we have to specify ARCH_SELECTED in silent.cfg if LooseVersion(self.version) >= LooseVersion('4.4'): silent_cfg_extras = { 'ARCH_SELECTED': self.arch.upper() } IntelBase.install_step(self, silent_cfg_names_map=silent_cfg_names_map, silent_cfg_extras=silent_cfg_extras) # determine libdir os.chdir(self.installdir) if LooseVersion(self.version) < LooseVersion('4.1.0'): libglob = 'tbb/lib/intel64/cc*libc*_kernel*' libs = sorted(glob.glob(libglob), key=LooseVersion) if len(libs): # take the last one, should be ordered by cc version # we're only interested in the last bit libdir = libs[-1].split('/')[-1] else: raise EasyBuildError("No libs found using %s in %s", libglob, self.installdir) else: libdir = get_tbb_gccprefix() self.libpath = os.path.join('tbb', 'libs', 'intel64', libdir) self.log.debug("self.libpath: %s" % self.libpath) # applications go looking into tbb/lib so we move what's in there to libs # and symlink the right lib from /tbb/libs/intel64/... to lib install_libpath = os.path.join(self.installdir, 'tbb', 'lib') shutil.move(install_libpath, os.path.join(self.installdir, 'tbb', 'libs')) os.symlink(os.path.join(self.installdir, self.libpath), install_libpath) else: # no custom install step when building from source (building is done in install directory) cand_lib_paths = glob.glob(os.path.join(self.installdir, 'build', '*_release')) if len(cand_lib_paths) == 1: self.libpath = os.path.join('build', os.path.basename(cand_lib_paths[0])) else: raise EasyBuildError("Failed to isolate location of libraries: %s", cand_lib_paths)
def install_step(self): """Custom install step, to add extra symlinks""" if self.toolchain.is_system_toolchain(): silent_cfg_names_map = None silent_cfg_extras = None if LooseVersion(self.version) < LooseVersion('4.2'): silent_cfg_names_map = { 'activation_name': ACTIVATION_NAME_2012, 'license_file_name': LICENSE_FILE_NAME_2012, } elif LooseVersion(self.version) < LooseVersion('4.4'): silent_cfg_names_map = { 'install_mode_name': INSTALL_MODE_NAME_2015, 'install_mode': INSTALL_MODE_2015, } # In case of TBB 4.4.x and newer we have to specify ARCH_SELECTED in silent.cfg if LooseVersion(self.version) >= LooseVersion('4.4'): silent_cfg_extras = { 'ARCH_SELECTED': self.arch.upper() } IntelBase.install_step(self, silent_cfg_names_map=silent_cfg_names_map, silent_cfg_extras=silent_cfg_extras) # determine libdir os.chdir(self.installdir) if LooseVersion(self.version) < LooseVersion('4.1.0'): libglob = 'tbb/lib/intel64/cc*libc*_kernel*' libs = sorted(glob.glob(libglob), key=LooseVersion) if len(libs): # take the last one, should be ordered by cc version # we're only interested in the last bit libdir = libs[-1].split('/')[-1] else: raise EasyBuildError("No libs found using %s in %s", libglob, self.installdir) else: libdir = get_tbb_gccprefix() self.libpath = os.path.join('tbb', 'libs', 'intel64', libdir) self.log.debug("self.libpath: %s" % self.libpath) # applications go looking into tbb/lib so we move what's in there to libs # and symlink the right lib from /tbb/libs/intel64/... to lib install_libpath = os.path.join(self.installdir, 'tbb', 'lib') shutil.move(install_libpath, os.path.join(self.installdir, 'tbb', 'libs')) os.symlink(os.path.join(self.installdir, self.libpath), install_libpath) else: # no custom install step when building from source (building is done in install directory) cand_lib_paths = glob.glob(os.path.join(self.installdir, 'build', '*_release')) if len(cand_lib_paths) == 1: self.libpath = os.path.join('build', os.path.basename(cand_lib_paths[0])) else: raise EasyBuildError("Failed to isolate location of libraries: %s", cand_lib_paths)
def build_step(self): """Configure TBB build/installation.""" if self.toolchain.is_system_toolchain(): IntelBase.build_step(self) else: # build with: make compiler={icl, icc, gcc, clang} self.cfg.update('buildopts', 'compiler="%s"' % os.getenv('CC')) ConfigureMake.build_step(self) if self.cfg['with_python']: # Uses the Makefile target `python` self.cfg.update('buildopts', 'python') ConfigureMake.build_step(self)
def extra_options(): extra_vars = [('interfaces', [ True, "Indicates whether interfaces should be built (default: True)", CUSTOM ])] return IntelBase.extra_options(extra_vars)
def extra_options(): """Add easyconfig parameters custom to imkl (e.g. interfaces).""" extra_vars = { 'interfaces': [True, "Indicates whether interfaces should be built", CUSTOM], } return IntelBase.extra_options(extra_vars)
def extra_options(): extra_vars = { 'libfabric_configopts': ['', 'Configure options for the provided libfabric', CUSTOM], 'libfabric_rebuild': [ True, 'Try to rebuild internal libfabric instead of using provided binary', CUSTOM ], 'ofi_internal': [ True, 'Use internal shipped libfabric instead of external libfabric', CUSTOM ], 'set_mpi_wrappers_compiler': [ False, 'Override default compiler used by MPI wrapper commands', CUSTOM ], 'set_mpi_wrapper_aliases_gcc': [False, 'Set compiler for mpigcc/mpigxx via aliases', CUSTOM], 'set_mpi_wrapper_aliases_intel': [ False, 'Set compiler for mpiicc/mpiicpc/mpiifort via aliases', CUSTOM ], 'set_mpi_wrappers_all': [ False, 'Set (default) compiler for all MPI wrapper commands', CUSTOM ], } return IntelBase.extra_options(extra_vars)
def extra_options(): extra_vars = { 'set_mpi_wrappers_compiler': [False, 'Override default compiler used by MPI wrapper commands', CUSTOM], 'set_mpi_wrapper_aliases_gcc': [False, 'Set compiler for mpigcc/mpigxx via aliases', CUSTOM], 'set_mpi_wrapper_aliases_intel': [False, 'Set compiler for mpiicc/mpiicpc/mpiifort via aliases', CUSTOM], 'set_mpi_wrappers_all': [False, 'Set (default) compiler for all MPI wrapper commands', CUSTOM], } return IntelBase.extra_options(extra_vars)
def extra_options(): extra_vars = { 'ofi_internal': [True, 'Use internal shipped libfabric instead of external libfabric', CUSTOM], 'set_mpi_wrappers_compiler': [False, 'Override default compiler used by MPI wrapper commands', CUSTOM], 'set_mpi_wrapper_aliases_gcc': [False, 'Set compiler for mpigcc/mpigxx via aliases', CUSTOM], 'set_mpi_wrapper_aliases_intel': [False, 'Set compiler for mpiicc/mpiicpc/mpiifort via aliases', CUSTOM], 'set_mpi_wrappers_all': [False, 'Set (default) compiler for all MPI wrapper commands', CUSTOM], } return IntelBase.extra_options(extra_vars)
def sanity_check_step(self): """Custom sanity check paths for ifort.""" binprefix = "bin/intel64" libprefix = "lib/intel64/lib" if LooseVersion(self.version) >= LooseVersion("2011"): if LooseVersion(self.version) <= LooseVersion("2011.3.174"): binprefix = "bin" else: libprefix = "compiler/lib/intel64/lib" custom_paths = { 'files': ["%s/%s" % (binprefix, x) for x in ["ifort", "idb"]] + ["%s%s" % (libprefix, x) for x in ["ifcore.a", "ifcore.so", "iomp5.a", "iomp5.so"]], 'dirs': [] } IntelBase.sanity_check_step(self, custom_paths=custom_paths)
def extra_options(): extra_vars = IntelBase.extra_options() extra_vars.update(ConfigureMake.extra_options()) extra_vars.update({ 'with_python': [ False, "Should the TBB4Python bindings be built as well?", CUSTOM ], }) return extra_vars
def extra_options(): """Add easyconfig parameters custom to imkl (e.g. interfaces).""" extra_vars = { 'interfaces': [True, "Indicates whether interfaces should be built", CUSTOM], 'flexiblas': [ None, "Indicates whether FlexiBLAS-compatible libraries should be built, " "default from version 2021", CUSTOM ], } return IntelBase.extra_options(extra_vars)
def extra_options(): extra_vars = { 'ofi_internal': [ True, 'Use internal shipped libfabric instead of external libfabric', CUSTOM ], 'set_mpi_wrappers_compiler': [ False, 'Override default compiler used by MPI wrapper commands', CUSTOM ], 'set_mpi_wrapper_aliases_gcc': [False, 'Set compiler for mpigcc/mpigxx via aliases', CUSTOM], 'set_mpi_wrapper_aliases_intel': [ False, 'Set compiler for mpiicc/mpiicpc/mpiifort via aliases', CUSTOM ], 'set_mpi_wrappers_all': [ False, 'Set (default) compiler for all MPI wrapper commands', CUSTOM ], } return IntelBase.extra_options(extra_vars)
def extra_options(): extra_vars = { 'preferredmpi': ['impi3', "Preferred MPI type", CUSTOM], } return IntelBase.extra_options(extra_vars)
def install_step(self): """Custom install step, to add extra symlinks""" install_tbb_lib_path = os.path.join(self.installdir, 'tbb', 'lib') if self.toolchain.is_system_toolchain(): silent_cfg_names_map = None silent_cfg_extras = None if LooseVersion(self.version) < LooseVersion('4.2'): silent_cfg_names_map = { 'activation_name': ACTIVATION_NAME_2012, 'license_file_name': LICENSE_FILE_NAME_2012, } elif LooseVersion(self.version) < LooseVersion('4.4'): silent_cfg_names_map = { 'install_mode_name': INSTALL_MODE_NAME_2015, 'install_mode': INSTALL_MODE_2015, } # In case of TBB 4.4.x and newer we have to specify ARCH_SELECTED in silent.cfg if LooseVersion(self.version) >= LooseVersion('4.4'): silent_cfg_extras = {'ARCH_SELECTED': self.arch.upper()} IntelBase.install_step(self, silent_cfg_names_map=silent_cfg_names_map, silent_cfg_extras=silent_cfg_extras) # determine libdir os.chdir(self.installdir) libpath = os.path.join('tbb', 'libs', 'intel64') if LooseVersion(self.version) < LooseVersion('4.1.0'): libglob = 'tbb/lib/intel64/cc*libc*_kernel*' libs = sorted(glob.glob(libglob), key=LooseVersion) if libs: # take the last one, should be ordered by cc version # we're only interested in the last bit libdir = os.path.basename(libs[-1]) else: raise EasyBuildError("No libs found using %s in %s", libglob, self.installdir) else: libdir = get_tbb_gccprefix(libpath) libpath = os.path.join(libpath, libdir) # applications go looking into tbb/lib so we move what's in there to tbb/libs shutil.move(install_tbb_lib_path, os.path.join(self.installdir, 'tbb', 'libs')) # And add a symlink of the library folder to tbb/lib symlink(os.path.join(self.installdir, libpath), install_tbb_lib_path) else: # no custom install step when building from source (building is done in install directory) cand_lib_paths = glob.glob( os.path.join(self.installdir, 'build', '*_release')) if len(cand_lib_paths) == 1: libpath = os.path.join('build', os.path.basename(cand_lib_paths[0])) else: raise EasyBuildError( "Failed to isolate location of libraries: %s", cand_lib_paths) self.log.debug("libpath: %s" % libpath) # applications usually look into /lib, so we move the folder there and symlink the original one to it # This is also important so that /lib and /lib64 are actually on the same level root_lib_path = os.path.join(self.installdir, 'lib') move_file(libpath, root_lib_path) symlink(os.path.relpath(root_lib_path, os.path.join(libpath)), libpath, use_abspath_source=False) # Install CMake config files if possible if self._has_cmake() and LooseVersion( self.version) >= LooseVersion('2020.0'): cmake_install_dir = os.path.join(root_lib_path, 'cmake', 'TBB') cmd = [ 'cmake', '-DINSTALL_DIR=' + cmake_install_dir, '-DSYSTEM_NAME=Linux', '-P tbb_config_installer.cmake', ] run_cmd(' '.join(cmd), path=os.path.join(self.builddir, 'cmake'))
def extra_options(): extra_vars = {"preferredmpi": ["impi3", "Preferred MPI type", CUSTOM]} return IntelBase.extra_options(extra_vars)
def extra_options(): extra_vars = [('interfaces', [True, "Indicates whether interfaces should be built (default: True)", CUSTOM])] return IntelBase.extra_options(extra_vars)
def extra_options(): extra_vars = [('preferredmpi', ['impi3', "Preferred MPI type (default: 'impi3')", CUSTOM])] return IntelBase.extra_options(extra_vars)
def cleanup_step(self): """Cleanup step""" if self.toolchain.name == DUMMY_TOOLCHAIN_NAME: IntelBase.cleanup_step(self) else: ConfigureMake.cleanup_step(self)
def cleanup_step(self): """Cleanup step""" if self.toolchain.is_system_toolchain(): IntelBase.cleanup_step(self) else: ConfigureMake.cleanup_step(self)
def extra_options(): extra_vars = [ ('preferredmpi', ['impi3', "Preferred MPI type (default: 'impi3')", CUSTOM]) ] return IntelBase.extra_options(extra_vars)