Skip to content

Commit

Permalink
Pass wrapmode value around as a string. (#13229)
Browse files Browse the repository at this point in the history
  • Loading branch information
jpakkane authored May 19, 2024
1 parent 77db04f commit 128f0e8
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 17 deletions.
7 changes: 2 additions & 5 deletions mesonbuild/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
from .mesonlib import ExecutableSerialisation, FileMode, FileOrString
from .modules import ModuleState
from .mparser import BaseNode
from .wrap import WrapMode

GeneratedTypes = T.Union['CustomTarget', 'CustomTargetIndex', 'GeneratedList']
LibTypes = T.Union['SharedLibrary', 'StaticLibrary', 'CustomTarget', 'CustomTargetIndex']
Expand Down Expand Up @@ -662,12 +661,10 @@ def set_option_overrides(self, option_overrides: T.Dict[OptionKey, str]) -> None
def get_options(self) -> coredata.OptionsView:
return self.options

def get_option(self, key: 'OptionKey') -> T.Union[str, int, bool, 'WrapMode']:
# We don't actually have wrapmode here to do an assert, so just do a
# cast, we know what's in coredata anyway.
def get_option(self, key: 'OptionKey') -> T.Union[str, int, bool]:
# TODO: if it's possible to annotate get_option or validate_option_value
# in the future we might be able to remove the cast here
return T.cast('T.Union[str, int, bool, WrapMode]', self.options[key].value)
return T.cast('T.Union[str, int, bool]', self.options[key].value)

@staticmethod
def parse_overrides(kwargs: T.Dict[str, T.Any]) -> T.Dict[OptionKey, str]:
Expand Down
7 changes: 1 addition & 6 deletions mesonbuild/coredata.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
listify_array_value, OptionKey, OptionType, stringlistify,
pickle_load
)
from .wrap import WrapMode
import ast
import argparse
import configparser
Expand Down Expand Up @@ -749,20 +748,16 @@ def init_backend_options(self, backend_name: str) -> None:
'Default project to execute in Visual Studio',
'')

def get_option(self, key: OptionKey) -> T.Union[T.List[str], str, int, bool, WrapMode]:
def get_option(self, key: OptionKey) -> T.Union[T.List[str], str, int, bool]:
try:
v = self.options[key].value
if key.name == 'wrap_mode':
return WrapMode[v]
return v
except KeyError:
pass

try:
v = self.options[key.as_root()]
if v.yielding:
if key.name == 'wrap_mode':
return WrapMode[v.value]
return v.value
except KeyError:
pass
Expand Down
3 changes: 1 addition & 2 deletions mesonbuild/interpreter/dependencyfallbacks.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 +315,7 @@ def lookup(self, kwargs: TYPE_nkwargs, force_fallback: bool = False) -> Dependen
return self._notfound_dependency()

# Check if usage of the subproject fallback is forced
wrap_mode = self.coredata.get_option(OptionKey('wrap_mode'))
assert isinstance(wrap_mode, WrapMode), 'for mypy'
wrap_mode = WrapMode.from_string(self.coredata.get_option(OptionKey('wrap_mode')))
force_fallback_for = self.coredata.get_option(OptionKey('force_fallback_for'))
assert isinstance(force_fallback_for, list), 'for mypy'
self.nofallback = wrap_mode == WrapMode.nofallback
Expand Down
4 changes: 2 additions & 2 deletions mesonbuild/interpreter/interpreter.py
Original file line number Diff line number Diff line change
Expand Up @@ -1284,7 +1284,7 @@ def func_project(self, node: mparser.FunctionNode, args: T.Tuple[str, T.List[str
self.build.subproject_dir = self.subproject_dir

# Load wrap files from this (sub)project.
wrap_mode = self.coredata.get_option(OptionKey('wrap_mode'))
wrap_mode = WrapMode.from_string(self.coredata.get_option(OptionKey('wrap_mode')))
if not self.is_subproject() or wrap_mode != WrapMode.nopromote:
subdir = os.path.join(self.subdir, spdirname)
r = wrap.Resolver(self.environment.get_source_dir(), subdir, self.subproject, wrap_mode)
Expand Down Expand Up @@ -1679,7 +1679,7 @@ def program_lookup(self, args: T.List[mesonlib.FileOrString], for_machine: Machi
return ExternalProgram('meson', self.environment.get_build_command(), silent=True)

fallback = None
wrap_mode = self.coredata.get_option(OptionKey('wrap_mode'))
wrap_mode = WrapMode.from_string(self.coredata.get_option(OptionKey('wrap_mode')))
if wrap_mode != WrapMode.nofallback and self.environment.wrap_resolver:
fallback = self.environment.wrap_resolver.find_program_provider(args)
if fallback and wrap_mode == WrapMode.forcefallback:
Expand Down
3 changes: 1 addition & 2 deletions mesonbuild/modules/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
from ..interpreter.interpreter import ProgramVersionFunc
from ..interpreterbase import TYPE_var, TYPE_kwargs
from ..programs import OverrideProgram
from ..wrap import WrapMode
from ..dependencies import Dependency

class ModuleState:
Expand Down Expand Up @@ -134,7 +133,7 @@ def test(self, args: T.Tuple[str, T.Union[build.Executable, build.Jar, 'External
def get_option(self, name: str, subproject: str = '',
machine: MachineChoice = MachineChoice.HOST,
lang: T.Optional[str] = None,
module: T.Optional[str] = None) -> T.Union[T.List[str], str, int, bool, 'WrapMode']:
module: T.Optional[str] = None) -> T.Union[T.List[str], str, int, bool]:
return self.environment.coredata.get_option(mesonlib.OptionKey(name, subproject, machine, lang, module))

def is_user_defined_option(self, name: str, subproject: str = '',
Expand Down

0 comments on commit 128f0e8

Please sign in to comment.