move get_env_var_pair to environment

This is only used in environment, so it should live there too.
pull/8159/head
Dylan Baker 4 years ago
parent f3fcbba1f8
commit 0076db6ff9
  1. 36
      mesonbuild/envconfig.py
  2. 34
      mesonbuild/environment.py

@ -12,20 +12,15 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import os, subprocess import subprocess
import typing as T import typing as T
from enum import Enum from enum import Enum
from . import mesonlib from . import mesonlib
from .mesonlib import EnvironmentException, MachineChoice, PerMachine, split_args from .mesonlib import EnvironmentException
from . import mlog from . import mlog
from pathlib import Path from pathlib import Path
_T = T.TypeVar('_T')
if T.TYPE_CHECKING:
from .environment import Environment
# These classes contains all the data pulled from configuration files (native # These classes contains all the data pulled from configuration files (native
# and cross file currently), and also assists with the reading environment # and cross file currently), and also assists with the reading environment
@ -136,33 +131,6 @@ class CMakeSkipCompilerTest(Enum):
NEVER = 'never' NEVER = 'never'
DEP_ONLY = 'dep_only' DEP_ONLY = 'dep_only'
def get_env_var_pair(for_machine: MachineChoice,
is_cross: bool,
var_name: str) -> T.Optional[T.Tuple[str, str]]:
"""
Returns the exact env var and the value.
"""
candidates = PerMachine(
# The prefixed build version takes priority, but if we are native
# compiling we fall back on the unprefixed host version. This
# allows native builds to never need to worry about the 'BUILD_*'
# ones.
([var_name + '_FOR_BUILD'] if is_cross else [var_name]),
# Always just the unprefixed host verions
[var_name]
)[for_machine]
for var in candidates:
value = os.environ.get(var)
if value is not None:
break
else:
formatted = ', '.join(['{!r}'.format(var) for var in candidates])
mlog.debug('None of {} are defined in the environment, not changing global flags.'.format(formatted))
return None
mlog.debug('Using {!r} from environment with value: {!r}'.format(var, value))
return var, value
class Properties: class Properties:
def __init__( def __init__(
self, self,

@ -23,15 +23,13 @@ from . import coredata
from .linkers import ArLinker, ArmarLinker, VisualStudioLinker, DLinker, CcrxLinker, Xc16Linker, CompCertLinker, C2000Linker, IntelVisualStudioLinker, AIXArLinker from .linkers import ArLinker, ArmarLinker, VisualStudioLinker, DLinker, CcrxLinker, Xc16Linker, CompCertLinker, C2000Linker, IntelVisualStudioLinker, AIXArLinker
from . import mesonlib from . import mesonlib
from .mesonlib import ( from .mesonlib import (
MesonException, EnvironmentException, MachineChoice, Popen_safe, MesonException, EnvironmentException, MachineChoice, Popen_safe, PerMachine,
PerMachineDefaultable, PerThreeMachineDefaultable, split_args, quote_arg, OptionKey PerMachineDefaultable, PerThreeMachineDefaultable, split_args, quote_arg, OptionKey
) )
from . import mlog from . import mlog
from .envconfig import ( from .envconfig import (
BinaryTable, ENV_VAR_PROG_MAP, MachineInfo, BinaryTable, MachineInfo, Properties, known_cpu_families, CMakeVariables,
Properties, known_cpu_families, get_env_var_pair,
CMakeVariables,
) )
from . import compilers from . import compilers
from .compilers import ( from .compilers import (
@ -143,6 +141,34 @@ CompilersDict = T.Dict[str, Compiler]
if T.TYPE_CHECKING: if T.TYPE_CHECKING:
import argparse import argparse
def get_env_var_pair(for_machine: MachineChoice,
is_cross: bool,
var_name: str) -> T.Optional[T.Tuple[str, str]]:
"""
Returns the exact env var and the value.
"""
candidates = PerMachine(
# The prefixed build version takes priority, but if we are native
# compiling we fall back on the unprefixed host version. This
# allows native builds to never need to worry about the 'BUILD_*'
# ones.
([var_name + '_FOR_BUILD'] if is_cross else [var_name]),
# Always just the unprefixed host verions
[var_name]
)[for_machine]
for var in candidates:
value = os.environ.get(var)
if value is not None:
break
else:
formatted = ', '.join(['{!r}'.format(var) for var in candidates])
mlog.debug('None of {} are defined in the environment, not changing global flags.'.format(formatted))
return None
mlog.debug('Using {!r} from environment with value: {!r}'.format(var, value))
return var, value
def detect_gcovr(min_version='3.3', new_rootdir_version='4.2', log=False): def detect_gcovr(min_version='3.3', new_rootdir_version='4.2', log=False):
gcovr_exe = 'gcovr' gcovr_exe = 'gcovr'
try: try:

Loading…
Cancel
Save