From b0dce06bf17057be266a6b2ce80338f95080697c Mon Sep 17 00:00:00 2001 From: Ward Poelmans Date: Thu, 28 May 2015 15:38:53 +0200 Subject: [PATCH 1/3] Default out of tree build for CMakeMake --- easybuild/easyblocks/generic/cmakemake.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/easybuild/easyblocks/generic/cmakemake.py b/easybuild/easyblocks/generic/cmakemake.py index ab5198f5469..87b3f5292a2 100644 --- a/easybuild/easyblocks/generic/cmakemake.py +++ b/easybuild/easyblocks/generic/cmakemake.py @@ -81,7 +81,7 @@ def extra_options(extra_vars=None): "Defaults to 'Release' or 'Debug' depending on toolchainopts[debug]", CUSTOM], 'configure_cmd': [DEFAULT_CONFIGURE_CMD, "Configure command to use", CUSTOM], 'srcdir': [None, "Source directory location to provide to cmake command", CUSTOM], - 'separate_build_dir': [False, "Perform build in a separate directory", CUSTOM], + 'separate_build_dir': [True, "Perform build in a separate directory", CUSTOM], }) return extra_vars @@ -118,7 +118,7 @@ def configure_step(self, srcdir=None, builddir=None): setup_cmake_env(self.toolchain) - if builddir is None and self.cfg.get('separate_build_dir', False): + if builddir is None and self.cfg.get('separate_build_dir', True): builddir = os.path.join(self.builddir, 'easybuild_obj') if builddir: From 33c5cd67cdde6169d3b37e4a0a667c0a0ca099cf Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Thu, 9 Jan 2020 15:57:44 +0100 Subject: [PATCH 2/3] Treat srcdir as relative to the start_dir --- easybuild/easyblocks/generic/cmakemake.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/easybuild/easyblocks/generic/cmakemake.py b/easybuild/easyblocks/generic/cmakemake.py index 87b3f5292a2..8949073be2f 100644 --- a/easybuild/easyblocks/generic/cmakemake.py +++ b/easybuild/easyblocks/generic/cmakemake.py @@ -130,7 +130,8 @@ def configure_step(self, srcdir=None, builddir=None): if srcdir is None: if self.cfg.get('srcdir', None) is not None: - srcdir = self.cfg['srcdir'] + # Note that the join returns srcdir if it is absolute + srcdir = os.path.join(default_srcdir, self.cfg['srcdir']) else: srcdir = default_srcdir From 6695267f3e4bc6698cc5eb2102c5e73d06b35d04 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Wed, 1 Apr 2020 15:59:34 +0200 Subject: [PATCH 3/3] Use self.cfg.get to avoid hard failures on unset config values --- easybuild/easyblocks/generic/cmakemake.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/easybuild/easyblocks/generic/cmakemake.py b/easybuild/easyblocks/generic/cmakemake.py index 8949073be2f..967863b5379 100644 --- a/easybuild/easyblocks/generic/cmakemake.py +++ b/easybuild/easyblocks/generic/cmakemake.py @@ -94,7 +94,7 @@ def __init__(self, *args, **kwargs): def lib_ext(self): """Return the extension for libraries build based on `build_shared_libs` or None if that is unset""" if self._lib_ext is None: - build_shared_libs = self.cfg['build_shared_libs'] + build_shared_libs = self.cfg.get('build_shared_libs') if build_shared_libs: self._lib_ext = get_shared_lib_ext() elif build_shared_libs is not None: @@ -108,7 +108,7 @@ def lib_ext(self, value): @property def build_type(self): """Build type set in the EasyConfig with default determined by toolchainopts""" - build_type = self.cfg['build_type'] + build_type = self.cfg.get('build_type') if build_type is None: build_type = 'Debug' if self.toolchain.options.get('debug', None) else 'Release' return build_type @@ -138,7 +138,7 @@ def configure_step(self, srcdir=None, builddir=None): options = ['-DCMAKE_INSTALL_PREFIX=%s' % self.installdir] if '-DCMAKE_BUILD_TYPE=' in self.cfg['configopts']: - if self.cfg['build_type'] is not None: + if self.cfg.get('build_type') is not None: self.log.warning('CMAKE_BUILD_TYPE is set in configopts. Ignoring build_type') else: options.append('-DCMAKE_BUILD_TYPE=%s' % self.build_type) @@ -149,7 +149,7 @@ def configure_step(self, srcdir=None, builddir=None): # Set flag for shared libs if requested # Not adding one allows the project to choose a default - build_shared_libs = self.cfg['build_shared_libs'] + build_shared_libs = self.cfg.get('build_shared_libs') if build_shared_libs is not None: # Contrary to other options build_shared_libs takes precedence over configopts which may be unexpected. # This is to allow self.lib_ext to be determined correctly.