diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2020-03-05 09:50:30 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2020-03-05 09:58:52 -0800 |
commit | 06b1a317d26cbe2a1bd7a232dd9726590d0c0a48 (patch) | |
tree | a2adf1f707779f18e226bf39c34447d229e71758 /mesonbuild/modules | |
parent | 4d6ac91f950380d8262c13ce529ac0d6d8f6f4ba (diff) | |
download | meson-06b1a317d26cbe2a1bd7a232dd9726590d0c0a48.zip meson-06b1a317d26cbe2a1bd7a232dd9726590d0c0a48.tar.gz meson-06b1a317d26cbe2a1bd7a232dd9726590d0c0a48.tar.bz2 |
Make use of unholder
We have a lot of cases of code like:
```python
if hasattr(var, 'held_object'):
var = var.held_object`
```
replace that with the unholder function.
Diffstat (limited to 'mesonbuild/modules')
-rw-r--r-- | mesonbuild/modules/__init__.py | 8 | ||||
-rw-r--r-- | mesonbuild/modules/gnome.py | 39 | ||||
-rw-r--r-- | mesonbuild/modules/qt.py | 6 | ||||
-rw-r--r-- | mesonbuild/modules/windows.py | 6 |
4 files changed, 17 insertions, 42 deletions
diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py index dc3c786..dc86a1b 100644 --- a/mesonbuild/modules/__init__.py +++ b/mesonbuild/modules/__init__.py @@ -18,6 +18,7 @@ import os from .. import build +from ..mesonlib import unholder class ExtensionModule: @@ -38,12 +39,7 @@ def get_include_args(include_dirs, prefix='-I'): return [] dirs_str = [] - for incdirs in include_dirs: - if hasattr(incdirs, "held_object"): - dirs = incdirs.held_object - else: - dirs = incdirs - + for dirs in unholder(include_dirs): if isinstance(dirs, str): dirs_str += ['%s%s' % (prefix, dirs)] continue diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index e087bcd..4ddde28 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -29,7 +29,8 @@ from . import get_include_args from . import ExtensionModule from . import ModuleReturnValue from ..mesonlib import ( - MachineChoice, MesonException, OrderedSet, Popen_safe, extract_as_list, join_args + MachineChoice, MesonException, OrderedSet, Popen_safe, extract_as_list, + join_args, unholder, ) from ..dependencies import Dependency, PkgConfigDependency, InternalDependency from ..interpreterbase import noKwargs, permittedKwargs, FeatureNew, FeatureNewKwargs @@ -238,9 +239,7 @@ class GnomeModule(ExtensionModule): subdirs = [] for resfile in dep_files[:]: resbasename = os.path.basename(resfile) - for dep in dependencies: - if hasattr(dep, 'held_object'): - dep = dep.held_object + for dep in unholder(dependencies): if isinstance(dep, mesonlib.File): if dep.fname != resbasename: continue @@ -322,9 +321,7 @@ class GnomeModule(ExtensionModule): if isinstance(dep, InternalDependency): cflags.update(dep.get_compile_args()) cflags.update(get_include_args(dep.include_directories)) - for lib in dep.libraries: - if hasattr(lib, 'held_object'): - lib = lib.held_object + for lib in unholder(dep.libraries): if isinstance(lib, build.SharedLibrary): internal_ldflags.update(self._get_link_args(state, lib, depends, include_rpath)) libdepflags = self._get_dependencies_flags(lib.get_external_deps(), state, depends, include_rpath, @@ -341,9 +338,7 @@ class GnomeModule(ExtensionModule): external_ldflags.update(extdepflags[2]) external_ldflags_nodedup += extdepflags[3] gi_includes.update(extdepflags[4]) - for source in dep.sources: - if hasattr(source, 'held_object'): - source = source.held_object + for source in unholder(dep.sources): if isinstance(source, GirTarget): gi_includes.update([os.path.join(state.environment.get_build_dir(), source.get_subdir())]) @@ -457,9 +452,7 @@ class GnomeModule(ExtensionModule): if 'includes' in kwargs: includes = mesonlib.extract_as_list(kwargs, 'includes', pop = True) - for inc in includes: - if hasattr(inc, 'held_object'): - inc = inc.held_object + for inc in unholder(includes): if isinstance(inc, str): ret += ['--include=%s' % (inc, )] elif isinstance(inc, GirTarget): @@ -616,9 +609,7 @@ class GnomeModule(ExtensionModule): gir_filelist_filename = os.path.join(gir_filelist_dir, '%s_%s_gir_filelist' % (ns, nsversion)) with open(gir_filelist_filename, 'w', encoding='utf-8') as gir_filelist: - for s in libsources: - if hasattr(s, 'held_object'): - s = s.held_object + for s in unholder(libsources): if isinstance(s, (build.CustomTarget, build.CustomTargetIndex)): for custom_output in s.get_outputs(): gir_filelist.write(os.path.join(state.environment.get_build_dir(), @@ -671,15 +662,11 @@ class GnomeModule(ExtensionModule): # dependencies and also find the include directories needed for the # typelib generation custom target below. typelib_includes = [] - for dep in deps: - if hasattr(dep, 'held_object'): - dep = dep.held_object + for dep in unholder(deps): # Add a dependency on each GirTarget listed in dependencies and add # the directory where it will be generated to the typelib includes if isinstance(dep, InternalDependency): - for source in dep.sources: - if hasattr(source, 'held_object'): - source = source.held_object + for source in unholder(dep.sources): if isinstance(source, GirTarget) and source not in depends: depends.append(source) subdir = os.path.join(state.environment.get_build_dir(), @@ -1003,9 +990,7 @@ This will become a hard error in the future.''') depends = [] content_files = [] - for s in mesonlib.extract_as_list(kwargs, 'content_files'): - if hasattr(s, 'held_object'): - s = s.held_object + for s in unholder(mesonlib.extract_as_list(kwargs, 'content_files')): if isinstance(s, (build.CustomTarget, build.CustomTargetIndex)): depends.append(s) for o in s.get_outputs(): @@ -1601,9 +1586,7 @@ G_END_DECLS''' vapi_includes = [] ret = [] remaining_args = [] - for arg in arg_list: - if hasattr(arg, 'held_object'): - arg = arg.held_object + for arg in unholder(arg_list): if isinstance(arg, InternalDependency): targets = [t for t in arg.sources if isinstance(t, VapiTarget)] for target in targets: diff --git a/mesonbuild/modules/qt.py b/mesonbuild/modules/qt.py index b4f3a49..56a1406 100644 --- a/mesonbuild/modules/qt.py +++ b/mesonbuild/modules/qt.py @@ -15,7 +15,7 @@ import os from .. import mlog from .. import build -from ..mesonlib import MesonException, Popen_safe, extract_as_list, File +from ..mesonlib import MesonException, Popen_safe, extract_as_list, File, unholder from ..dependencies import Dependency, Qt4Dependency, Qt5Dependency import xml.etree.ElementTree as ET from . import ModuleReturnValue, get_include_args, ExtensionModule @@ -171,9 +171,7 @@ class QtBaseModule(ExtensionModule): sources.append(ui_output) inc = get_include_args(include_dirs=include_directories) compile_args = [] - for dep in dependencies: - if hasattr(dep, 'held_object'): - dep = dep.held_object + for dep in unholder(dependencies): if isinstance(dep, Dependency): for arg in dep.get_compile_args(): if arg.startswith('-I') or arg.startswith('-D'): diff --git a/mesonbuild/modules/windows.py b/mesonbuild/modules/windows.py index 7cf46f7..8589adc 100644 --- a/mesonbuild/modules/windows.py +++ b/mesonbuild/modules/windows.py @@ -18,7 +18,7 @@ import re from .. import mlog from .. import mesonlib, build -from ..mesonlib import MachineChoice, MesonException, extract_as_list +from ..mesonlib import MachineChoice, MesonException, extract_as_list, unholder from . import get_include_args from . import ModuleReturnValue from . import ExtensionModule @@ -116,9 +116,7 @@ class WindowsModule(ExtensionModule): for subsrc in src: add_target(subsrc) return - - if hasattr(src, 'held_object'): - src = src.held_object + src = unholder(src) if isinstance(src, str): name_format = 'file {!r}' |