diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2023-08-11 09:18:10 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2023-08-14 09:55:18 -0700 |
commit | 09bc028c7120b78e01a6be285f9961c58bff7462 (patch) | |
tree | a68f74fa2e05e7df2b7542a1f9c500c25f4cfac9 | |
parent | cd676e229b3b5d34550a9a39fa41c2d686c48596 (diff) | |
download | meson-09bc028c7120b78e01a6be285f9961c58bff7462.zip meson-09bc028c7120b78e01a6be285f9961c58bff7462.tar.gz meson-09bc028c7120b78e01a6be285f9961c58bff7462.tar.bz2 |
interpreter: use typed_kwargs for shared_library(soversion)
-rw-r--r-- | mesonbuild/build.py | 12 | ||||
-rw-r--r-- | mesonbuild/interpreter/kwargs.py | 1 | ||||
-rw-r--r-- | mesonbuild/interpreter/type_checking.py | 1 |
3 files changed, 5 insertions, 9 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 979672a..c1427be 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -2138,7 +2138,7 @@ class SharedLibrary(BuildTarget): environment: environment.Environment, compilers: T.Dict[str, 'Compiler'], kwargs): - self.soversion = None + self.soversion: T.Optional[str] = None self.ltversion: T.Optional[str] = None # Max length 2, first element is compatibility_version, second is current_version self.darwin_versions = [] @@ -2351,14 +2351,8 @@ class SharedLibrary(BuildTarget): if not self.environment.machines[self.for_machine].is_android(): # Shared library version self.ltversion = T.cast('T.Optional[str]', kwargs.get('version')) - # Try to extract/deduce the soversion - if 'soversion' in kwargs: - self.soversion = kwargs['soversion'] - if isinstance(self.soversion, int): - self.soversion = str(self.soversion) - if not isinstance(self.soversion, str): - raise InvalidArguments('Shared library soversion is not a string or integer.') - elif self.ltversion: + self.soversion = T.cast('T.Optional[str]', kwargs.get('soversion')) + if self.soversion is None and self.ltversion is not None: # library version is defined, get the soversion from that # We replicate what Autotools does here and take the first # number of the version by default. diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index e92f700..c463288 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -340,6 +340,7 @@ class StaticLibrary(_BuildTarget): class _SharedLibMixin(TypedDict): + soversion: T.Optional[str] version: T.Optional[str] diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index 5ae189a..87a4d43 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -535,6 +535,7 @@ STATIC_LIB_KWS = [ # Arguments exclusive to SharedLibrary. These are separated to make integrating # them into build_target easier _EXCLUSIVE_SHARED_LIB_KWS: T.List[KwargInfo] = [ + KwargInfo('soversion', (str, int, NoneType), convertor=lambda x: str(x) if x is not None else None), KwargInfo('version', (str, NoneType), validator=_validate_shlib_version) ] |