Add helper to print warnings once
The helper is general, although in this patch it is only used for warnings. No functional change intended.
This commit is contained in:
parent
c4f96e00a6
commit
3a6920ebdc
|
@ -20,7 +20,7 @@ import time
|
||||||
import platform, subprocess, operator, os, shlex, shutil, re
|
import platform, subprocess, operator, os, shlex, shutil, re
|
||||||
import collections
|
import collections
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from functools import lru_cache
|
from functools import lru_cache, update_wrapper
|
||||||
import typing
|
import typing
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
@ -1496,6 +1496,19 @@ def get_wine_shortpath(winecmd, wine_paths):
|
||||||
|
|
||||||
return wine_path.strip(';')
|
return wine_path.strip(';')
|
||||||
|
|
||||||
|
def run_once(func):
|
||||||
|
ret = []
|
||||||
|
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
if ret:
|
||||||
|
return ret[0]
|
||||||
|
|
||||||
|
val = func(*args, **kwargs)
|
||||||
|
ret.append(val)
|
||||||
|
return val
|
||||||
|
|
||||||
|
return update_wrapper(wrapper, func)
|
||||||
|
|
||||||
|
|
||||||
class OptionProxy:
|
class OptionProxy:
|
||||||
def __init__(self, value):
|
def __init__(self, value):
|
||||||
|
|
|
@ -42,8 +42,6 @@ gresource_dep_needed_version = '>= 2.51.1'
|
||||||
|
|
||||||
native_glib_version = None
|
native_glib_version = None
|
||||||
girwarning_printed = False
|
girwarning_printed = False
|
||||||
gdbuswarning_printed = False
|
|
||||||
gresource_warning_printed = False
|
|
||||||
_gir_has_option = {}
|
_gir_has_option = {}
|
||||||
|
|
||||||
def gir_has_option(intr_obj, option):
|
def gir_has_option(intr_obj, option):
|
||||||
|
@ -84,24 +82,20 @@ class GnomeModule(ExtensionModule):
|
||||||
native_glib_version = '2.54'
|
native_glib_version = '2.54'
|
||||||
return native_glib_version
|
return native_glib_version
|
||||||
|
|
||||||
|
@mesonlib.run_once
|
||||||
def __print_gresources_warning(self, state):
|
def __print_gresources_warning(self, state):
|
||||||
global gresource_warning_printed
|
if not mesonlib.version_compare(self._get_native_glib_version(state),
|
||||||
if not gresource_warning_printed:
|
gresource_dep_needed_version):
|
||||||
if not mesonlib.version_compare(self._get_native_glib_version(state), gresource_dep_needed_version):
|
mlog.warning('GLib compiled dependencies do not work reliably with \n'
|
||||||
mlog.warning('GLib compiled dependencies do not work reliably with \n'
|
'the current version of GLib. See the following upstream issue:',
|
||||||
'the current version of GLib. See the following upstream issue:',
|
mlog.bold('https://bugzilla.gnome.org/show_bug.cgi?id=774368'))
|
||||||
mlog.bold('https://bugzilla.gnome.org/show_bug.cgi?id=774368'))
|
|
||||||
gresource_warning_printed = True
|
|
||||||
return []
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@mesonlib.run_once
|
||||||
def _print_gdbus_warning():
|
def _print_gdbus_warning():
|
||||||
global gdbuswarning_printed
|
mlog.warning('Code generated with gdbus_codegen() requires the root directory be added to\n'
|
||||||
if not gdbuswarning_printed:
|
' include_directories of targets with GLib < 2.51.3:',
|
||||||
mlog.warning('Code generated with gdbus_codegen() requires the root directory be added to\n'
|
mlog.bold('https://github.com/mesonbuild/meson/issues/1387'))
|
||||||
' include_directories of targets with GLib < 2.51.3:',
|
|
||||||
mlog.bold('https://github.com/mesonbuild/meson/issues/1387'))
|
|
||||||
gdbuswarning_printed = True
|
|
||||||
|
|
||||||
@FeatureNewKwargs('gnome.compile_resources', '0.37.0', ['gresource_bundle', 'export', 'install_header'])
|
@FeatureNewKwargs('gnome.compile_resources', '0.37.0', ['gresource_bundle', 'export', 'install_header'])
|
||||||
@permittedKwargs({'source_dir', 'c_name', 'dependencies', 'export', 'gresource_bundle', 'install_header',
|
@permittedKwargs({'source_dir', 'c_name', 'dependencies', 'export', 'gresource_bundle', 'install_header',
|
||||||
|
|
|
@ -16,7 +16,7 @@ import shutil
|
||||||
|
|
||||||
from os import path
|
from os import path
|
||||||
from .. import coredata, mesonlib, build, mlog
|
from .. import coredata, mesonlib, build, mlog
|
||||||
from ..mesonlib import MesonException
|
from ..mesonlib import MesonException, run_once
|
||||||
from . import ModuleReturnValue
|
from . import ModuleReturnValue
|
||||||
from . import ExtensionModule
|
from . import ExtensionModule
|
||||||
from ..interpreterbase import permittedKwargs, FeatureNew, FeatureNewKwargs
|
from ..interpreterbase import permittedKwargs, FeatureNew, FeatureNewKwargs
|
||||||
|
@ -58,13 +58,10 @@ PRESET_ARGS = {
|
||||||
|
|
||||||
class I18nModule(ExtensionModule):
|
class I18nModule(ExtensionModule):
|
||||||
|
|
||||||
nogettext_warning_printed = False
|
@staticmethod
|
||||||
|
@run_once
|
||||||
@classmethod
|
def nogettext_warning():
|
||||||
def nogettext_warning(cls):
|
mlog.warning('Gettext not found, all translation targets will be ignored.')
|
||||||
if not cls.nogettext_warning_printed:
|
|
||||||
mlog.warning('Gettext not found, all translation targets will be ignored.')
|
|
||||||
cls.nogettext_warning_printed = True
|
|
||||||
return ModuleReturnValue(None, [])
|
return ModuleReturnValue(None, [])
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
Loading…
Reference in New Issue