From ab8648e895cdf4d2d365e237f79d4d2a571f2874 Mon Sep 17 00:00:00 2001 From: Meagan Lang Date: Thu, 23 May 2024 19:43:41 -0400 Subject: [PATCH] Update build requirement Add debug messages for checking environment Fix regex for GNU ar --- recipe/meta.yaml | 2 +- utils/requirements/requirements.json | 14 ++++++-- utils/requirements/requirements.yaml | 7 +++- yggdrasil/drivers/CModelDriver.py | 3 +- yggdrasil/drivers/CompiledModelDriver.py | 43 +++++++++++++++++++----- 5 files changed, 55 insertions(+), 14 deletions(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 381790618..969c26323 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -45,11 +45,11 @@ build: requirements: build: - - build - cross-python_{{ target_platform }} # [build_platform != target_platform] - hatch-fancy-pypi-readme - numpy >=1.13.0 - python # [build_platform != target_platform] + - python-build - scikit-build-core - setuptools_scm - {{ compiler('c') }} diff --git a/utils/requirements/requirements.json b/utils/requirements/requirements.json index 4575d930b..303d42cb9 100644 --- a/utils/requirements/requirements.json +++ b/utils/requirements/requirements.json @@ -1,11 +1,21 @@ { "general": [ { - "build": { + "python-build": { "flags": { "build": true, "build_only": true - } + }, + "options": [ + { + "name": "build", + "method": "pip" + }, + { + "name": "python-build", + "method": "conda" + } + ] } }, "chevron", diff --git a/utils/requirements/requirements.yaml b/utils/requirements/requirements.yaml index 5a9db6d5a..80c59232b 100644 --- a/utils/requirements/requirements.yaml +++ b/utils/requirements/requirements.yaml @@ -1,8 +1,13 @@ general: - - build: + - python-build: flags: build: True build_only: True + options: + - name: build + method: pip + - name: python-build + method: conda - chevron - "cross-python_{{ target_platform }}": method: conda_recipe diff --git a/yggdrasil/drivers/CModelDriver.py b/yggdrasil/drivers/CModelDriver.py index 9bf3335f7..71e176e59 100755 --- a/yggdrasil/drivers/CModelDriver.py +++ b/yggdrasil/drivers/CModelDriver.py @@ -401,7 +401,8 @@ class ARArchiver(ArchiverBase): output_first_library = True toolset = 'gnu' version_regex = [ - r'(?PGNU ar version \d+\.\d+\.\d+(?:\-[\.0-9a-zA-Z]+)?)'] + r'(?PGNU ar \(.+\) \d+\.\d+(?:\.\d+)?' + r'(?:\-[\.0-9a-zA-Z]+)?)'] compatible_toolsets = ['llvm'] search_path_envvar = ['LIBRARY_PATH'] diff --git a/yggdrasil/drivers/CompiledModelDriver.py b/yggdrasil/drivers/CompiledModelDriver.py index e56e1bd87..02f383aae 100644 --- a/yggdrasil/drivers/CompiledModelDriver.py +++ b/yggdrasil/drivers/CompiledModelDriver.py @@ -4032,10 +4032,10 @@ def before_registration(cls): setattr(cls, k, copy.deepcopy(getattr(cls, k, []))) # Set attributes based on environment variables or sysconfig if cls.default_executable is None: - cls.default_executable = cls.env_matches_tool() + cls.default_executable = cls.env_matches_tool(verbose=True) if cls.default_executable is None: cls.default_executable = cls.env_matches_tool( - use_sysconfig=True) + use_sysconfig=True, verbose=True) # Set default_executable to name if cls.default_executable is None: cls.default_executable = cls.toolname @@ -4452,7 +4452,7 @@ def is_installed(cls): @classmethod def env_matches_tool(cls, use_sysconfig=False, env=None, - with_flags=False): + with_flags=False, verbose=False): r"""Determine if the executable pointed to by any environment variable matches this compilation tool. @@ -4464,6 +4464,8 @@ def env_matches_tool(cls, use_sysconfig=False, env=None, updated with variables. Defaults to None and is ignored. with_flags (bool, optional): If True, preserve any flags included in the environment variable. Defaults to False. + verbose (bool, optional): If True, print out information about + the tools that were compared and the result. Returns: bool: True if the environment variable matches, False otherwise. @@ -4490,16 +4492,39 @@ def env_matches_tool(cls, use_sysconfig=False, env=None, envi_version = CompilationToolBase.tool_version_static( cls, envi_executable, require_match=True) if this_version and this_version and this_version == envi_version: + if verbose: + logger.info(f"{cls.tooltype.title()} {cls.toolname} " + f"matches environment variable " + f"(use_sysconfig={use_sysconfig}) " + f"{cls.default_executable_env}:" + f"\n\t{envi_full}" + f"\n\ttool_exe = {this_executable}" + f"\n\tenvi_exe = {envi_executable}" + f"\n\ttool_ver = {this_version}" + f"\n\tenvi_ver = {envi_version}") return out if this_executable == cls.toolname and envi_version: + if verbose: + logger.info(f"{cls.tooltype.title()} {cls.toolname} " + f"overriden from environment variable " + f"(use_sysconfig={use_sysconfig}) " + f"{cls.default_executable_env}:" + f"\n\t{envi_full}" + f"\n\ttool_exe = {this_executable}" + f"\n\tenvi_exe = {envi_executable}" + f"\n\ttool_ver = {this_version}" + f"\n\tenvi_ver = {envi_version}") return out if this_version and envi_version: - logger.info(f"{cls.tooltype.title()} {cls.toolname} " - f"does not match environment:" - f"\n\ttool_exe = {this_executable}" - f"\n\tenvi_exe = {envi_executable}" - f"\n\ttool_ver = {this_version}" - f"\n\tenvi_ver = {envi_version}") + if verbose: + logger.info(f"{cls.tooltype.title()} {cls.toolname} " + f"does not match environment variable " + f"(use_sysconfig={use_sysconfig}) " + f"{cls.default_executable_env}:" + f"\n\ttool_exe = {this_executable}" + f"\n\tenvi_exe = {envi_executable}" + f"\n\ttool_ver = {this_version}" + f"\n\tenvi_ver = {envi_version}") return None @classmethod