interpreter: use a shared KwargInfo for install_dir

CustomTarget allows multiple install dirs, while basically everything
else allows only one. So this provides a shared instance for that.
pull/10453/head
Dylan Baker 3 years ago committed by Eli Schwartz
parent 50e9769403
commit 618b187f70
  1. 9
      mesonbuild/interpreter/interpreter.py
  2. 2
      mesonbuild/interpreter/type_checking.py
  3. 6
      mesonbuild/modules/cmake.py
  4. 12
      mesonbuild/modules/gnome.py
  5. 4
      mesonbuild/modules/i18n.py
  6. 6
      mesonbuild/modules/qt.py

@ -68,6 +68,7 @@ from .type_checking import (
ENV_METHOD_KW, ENV_METHOD_KW,
ENV_SEPARATOR_KW, ENV_SEPARATOR_KW,
INSTALL_KW, INSTALL_KW,
INSTALL_DIR_KW,
INSTALL_MODE_KW, INSTALL_MODE_KW,
CT_INSTALL_TAG_KW, CT_INSTALL_TAG_KW,
INSTALL_TAG_KW, INSTALL_TAG_KW,
@ -2093,10 +2094,10 @@ class Interpreter(InterpreterBase, HoldableObject):
@typed_pos_args('install_headers', varargs=(str, mesonlib.File)) @typed_pos_args('install_headers', varargs=(str, mesonlib.File))
@typed_kwargs( @typed_kwargs(
'install_headers', 'install_headers',
KwargInfo('install_dir', (str, NoneType)),
KwargInfo('preserve_path', bool, default=False, since='0.63.0'), KwargInfo('preserve_path', bool, default=False, since='0.63.0'),
KwargInfo('subdir', (str, NoneType)), KwargInfo('subdir', (str, NoneType)),
INSTALL_MODE_KW.evolve(since='0.47.0'), INSTALL_MODE_KW.evolve(since='0.47.0'),
INSTALL_DIR_KW,
) )
def func_install_headers(self, node: mparser.BaseNode, def func_install_headers(self, node: mparser.BaseNode,
args: T.Tuple[T.List['mesonlib.FileOrString']], args: T.Tuple[T.List['mesonlib.FileOrString']],
@ -2131,9 +2132,9 @@ class Interpreter(InterpreterBase, HoldableObject):
@typed_pos_args('install_man', varargs=(str, mesonlib.File)) @typed_pos_args('install_man', varargs=(str, mesonlib.File))
@typed_kwargs( @typed_kwargs(
'install_man', 'install_man',
KwargInfo('install_dir', (str, NoneType)),
KwargInfo('locale', (str, NoneType), since='0.58.0'), KwargInfo('locale', (str, NoneType), since='0.58.0'),
INSTALL_MODE_KW.evolve(since='0.47.0') INSTALL_MODE_KW.evolve(since='0.47.0'),
INSTALL_DIR_KW,
) )
def func_install_man(self, node: mparser.BaseNode, def func_install_man(self, node: mparser.BaseNode,
args: T.Tuple[T.List['mesonlib.FileOrString']], args: T.Tuple[T.List['mesonlib.FileOrString']],
@ -2296,11 +2297,11 @@ class Interpreter(InterpreterBase, HoldableObject):
@typed_pos_args('install_data', varargs=(str, mesonlib.File)) @typed_pos_args('install_data', varargs=(str, mesonlib.File))
@typed_kwargs( @typed_kwargs(
'install_data', 'install_data',
KwargInfo('install_dir', (str, NoneType)),
KwargInfo('sources', ContainerTypeInfo(list, (str, mesonlib.File)), listify=True, default=[]), KwargInfo('sources', ContainerTypeInfo(list, (str, mesonlib.File)), listify=True, default=[]),
KwargInfo('rename', ContainerTypeInfo(list, str), default=[], listify=True, since='0.46.0'), KwargInfo('rename', ContainerTypeInfo(list, str), default=[], listify=True, since='0.46.0'),
INSTALL_MODE_KW.evolve(since='0.38.0'), INSTALL_MODE_KW.evolve(since='0.38.0'),
INSTALL_TAG_KW.evolve(since='0.60.0'), INSTALL_TAG_KW.evolve(since='0.60.0'),
INSTALL_DIR_KW,
) )
def func_install_data(self, node: mparser.BaseNode, def func_install_data(self, node: mparser.BaseNode,
args: T.Tuple[T.List['mesonlib.FileOrString']], args: T.Tuple[T.List['mesonlib.FileOrString']],

@ -325,6 +325,8 @@ CT_BUILD_ALWAYS_STALE: KwargInfo[T.Optional[bool]] = KwargInfo(
since='0.47.0', since='0.47.0',
) )
INSTALL_DIR_KW: KwargInfo[T.Optional[str]] = KwargInfo('install_dir', (str, NoneType))
INCLUDE_DIRECTORIES: KwargInfo[T.List[T.Union[str, IncludeDirs]]] = KwargInfo( INCLUDE_DIRECTORIES: KwargInfo[T.List[T.Union[str, IncludeDirs]]] = KwargInfo(
'include_dirs', 'include_dirs',
ContainerTypeInfo(list, (str, IncludeDirs)), ContainerTypeInfo(list, (str, IncludeDirs)),

@ -23,7 +23,7 @@ from . import ExtensionModule, ModuleReturnValue, ModuleObject
from .. import build, mesonlib, mlog, dependencies from .. import build, mesonlib, mlog, dependencies
from ..cmake import TargetOptions, cmake_defines_to_args from ..cmake import TargetOptions, cmake_defines_to_args
from ..interpreter import SubprojectHolder from ..interpreter import SubprojectHolder
from ..interpreter.type_checking import REQUIRED_KW, NoneType, in_set_validator from ..interpreter.type_checking import REQUIRED_KW, INSTALL_DIR_KW, NoneType, in_set_validator
from ..interpreterbase import ( from ..interpreterbase import (
FeatureNew, FeatureNew,
FeatureNewKwargs, FeatureNewKwargs,
@ -296,9 +296,9 @@ class CmakeModule(ExtensionModule):
'cmake.write_basic_package_version_file', 'cmake.write_basic_package_version_file',
KwargInfo('arch_independent', bool, default=False, since='0.62.0'), KwargInfo('arch_independent', bool, default=False, since='0.62.0'),
KwargInfo('compatibility', str, default='AnyNewerVersion', validator=in_set_validator(set(COMPATIBILITIES))), KwargInfo('compatibility', str, default='AnyNewerVersion', validator=in_set_validator(set(COMPATIBILITIES))),
KwargInfo('install_dir', (str, NoneType), default=None),
KwargInfo('name', str, required=True), KwargInfo('name', str, required=True),
KwargInfo('version', str, required=True), KwargInfo('version', str, required=True),
INSTALL_DIR_KW,
) )
def write_basic_package_version_file(self, state, args, kwargs: 'WriteBasicPackageVersionFile'): def write_basic_package_version_file(self, state, args, kwargs: 'WriteBasicPackageVersionFile'):
arch_independent = kwargs['arch_independent'] arch_independent = kwargs['arch_independent']
@ -365,8 +365,8 @@ class CmakeModule(ExtensionModule):
(str, mesonlib.File, ContainerTypeInfo(list, mesonlib.File)), required=True, (str, mesonlib.File, ContainerTypeInfo(list, mesonlib.File)), required=True,
validator=lambda x: 'requires exactly one file' if isinstance(x, list) and len(x) != 1 else None, validator=lambda x: 'requires exactly one file' if isinstance(x, list) and len(x) != 1 else None,
convertor=lambda x: x[0] if isinstance(x, list) else x), convertor=lambda x: x[0] if isinstance(x, list) else x),
KwargInfo('install_dir', (str, NoneType), default=None),
KwargInfo('name', str, required=True), KwargInfo('name', str, required=True),
INSTALL_DIR_KW,
) )
def configure_package_config_file(self, state, args, kwargs: 'ConfigurePackageConfigFile'): def configure_package_config_file(self, state, args, kwargs: 'ConfigurePackageConfigFile'):
inputfile = kwargs['input'] inputfile = kwargs['input']

@ -32,7 +32,7 @@ from .. import mesonlib
from .. import mlog from .. import mlog
from ..build import CustomTarget, CustomTargetIndex, Executable, GeneratedList, InvalidArguments from ..build import CustomTarget, CustomTargetIndex, Executable, GeneratedList, InvalidArguments
from ..dependencies import Dependency, PkgConfigDependency, InternalDependency from ..dependencies import Dependency, PkgConfigDependency, InternalDependency
from ..interpreter.type_checking import DEPENDS_KW, DEPEND_FILES_KW, INSTALL_KW, NoneType, in_set_validator from ..interpreter.type_checking import DEPENDS_KW, DEPEND_FILES_KW, INSTALL_DIR_KW, INSTALL_KW, NoneType, in_set_validator
from ..interpreterbase import noPosargs, noKwargs, FeatureNew, FeatureDeprecated from ..interpreterbase import noPosargs, noKwargs, FeatureNew, FeatureDeprecated
from ..interpreterbase import typed_kwargs, KwargInfo, ContainerTypeInfo from ..interpreterbase import typed_kwargs, KwargInfo, ContainerTypeInfo
from ..interpreterbase.decorators import typed_pos_args from ..interpreterbase.decorators import typed_pos_args
@ -213,13 +213,13 @@ _EXTRA_ARGS_KW: KwargInfo[T.List[str]] = KwargInfo(
_MK_ENUMS_COMMON_KWS: T.List[KwargInfo] = [ _MK_ENUMS_COMMON_KWS: T.List[KwargInfo] = [
INSTALL_KW.evolve(name='install_header'), INSTALL_KW.evolve(name='install_header'),
INSTALL_DIR_KW,
KwargInfo( KwargInfo(
'sources', 'sources',
ContainerTypeInfo(list, (str, mesonlib.File, build.CustomTarget, build.CustomTargetIndex, build.GeneratedList)), ContainerTypeInfo(list, (str, mesonlib.File, build.CustomTarget, build.CustomTargetIndex, build.GeneratedList)),
listify=True, listify=True,
required=True, required=True,
), ),
KwargInfo('install_dir', (str, NoneType)),
KwargInfo('identifier_prefix', (str, NoneType)), KwargInfo('identifier_prefix', (str, NoneType)),
KwargInfo('symbol_prefix', (str, NoneType)), KwargInfo('symbol_prefix', (str, NoneType)),
] ]
@ -408,11 +408,11 @@ class GnomeModule(ExtensionModule):
_EXTRA_ARGS_KW, _EXTRA_ARGS_KW,
INSTALL_KW, INSTALL_KW,
INSTALL_KW.evolve(name='install_header', since='0.37.0'), INSTALL_KW.evolve(name='install_header', since='0.37.0'),
INSTALL_DIR_KW,
KwargInfo('c_name', (str, NoneType)), KwargInfo('c_name', (str, NoneType)),
KwargInfo('dependencies', ContainerTypeInfo(list, (mesonlib.File, build.CustomTarget, build.CustomTargetIndex)), default=[], listify=True), KwargInfo('dependencies', ContainerTypeInfo(list, (mesonlib.File, build.CustomTarget, build.CustomTargetIndex)), default=[], listify=True),
KwargInfo('export', bool, default=False, since='0.37.0'), KwargInfo('export', bool, default=False, since='0.37.0'),
KwargInfo('gresource_bundle', bool, default=False, since='0.37.0'), KwargInfo('gresource_bundle', bool, default=False, since='0.37.0'),
KwargInfo('install_dir', (str, NoneType)),
KwargInfo('source_dir', ContainerTypeInfo(list, str), default=[], listify=True), KwargInfo('source_dir', ContainerTypeInfo(list, str), default=[], listify=True),
) )
def compile_resources(self, state: 'ModuleState', args: T.Tuple[str, 'FileOrString'], def compile_resources(self, state: 'ModuleState', args: T.Tuple[str, 'FileOrString'],
@ -1594,11 +1594,11 @@ class GnomeModule(ExtensionModule):
convertor=lambda x: [x] if x and isinstance(x[0], str) else x, convertor=lambda x: [x] if x and isinstance(x[0], str) else x,
), ),
KwargInfo('install_header', bool, default=False, since='0.46.0'), KwargInfo('install_header', bool, default=False, since='0.46.0'),
KwargInfo('install_dir', (str, NoneType), since='0.46.0'),
KwargInfo('docbook', (str, NoneType)), KwargInfo('docbook', (str, NoneType)),
KwargInfo( KwargInfo(
'autocleanup', str, default='default', since='0.47.0', 'autocleanup', str, default='default', since='0.47.0',
validator=in_set_validator({'all', 'none', 'objects'})), validator=in_set_validator({'all', 'none', 'objects'})),
INSTALL_DIR_KW.evolve(since='0.46.0')
) )
def gdbus_codegen(self, state: 'ModuleState', args: T.Tuple[str, T.Optional['FileOrString']], def gdbus_codegen(self, state: 'ModuleState', args: T.Tuple[str, T.Optional['FileOrString']],
kwargs: 'GdbusCodegen') -> ModuleReturnValue: kwargs: 'GdbusCodegen') -> ModuleReturnValue:
@ -1948,8 +1948,8 @@ class GnomeModule(ExtensionModule):
DEPEND_FILES_KW.evolve(since='0.61.0'), DEPEND_FILES_KW.evolve(since='0.61.0'),
DEPENDS_KW.evolve(since='0.61.0'), DEPENDS_KW.evolve(since='0.61.0'),
INSTALL_KW.evolve(name='install_header'), INSTALL_KW.evolve(name='install_header'),
INSTALL_DIR_KW,
KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True, default=[]), KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('install_dir', (str, NoneType)),
KwargInfo('internal', bool, default=False), KwargInfo('internal', bool, default=False),
KwargInfo('nostdinc', bool, default=False), KwargInfo('nostdinc', bool, default=False),
KwargInfo('prefix', (str, NoneType)), KwargInfo('prefix', (str, NoneType)),
@ -2089,13 +2089,13 @@ class GnomeModule(ExtensionModule):
@typed_kwargs( @typed_kwargs(
'gnome.generate_vapi', 'gnome.generate_vapi',
INSTALL_KW, INSTALL_KW,
INSTALL_DIR_KW,
KwargInfo( KwargInfo(
'sources', 'sources',
ContainerTypeInfo(list, (str, GirTarget), allow_empty=False), ContainerTypeInfo(list, (str, GirTarget), allow_empty=False),
listify=True, listify=True,
required=True, required=True,
), ),
KwargInfo('install_dir', (str, NoneType)),
KwargInfo('vapi_dirs', ContainerTypeInfo(list, str), listify=True, default=[]), KwargInfo('vapi_dirs', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('metadata_dirs', ContainerTypeInfo(list, str), listify=True, default=[]), KwargInfo('metadata_dirs', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('gir_dirs', ContainerTypeInfo(list, str), listify=True, default=[]), KwargInfo('gir_dirs', ContainerTypeInfo(list, str), listify=True, default=[]),

@ -20,7 +20,7 @@ from . import ExtensionModule, ModuleReturnValue
from .. import build from .. import build
from .. import mesonlib from .. import mesonlib
from .. import mlog from .. import mlog
from ..interpreter.type_checking import CT_BUILD_BY_DEFAULT, CT_INPUT_KW, INSTALL_TAG_KW, OUTPUT_KW, INSTALL_KW, NoneType, in_set_validator from ..interpreter.type_checking import CT_BUILD_BY_DEFAULT, CT_INPUT_KW, INSTALL_TAG_KW, OUTPUT_KW, INSTALL_DIR_KW, INSTALL_KW, NoneType, in_set_validator
from ..interpreterbase import FeatureNew from ..interpreterbase import FeatureNew
from ..interpreterbase.decorators import ContainerTypeInfo, KwargInfo, noPosargs, typed_kwargs, typed_pos_args from ..interpreterbase.decorators import ContainerTypeInfo, KwargInfo, noPosargs, typed_kwargs, typed_pos_args
from ..scripts.gettext import read_linguas from ..scripts.gettext import read_linguas
@ -212,7 +212,7 @@ class I18nModule(ExtensionModule):
_ARGS, _ARGS,
_DATA_DIRS.evolve(since='0.36.0'), _DATA_DIRS.evolve(since='0.36.0'),
INSTALL_KW.evolve(default=True), INSTALL_KW.evolve(default=True),
KwargInfo('install_dir', (str, NoneType), since='0.50.0'), INSTALL_DIR_KW.evolve(since='0.50.0'),
KwargInfo('languages', ContainerTypeInfo(list, str), default=[], listify=True), KwargInfo('languages', ContainerTypeInfo(list, str), default=[], listify=True),
KwargInfo( KwargInfo(
'preset', 'preset',

@ -26,7 +26,7 @@ from .. import mlog
from ..dependencies import find_external_dependency, Dependency, ExternalLibrary from ..dependencies import find_external_dependency, Dependency, ExternalLibrary
from ..mesonlib import MesonException, File, version_compare, Popen_safe from ..mesonlib import MesonException, File, version_compare, Popen_safe
from ..interpreter import extract_required_kwarg from ..interpreter import extract_required_kwarg
from ..interpreter.type_checking import NoneType from ..interpreter.type_checking import INSTALL_DIR_KW, INSTALL_KW, NoneType
from ..interpreterbase import ContainerTypeInfo, FeatureDeprecated, KwargInfo, noPosargs, FeatureNew, typed_kwargs from ..interpreterbase import ContainerTypeInfo, FeatureDeprecated, KwargInfo, noPosargs, FeatureNew, typed_kwargs
from ..programs import NonExistingExternalProgram from ..programs import NonExistingExternalProgram
@ -534,8 +534,8 @@ class QtBaseModule(ExtensionModule):
@typed_kwargs( @typed_kwargs(
'qt.compile_translations', 'qt.compile_translations',
KwargInfo('build_by_default', bool, default=False), KwargInfo('build_by_default', bool, default=False),
KwargInfo('install', bool, default=False), INSTALL_KW,
KwargInfo('install_dir', (str, NoneType)), INSTALL_DIR_KW,
KwargInfo('method', str, default='auto'), KwargInfo('method', str, default='auto'),
KwargInfo('qresource', (str, NoneType), since='0.56.0'), KwargInfo('qresource', (str, NoneType), since='0.56.0'),
KwargInfo('rcc_extra_arguments', ContainerTypeInfo(list, str), listify=True, default=[], since='0.56.0'), KwargInfo('rcc_extra_arguments', ContainerTypeInfo(list, str), listify=True, default=[], since='0.56.0'),

Loading…
Cancel
Save