aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2020-03-05 09:50:30 -0800
committerDylan Baker <dylan@pnwbakers.com>2020-03-05 09:58:52 -0800
commit06b1a317d26cbe2a1bd7a232dd9726590d0c0a48 (patch)
treea2adf1f707779f18e226bf39c34447d229e71758 /mesonbuild/modules
parent4d6ac91f950380d8262c13ce529ac0d6d8f6f4ba (diff)
downloadmeson-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__.py8
-rw-r--r--mesonbuild/modules/gnome.py39
-rw-r--r--mesonbuild/modules/qt.py6
-rw-r--r--mesonbuild/modules/windows.py6
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}'