modules/pkgconfig: mypy clean!

pull/10718/head
Dylan Baker 3 years ago committed by Eli Schwartz
parent 9bd3c1957d
commit 7c12066e73
  1. 47
      mesonbuild/modules/pkgconfig.py

@ -108,21 +108,21 @@ class DependenciesHelper:
self.link_whole_targets: T.List[T.Union[build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary]] = []
self.metadata = metadata
def add_pub_libs(self, libs: T.Sequence[ANY_DEP]) -> None:
def add_pub_libs(self, libs: T.List[ANY_DEP]) -> None:
p_libs, reqs, cflags = self._process_libs(libs, True)
self.pub_libs = p_libs + self.pub_libs # prepend to preserve dependencies
self.pub_reqs += reqs
self.cflags += cflags
def add_priv_libs(self, libs: T.Sequence[ANY_DEP]) -> None:
def add_priv_libs(self, libs: T.List[ANY_DEP]) -> None:
p_libs, reqs, _ = self._process_libs(libs, False)
self.priv_libs = p_libs + self.priv_libs
self.priv_reqs += reqs
def add_pub_reqs(self, reqs: T.Sequence[T.Union[str, dependencies.Dependency]]) -> None:
def add_pub_reqs(self, reqs: T.List[T.Union[str, build.StaticLibrary, build.SharedLibrary, dependencies.Dependency]]) -> None:
self.pub_reqs += self._process_reqs(reqs)
def add_priv_reqs(self, reqs: T.Sequence[T.Union[str, dependencies.Dependency]]) -> None:
def add_priv_reqs(self, reqs: T.List[T.Union[str, build.StaticLibrary, build.SharedLibrary, dependencies.Dependency]]) -> None:
self.priv_reqs += self._process_reqs(reqs)
def _check_generated_pc_deprecation(self, obj: T.Union[build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary, build.SharedLibrary]) -> None:
@ -142,7 +142,7 @@ class DependenciesHelper:
location=data.location)
data.warned = True
def _process_reqs(self, reqs: T.Sequence[T.Union[str, dependencies.Dependency]]) -> T.List[str]:
def _process_reqs(self, reqs: T.Sequence[T.Union[str, build.StaticLibrary, build.SharedLibrary, dependencies.Dependency]]) -> T.List[str]:
'''Returns string names of requirements'''
processed_reqs: T.List[str] = []
for obj in mesonlib.listify(reqs):
@ -159,7 +159,7 @@ class DependenciesHelper:
elif isinstance(obj, str):
name, version_req = self.split_version_req(obj)
processed_reqs.append(name)
self.add_version_reqs(name, version_req)
self.add_version_reqs(name, [version_req] if version_req is not None else None)
elif isinstance(obj, dependencies.Dependency) and not obj.found():
pass
elif isinstance(obj, ThreadDependency):
@ -174,7 +174,7 @@ class DependenciesHelper:
self.cflags += mesonlib.stringlistify(cflags)
def _process_libs(
self, libs: T.Sequence[ANY_DEP], public: bool
self, libs: T.List[ANY_DEP], public: bool
) -> T.Tuple[T.List[T.Union[str, build.SharedLibrary, build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex]], T.List[str], T.List[str]]:
libs = mesonlib.listify(libs)
processed_libs: T.List[T.Union[str, build.SharedLibrary, build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex]] = []
@ -230,8 +230,8 @@ class DependenciesHelper:
return processed_libs, processed_reqs, processed_cflags
def _add_lib_dependencies(
self, link_targets: T.List[T.Union[build.StaticLibrary, build.SharedLibrary, build.CustomTarget, build.CustomTargetIndex]],
link_whole_targets: T.List[T.Union[build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex]],
self, link_targets: T.Sequence[build.BuildTargetTypes],
link_whole_targets: T.Sequence[T.Union[build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex]],
external_deps: T.List[dependencies.Dependency],
public: bool,
private_external_deps: bool = False) -> None:
@ -241,6 +241,9 @@ class DependenciesHelper:
# Internal libraries (uninstalled static library) will be promoted
# to link_whole, treat them as such here.
if t.is_internal():
# `is_internal` shouldn't return True for anything but a
# StaticLibrary, or a CustomTarget that is a StaticLibrary
assert isinstance(t, (build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex)), 'for mypy'
self._add_link_whole(t, public)
else:
add_libs([t])
@ -248,11 +251,11 @@ class DependenciesHelper:
self._add_link_whole(t, public)
# And finally its external dependencies
if private_external_deps:
self.add_priv_libs(external_deps)
self.add_priv_libs(T.cast('T.List[ANY_DEP]', external_deps))
else:
add_libs(external_deps)
add_libs(T.cast('T.List[ANY_DEP]', external_deps))
def _add_link_whole(self, t: T.Union[build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary, build.SharedLibrary], public: bool) -> None:
def _add_link_whole(self, t: T.Union[build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary], public: bool) -> None:
# Don't include static libraries that we link_whole. But we still need to
# include their dependencies: a static library we link_whole
# could itself link to a shared library or an installed static library.
@ -301,7 +304,7 @@ class DependenciesHelper:
# We can't just check if 'x' is excluded because we could have copies of
# the same SharedLibrary object for example.
def _ids(x: T.Union[str, build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary]) -> T.Iterable[str]:
def _ids(x: T.Union[str, build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary, build.SharedLibrary]) -> T.Iterable[str]:
if isinstance(x, str):
yield x
else:
@ -310,7 +313,7 @@ class DependenciesHelper:
yield x.get_id()
# Exclude 'x' in all its forms and return if it was already excluded
def _add_exclude(x: T.Union[str, build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary]) -> bool:
def _add_exclude(x: T.Union[str, build.CustomTarget, build.CustomTargetIndex, build.StaticLibrary, build.SharedLibrary]) -> bool:
was_excluded = False
for i in _ids(x):
if i in exclude:
@ -473,14 +476,14 @@ class PkgConfigModule(ExtensionModule):
outdir = state.environment.scratch_dir
prefix = PurePath(_as_str(coredata.get_option(mesonlib.OptionKey('prefix'))))
if pkgroot:
pkgroot = PurePath(pkgroot)
if not pkgroot.is_absolute():
pkgroot = prefix / pkgroot
elif prefix not in pkgroot.parents:
pkgroot_ = PurePath(pkgroot)
if not pkgroot_.is_absolute():
pkgroot_ = prefix / pkgroot
elif prefix not in pkgroot_.parents:
raise mesonlib.MesonException('Pkgconfig prefix cannot be outside of the prefix '
'when pkgconfig.relocatable=true. '
f'Pkgconfig prefix is {pkgroot.as_posix()}.')
prefix = PurePath('${pcfiledir}', os.path.relpath(prefix, pkgroot))
f'Pkgconfig prefix is {pkgroot_.as_posix()}.')
prefix = PurePath('${pcfiledir}', os.path.relpath(prefix, pkgroot_))
fname = os.path.join(outdir, pcfile)
with open(fname, 'w', encoding='utf-8') as ofile:
for optname in optnames:
@ -695,10 +698,10 @@ class PkgConfigModule(ExtensionModule):
pkgroot = pkgroot_name = kwargs['install_dir'] or default_install_dir
if pkgroot is None:
if mesonlib.is_freebsd():
pkgroot = os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('prefix')), 'libdata', 'pkgconfig')
pkgroot = os.path.join(_as_str(state.environment.coredata.get_option(mesonlib.OptionKey('prefix'))), 'libdata', 'pkgconfig')
pkgroot_name = os.path.join('{prefix}', 'libdata', 'pkgconfig')
else:
pkgroot = os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('libdir')), 'pkgconfig')
pkgroot = os.path.join(_as_str(state.environment.coredata.get_option(mesonlib.OptionKey('libdir'))), 'pkgconfig')
pkgroot_name = os.path.join('{libdir}', 'pkgconfig')
relocatable = state.get_option('relocatable', module='pkgconfig')
self._generate_pkgconfig_file(state, deps, subdirs, name, description, url,

Loading…
Cancel
Save