diff options
Diffstat (limited to 'mesonbuild/modules')
-rw-r--r-- | mesonbuild/modules/__init__.py | 8 | ||||
-rw-r--r-- | mesonbuild/modules/gnome.py | 51 | ||||
-rw-r--r-- | mesonbuild/modules/i18n.py | 5 | ||||
-rw-r--r-- | mesonbuild/modules/pkgconfig.py | 4 | ||||
-rw-r--r-- | mesonbuild/modules/qt.py | 10 | ||||
-rw-r--r-- | mesonbuild/modules/windows.py | 6 |
6 files changed, 29 insertions, 55 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 1743b59..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 @@ -83,11 +84,11 @@ class GnomeModule(ExtensionModule): mlog.bold('https://bugzilla.gnome.org/show_bug.cgi?id=774368')) @staticmethod - @mesonlib.run_once def _print_gdbus_warning(): mlog.warning('Code generated with gdbus_codegen() requires the root directory be added to\n' ' include_directories of targets with GLib < 2.51.3:', - mlog.bold('https://github.com/mesonbuild/meson/issues/1387')) + mlog.bold('https://github.com/mesonbuild/meson/issues/1387'), + once=True) @FeatureNewKwargs('gnome.compile_resources', '0.37.0', ['gresource_bundle', 'export', 'install_header']) @permittedKwargs({'source_dir', 'c_name', 'dependencies', 'export', 'gresource_bundle', 'install_header', @@ -98,7 +99,7 @@ class GnomeModule(ExtensionModule): cmd = ['glib-compile-resources', '@INPUT@'] - source_dirs, dependencies = mesonlib.extract_as_list(kwargs, 'source_dir', 'dependencies', pop=True) + source_dirs, dependencies = [mesonlib.extract_as_list(kwargs, c, pop=True) for c in ['source_dir', 'dependencies']] if len(args) < 2: raise MesonException('Not enough arguments; the name of the resource ' @@ -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 @@ -316,15 +315,13 @@ class GnomeModule(ExtensionModule): # require two args in order, such as -framework AVFoundation external_ldflags_nodedup = [] gi_includes = OrderedSet() - deps = mesonlib.listify(deps, unholder=True) + deps = mesonlib.unholder(mesonlib.listify(deps)) for dep in deps: 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(), @@ -776,7 +763,7 @@ class GnomeModule(ExtensionModule): langs_compilers = self._get_girtargets_langs_compilers(girtargets) cflags, internal_ldflags, external_ldflags = self._get_langs_compilers_flags(state, langs_compilers) deps = self._get_gir_targets_deps(girtargets) - deps += extract_as_list(kwargs, 'dependencies', pop=True, unholder=True) + deps += mesonlib.unholder(extract_as_list(kwargs, 'dependencies', pop=True)) typelib_includes = self._gather_typelib_includes_and_update_depends(state, deps, depends) # ldflags will be misinterpreted by gir scanner (showing # spurious dependencies) but building GStreamer fails if they @@ -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(): @@ -1057,7 +1042,7 @@ This will become a hard error in the future.''') def _get_build_args(self, kwargs, state, depends): args = [] - deps = extract_as_list(kwargs, 'dependencies', unholder=True) + deps = mesonlib.unholder(extract_as_list(kwargs, 'dependencies')) cflags = [] cflags.extend(mesonlib.stringlistify(kwargs.pop('c_args', []))) deps_cflags, internal_ldflags, external_ldflags, gi_includes = \ @@ -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/i18n.py b/mesonbuild/modules/i18n.py index 80ec8bd..2652e7d 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -16,7 +16,7 @@ import shutil from os import path from .. import coredata, mesonlib, build, mlog -from ..mesonlib import MesonException, run_once +from ..mesonlib import MesonException from . import ModuleReturnValue from . import ExtensionModule from ..interpreterbase import permittedKwargs, FeatureNew, FeatureNewKwargs @@ -59,9 +59,8 @@ PRESET_ARGS = { class I18nModule(ExtensionModule): @staticmethod - @run_once def nogettext_warning(): - mlog.warning('Gettext not found, all translation targets will be ignored.') + mlog.warning('Gettext not found, all translation targets will be ignored.', once=True) return ModuleReturnValue(None, []) @staticmethod diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index 8de88c9..1d8e8a9 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -74,7 +74,7 @@ class DependenciesHelper: def _process_reqs(self, reqs): '''Returns string names of requirements''' processed_reqs = [] - for obj in mesonlib.listify(reqs, unholder=True): + for obj in mesonlib.unholder(mesonlib.listify(reqs)): if not isinstance(obj, str): FeatureNew('pkgconfig.generate requirement from non-string object', '0.46.0').use(self.state.subproject) if hasattr(obj, 'generated_pc'): @@ -108,7 +108,7 @@ class DependenciesHelper: self.cflags += mesonlib.stringlistify(cflags) def _process_libs(self, libs, public): - libs = mesonlib.listify(libs, unholder=True) + libs = mesonlib.unholder(mesonlib.listify(libs)) processed_libs = [] processed_reqs = [] processed_cflags = [] diff --git a/mesonbuild/modules/qt.py b/mesonbuild/modules/qt.py index 76edb7e..c7da530 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 @@ -142,7 +142,7 @@ class QtBaseModule(ExtensionModule): @permittedKwargs({'moc_headers', 'moc_sources', 'uic_extra_arguments', 'moc_extra_arguments', 'rcc_extra_arguments', 'include_directories', 'dependencies', 'ui_files', 'qresources', 'method'}) def preprocess(self, state, args, kwargs): rcc_files, ui_files, moc_headers, moc_sources, uic_extra_arguments, moc_extra_arguments, rcc_extra_arguments, sources, include_directories, dependencies \ - = extract_as_list(kwargs, 'qresources', 'ui_files', 'moc_headers', 'moc_sources', 'uic_extra_arguments', 'moc_extra_arguments', 'rcc_extra_arguments', 'sources', 'include_directories', 'dependencies', pop = True) + = [extract_as_list(kwargs, c, pop=True) for c in ['qresources', 'ui_files', 'moc_headers', 'moc_sources', 'uic_extra_arguments', 'moc_extra_arguments', 'rcc_extra_arguments', 'sources', 'include_directories', 'dependencies']] sources += args[1:] method = kwargs.get('method', 'auto') self._detect_tools(state.environment, method) @@ -190,9 +190,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'): @@ -221,7 +219,7 @@ class QtBaseModule(ExtensionModule): @FeatureNew('qt.compile_translations', '0.44.0') @permittedKwargs({'ts_files', 'install', 'install_dir', 'build_by_default', 'method'}) def compile_translations(self, state, args, kwargs): - ts_files, install_dir = extract_as_list(kwargs, 'ts_files', 'install_dir', pop=True) + ts_files, install_dir = [extract_as_list(kwargs, c, pop=True) for c in ['ts_files', 'install_dir']] self._detect_tools(state.environment, kwargs.get('method', 'auto')) translations = [] for ts in ts_files: 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}' |