mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-28 09:01:55 +02:00
dev-build/meson: Sync with Gentoo
It's from Gentoo commit 6de25d6a32c9154f728416da560dd0c5ea3384a1.
This commit is contained in:
parent
2f03a2ea78
commit
f3117e88b0
@ -12,7 +12,13 @@ DIST meson-1.5.2.tar.gz 2265788 BLAKE2B bda0742cf053cb235833b347e66b8706983815fd
|
|||||||
DIST meson-1.5.2.tar.gz.asc 833 BLAKE2B 0ea6af017430568b2834081a60d0153cc80cb55d835b1f570e27ae6220a163aff9f4607654fe87841df112c78763b4d45dabd45072e398cdf901762095ce52e7 SHA512 7b7c0ee2b872c83d98954079fc27665b3a9ec5464aa8decc5919ff4e1c4134d7006494bd64b901dc2ade408131ea512eefef9416f3c57d1460c9308cb6683fc8
|
DIST meson-1.5.2.tar.gz.asc 833 BLAKE2B 0ea6af017430568b2834081a60d0153cc80cb55d835b1f570e27ae6220a163aff9f4607654fe87841df112c78763b4d45dabd45072e398cdf901762095ce52e7 SHA512 7b7c0ee2b872c83d98954079fc27665b3a9ec5464aa8decc5919ff4e1c4134d7006494bd64b901dc2ade408131ea512eefef9416f3c57d1460c9308cb6683fc8
|
||||||
DIST meson-1.6.0.tar.gz 2277602 BLAKE2B c1d8f143b17fab90c6128a721ac45b9ed6b85d67272149058e74ab827822b6f2c84ebdc261290585e6af38ab5dca52ca013de9b7be70922c96260fc5ee708893 SHA512 8805f07d0cfe2050305eff009b20973bfe3aab808a263479ed98a31fa026c1a378285928c2dd058e4224abc1b347aeee5c1628c964375135e9b4647819a119bc
|
DIST meson-1.6.0.tar.gz 2277602 BLAKE2B c1d8f143b17fab90c6128a721ac45b9ed6b85d67272149058e74ab827822b6f2c84ebdc261290585e6af38ab5dca52ca013de9b7be70922c96260fc5ee708893 SHA512 8805f07d0cfe2050305eff009b20973bfe3aab808a263479ed98a31fa026c1a378285928c2dd058e4224abc1b347aeee5c1628c964375135e9b4647819a119bc
|
||||||
DIST meson-1.6.0.tar.gz.asc 833 BLAKE2B 4cb8483a0b40330f71c86b9ede2dbccf2eb430138508983232924d70512100a36094974048783d814b9d83c11719f4be5a6541dc0eeaee3044048c38f28106c4 SHA512 4f1f47a5aafc8de8180a47303f2ea2d7dff1b792ee3e1dbf64bd96ea64b2a1696b664fb3ea4169b73c7a950f4371481c083f18ab11fdaf3bccf2b8671e40cd7d
|
DIST meson-1.6.0.tar.gz.asc 833 BLAKE2B 4cb8483a0b40330f71c86b9ede2dbccf2eb430138508983232924d70512100a36094974048783d814b9d83c11719f4be5a6541dc0eeaee3044048c38f28106c4 SHA512 4f1f47a5aafc8de8180a47303f2ea2d7dff1b792ee3e1dbf64bd96ea64b2a1696b664fb3ea4169b73c7a950f4371481c083f18ab11fdaf3bccf2b8671e40cd7d
|
||||||
|
DIST meson-1.6.1.tar.gz 2276144 BLAKE2B 7ccdb3bf3f701fc787fabf91413db8301a8658b89e08c1d712711bd35845dc2468211e4b666cf46ad68ad9462e62b12b62d60c3767a2804f9b695b4390bb8235 SHA512 b4ca7a3b667db0ad370110abd8b20467b1c74ae7777a068db33f8974602c123881a7130b2340664abb52e36fe5195989a5cc8fa7de6212c37abf5b0900554425
|
||||||
|
DIST meson-1.6.1.tar.gz.asc 833 BLAKE2B 6666eca8e5506b8692fc29ba66dc3ee9d725a7d720a7b43db720098f7e00671e71993586606c187d8314e3919474f5733d64a8d052be6552cbcf013a872905ab SHA512 543cf396de0a58998c3587aa05580fa9a56734db40b74fc5fbb22cd56124531804a5360d6b9acb9baa71753ac04c343364da4d78a0d366d8e8bc760030ebf8d3
|
||||||
|
DIST meson-1.7.0rc1.tar.gz 2294319 BLAKE2B eb17bc0bd1bf5ba48ab973c3d093184524f3d0afdb14ed403026dc9dfef956abf1b1a8a434071ad4db02b1bcc0f636ffb504aed68e61f95fad7e92496d337504 SHA512 a4a410718fdb98452539b6ce6e6a8c5c5e96d8eaf08ab658ff5697f7ec70f5892da833562355d3e0f9975cfc13bb53153a4e75ff1ff31077439b4d522fce7197
|
||||||
|
DIST meson-1.7.0rc1.tar.gz.asc 833 BLAKE2B 70b268d247a5340a94259ab6ab85f2f763c4668d585f220249d248108db7322ff01920ef855e8684271b0e41696df5245d0060f722b7bfae938ed96bcccc2c25 SHA512 e4bc1139a4d3895fe0f5d89ab95ff08428a054cb7e40c9209c323bc4e4017e13888c4eb52b8dfc60db3ffd1f9512fab78443a2821d3c96f1b81a4da06e7798af
|
||||||
DIST meson-reference-1.4.2.3 339324 BLAKE2B 1a4fbd8c27a8cfba773777eabd2ebaa0f76ec0c61dcfe1c7b4483737b348ff9528d68f26e68d7d40b2e1875611eed5b9a31c1cf55fed8eabb42fc1e31d9ef14b SHA512 8b8ec43e812599203ec44c08805eb6818485805c45b9c69802261eaa35efc97846a96f6472c6b1ef5f6c703e7153fd957df7b805f173ca3400a2030dfbe002ca
|
DIST meson-reference-1.4.2.3 339324 BLAKE2B 1a4fbd8c27a8cfba773777eabd2ebaa0f76ec0c61dcfe1c7b4483737b348ff9528d68f26e68d7d40b2e1875611eed5b9a31c1cf55fed8eabb42fc1e31d9ef14b SHA512 8b8ec43e812599203ec44c08805eb6818485805c45b9c69802261eaa35efc97846a96f6472c6b1ef5f6c703e7153fd957df7b805f173ca3400a2030dfbe002ca
|
||||||
DIST meson-reference-1.5.1.3 341110 BLAKE2B 5267c2eea1b1281f87e63eb08aa928257dd98088b4d5c27c2785d2d8066c2c28536f7f56bf804ffe37d2f51552c91f31ff7e2729f3b2485d594a9e44a0df9ab1 SHA512 2d36e87e9bc2de0b958f4b20544b0bd9f2b0ffb646768e68fefcd5dfb8f09c24db40f27208b5f2d1f6ba02e7465f68a538ea72be118670c76e0959e090a42cf3
|
DIST meson-reference-1.5.1.3 341110 BLAKE2B 5267c2eea1b1281f87e63eb08aa928257dd98088b4d5c27c2785d2d8066c2c28536f7f56bf804ffe37d2f51552c91f31ff7e2729f3b2485d594a9e44a0df9ab1 SHA512 2d36e87e9bc2de0b958f4b20544b0bd9f2b0ffb646768e68fefcd5dfb8f09c24db40f27208b5f2d1f6ba02e7465f68a538ea72be118670c76e0959e090a42cf3
|
||||||
DIST meson-reference-1.5.2.3 341110 BLAKE2B 0d588b796f7f2da2dcb0e7822acde6a9a461930da4bfead3cf9148fa0fac18cd0ccbc6e891f555c973836f1c16b4eae299908a838a0b6843293de8815d30fc23 SHA512 64715ce2113e362e7d67179fe13566bc8f84ce7f4e6d795b836f42455a871173fee06e3e969e2996022d7e6c9b4b5379587a4c0c3d97b4bca527fb8902d3547f
|
DIST meson-reference-1.5.2.3 341110 BLAKE2B 0d588b796f7f2da2dcb0e7822acde6a9a461930da4bfead3cf9148fa0fac18cd0ccbc6e891f555c973836f1c16b4eae299908a838a0b6843293de8815d30fc23 SHA512 64715ce2113e362e7d67179fe13566bc8f84ce7f4e6d795b836f42455a871173fee06e3e969e2996022d7e6c9b4b5379587a4c0c3d97b4bca527fb8902d3547f
|
||||||
DIST meson-reference-1.6.0.3 343730 BLAKE2B 18704b557298da2ea1f3edb4ed6c421bff3f973a215e56b340de2e78b1330e13eb00830cf44c3a8d04fd685ec6f8e6d078a4b9f03cf5b9e5413cbbfce55a22dd SHA512 2752b51dfa404ebae107f6579acca4268140aba8b1a672762fa4fa66819dc4449560313c5eb6c17433cc2cf273ce57d3d04b846bddf74902825b530de777f4ea
|
DIST meson-reference-1.6.0.3 343730 BLAKE2B 18704b557298da2ea1f3edb4ed6c421bff3f973a215e56b340de2e78b1330e13eb00830cf44c3a8d04fd685ec6f8e6d078a4b9f03cf5b9e5413cbbfce55a22dd SHA512 2752b51dfa404ebae107f6579acca4268140aba8b1a672762fa4fa66819dc4449560313c5eb6c17433cc2cf273ce57d3d04b846bddf74902825b530de777f4ea
|
||||||
|
DIST meson-reference-1.6.1.3 343730 BLAKE2B 55df822192781a70e4bc44cfe14fb363e3f820406260ca9705d7fdb5fad1bf0117e3f1325d37e58e23477bc075ab6bd84056409355ec694f72eeaa5bf982ecc7 SHA512 553cdcd86a7a600cda05ac970cc285c4c50017d1e7d2925645d7f19a62b34c2f079673cafecf4111aa102afbe9d8e4d56f166d1d9940b740eeec0bb99d6cbc0d
|
||||||
|
DIST meson-reference-1.7.0rc1.3 344643 BLAKE2B a2615149175714f74d7ea1be426ce23475fa479d4f3ed4e9000b7bee46e15e7f1592d777334385d8858dedf3aa4256bcfaabf5f60150aa0854be6f67ad99ed59 SHA512 9834bbd7b35b1c3c2bfff7c46009f1e2dc6045c35ef07a3e105ad51c2fd48049f44cbbd48be6d68932cb66ee929a3ec6db7afec863720bd78da279b23ac457be
|
||||||
|
@ -0,0 +1,345 @@
|
|||||||
|
https://bugs.gentoo.org/945770
|
||||||
|
https://bugs.gentoo.org/945769
|
||||||
|
https://github.com/mesonbuild/meson/issues/13850
|
||||||
|
https://github.com/mesonbuild/meson/commit/d8ea5c4d8875bf198f088c603868edf66a3c7c65
|
||||||
|
|
||||||
|
From d8ea5c4d8875bf198f088c603868edf66a3c7c65 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Charles Brunet <charles.brunet@optelgroup.com>
|
||||||
|
Date: Tue, 29 Oct 2024 16:51:36 -0400
|
||||||
|
Subject: [PATCH] fix generate_gir with BothLibraries dependency
|
||||||
|
|
||||||
|
Co-authored-by: Xavier Claessens <xclaesse@gmail.com>
|
||||||
|
---
|
||||||
|
mesonbuild/build.py | 52 ++++++++++++-------
|
||||||
|
mesonbuild/interpreter/interpreter.py | 22 ++++----
|
||||||
|
mesonbuild/interpreter/interpreterobjects.py | 10 ++--
|
||||||
|
.../frameworks/38 gir both_libraries/bar.c | 7 +++
|
||||||
|
.../frameworks/38 gir both_libraries/bar.h | 1 +
|
||||||
|
.../frameworks/38 gir both_libraries/foo.c | 6 +++
|
||||||
|
.../frameworks/38 gir both_libraries/foo.h | 1 +
|
||||||
|
.../38 gir both_libraries/meson.build | 42 +++++++++++++++
|
||||||
|
.../38 gir both_libraries/test.json | 3 ++
|
||||||
|
9 files changed, 111 insertions(+), 33 deletions(-)
|
||||||
|
create mode 100644 test cases/frameworks/38 gir both_libraries/bar.c
|
||||||
|
create mode 100644 test cases/frameworks/38 gir both_libraries/bar.h
|
||||||
|
create mode 100644 test cases/frameworks/38 gir both_libraries/foo.c
|
||||||
|
create mode 100644 test cases/frameworks/38 gir both_libraries/foo.h
|
||||||
|
create mode 100644 test cases/frameworks/38 gir both_libraries/meson.build
|
||||||
|
create mode 100644 test cases/frameworks/38 gir both_libraries/test.json
|
||||||
|
|
||||||
|
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
|
||||||
|
index a00209ad45a8..35f1f24a42f8 100644
|
||||||
|
--- a/mesonbuild/build.py
|
||||||
|
+++ b/mesonbuild/build.py
|
||||||
|
@@ -774,6 +774,7 @@ def __init__(
|
||||||
|
}
|
||||||
|
self.pic = False
|
||||||
|
self.pie = False
|
||||||
|
+ self.both_lib: T.Optional[T.Union[StaticLibrary, SharedLibrary]] = None
|
||||||
|
# Track build_rpath entries so we can remove them at install time
|
||||||
|
self.rpath_dirs_to_remove: T.Set[bytes] = set()
|
||||||
|
self.process_sourcelist(sources)
|
||||||
|
@@ -1740,16 +1741,20 @@ def process_vs_module_defs_kw(self, kwargs: T.Dict[str, T.Any]) -> None:
|
||||||
|
def extract_targets_as_list(self, kwargs: T.Dict[str, T.Union[LibTypes, T.Sequence[LibTypes]]], key: T.Literal['link_with', 'link_whole']) -> T.List[LibTypes]:
|
||||||
|
bl_type = self.environment.coredata.get_option(OptionKey('default_both_libraries'))
|
||||||
|
if bl_type == 'auto':
|
||||||
|
- bl_type = 'static' if isinstance(self, StaticLibrary) else 'shared'
|
||||||
|
-
|
||||||
|
- def _resolve_both_libs(lib: LibTypes) -> LibTypes:
|
||||||
|
- if isinstance(lib, BothLibraries):
|
||||||
|
- return lib.get(bl_type)
|
||||||
|
- return lib
|
||||||
|
+ if isinstance(self, StaticLibrary):
|
||||||
|
+ bl_type = 'static'
|
||||||
|
+ elif isinstance(self, SharedLibrary):
|
||||||
|
+ bl_type = 'shared'
|
||||||
|
|
||||||
|
self_libs: T.List[LibTypes] = self.link_targets if key == 'link_with' else self.link_whole_targets
|
||||||
|
- lib_list = listify(kwargs.get(key, [])) + self_libs
|
||||||
|
- return [_resolve_both_libs(t) for t in lib_list]
|
||||||
|
+
|
||||||
|
+ lib_list = []
|
||||||
|
+ for lib in listify(kwargs.get(key, [])) + self_libs:
|
||||||
|
+ if isinstance(lib, (Target, BothLibraries)):
|
||||||
|
+ lib_list.append(lib.get(bl_type))
|
||||||
|
+ else:
|
||||||
|
+ lib_list.append(lib)
|
||||||
|
+ return lib_list
|
||||||
|
|
||||||
|
def get(self, lib_type: T.Literal['static', 'shared', 'auto']) -> LibTypes:
|
||||||
|
"""Base case used by BothLibraries"""
|
||||||
|
@@ -2204,6 +2209,14 @@ def is_linkable_target(self):
|
||||||
|
def is_internal(self) -> bool:
|
||||||
|
return not self.install
|
||||||
|
|
||||||
|
+ def set_shared(self, shared_library: SharedLibrary) -> None:
|
||||||
|
+ self.both_lib = shared_library
|
||||||
|
+
|
||||||
|
+ def get(self, lib_type: T.Literal['static', 'shared', 'auto']) -> LibTypes:
|
||||||
|
+ if lib_type == 'shared':
|
||||||
|
+ return self.both_lib or self
|
||||||
|
+ return self
|
||||||
|
+
|
||||||
|
class SharedLibrary(BuildTarget):
|
||||||
|
known_kwargs = known_shlib_kwargs
|
||||||
|
|
||||||
|
@@ -2470,6 +2483,14 @@ def type_suffix(self):
|
||||||
|
def is_linkable_target(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
+ def set_static(self, static_library: StaticLibrary) -> None:
|
||||||
|
+ self.both_lib = static_library
|
||||||
|
+
|
||||||
|
+ def get(self, lib_type: T.Literal['static', 'shared']) -> LibTypes:
|
||||||
|
+ if lib_type == 'static':
|
||||||
|
+ return self.both_lib or self
|
||||||
|
+ return self
|
||||||
|
+
|
||||||
|
# A shared library that is meant to be used with dlopen rather than linking
|
||||||
|
# into something else.
|
||||||
|
class SharedModule(SharedLibrary):
|
||||||
|
@@ -2506,7 +2527,7 @@ def get_default_install_dir(self) -> T.Union[T.Tuple[str, str], T.Tuple[None, No
|
||||||
|
return self.environment.get_shared_module_dir(), '{moduledir_shared}'
|
||||||
|
|
||||||
|
class BothLibraries(SecondLevelHolder):
|
||||||
|
- def __init__(self, shared: SharedLibrary, static: StaticLibrary, preferred_library: Literal['shared', 'static', 'auto']) -> None:
|
||||||
|
+ def __init__(self, shared: SharedLibrary, static: StaticLibrary, preferred_library: Literal['shared', 'static']) -> None:
|
||||||
|
self._preferred_library = preferred_library
|
||||||
|
self.shared = shared
|
||||||
|
self.static = static
|
||||||
|
@@ -2914,23 +2935,14 @@ class AliasTarget(RunTarget):
|
||||||
|
|
||||||
|
typename = 'alias'
|
||||||
|
|
||||||
|
- def __init__(self, name: str, dependencies: T.Sequence[T.Union[Target, BothLibraries]],
|
||||||
|
+ def __init__(self, name: str, dependencies: T.Sequence[Target],
|
||||||
|
subdir: str, subproject: str, environment: environment.Environment):
|
||||||
|
- super().__init__(name, [], list(self._deps_generator(dependencies)), subdir, subproject, environment)
|
||||||
|
+ super().__init__(name, [], dependencies, subdir, subproject, environment)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
repr_str = "<{0} {1}>"
|
||||||
|
return repr_str.format(self.__class__.__name__, self.get_id())
|
||||||
|
|
||||||
|
- @staticmethod
|
||||||
|
- def _deps_generator(dependencies: T.Sequence[T.Union[Target, BothLibraries]]) -> T.Iterator[Target]:
|
||||||
|
- for dep in dependencies:
|
||||||
|
- if isinstance(dep, BothLibraries):
|
||||||
|
- yield dep.shared
|
||||||
|
- yield dep.static
|
||||||
|
- else:
|
||||||
|
- yield dep
|
||||||
|
-
|
||||||
|
class Jar(BuildTarget):
|
||||||
|
known_kwargs = known_jar_kwargs
|
||||||
|
|
||||||
|
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
|
||||||
|
index 58385c58c5f7..10ca3e6bb2e8 100644
|
||||||
|
--- a/mesonbuild/interpreter/interpreter.py
|
||||||
|
+++ b/mesonbuild/interpreter/interpreter.py
|
||||||
|
@@ -31,7 +31,7 @@
|
||||||
|
from ..interpreterbase import Disabler, disablerIfNotFound
|
||||||
|
from ..interpreterbase import FeatureNew, FeatureDeprecated, FeatureBroken, FeatureNewKwargs
|
||||||
|
from ..interpreterbase import ObjectHolder, ContextManagerObject
|
||||||
|
-from ..interpreterbase import stringifyUserArguments, resolve_second_level_holders
|
||||||
|
+from ..interpreterbase import stringifyUserArguments
|
||||||
|
from ..modules import ExtensionModule, ModuleObject, MutableModuleObject, NewExtensionModule, NotFoundExtensionModule
|
||||||
|
from ..optinterpreter import optname_regex
|
||||||
|
|
||||||
|
@@ -681,7 +681,6 @@ def func_files(self, node: mparser.FunctionNode, args: T.Tuple[T.List[str]], kwa
|
||||||
|
KwargInfo('version', (str, NoneType)),
|
||||||
|
KwargInfo('objects', ContainerTypeInfo(list, build.ExtractedObjects), listify=True, default=[], since='1.1.0'),
|
||||||
|
)
|
||||||
|
- @noSecondLevelHolderResolving
|
||||||
|
def func_declare_dependency(self, node: mparser.BaseNode, args: T.List[TYPE_var],
|
||||||
|
kwargs: kwtypes.FuncDeclareDependency) -> dependencies.Dependency:
|
||||||
|
deps = kwargs['dependencies']
|
||||||
|
@@ -1906,15 +1905,12 @@ def func_jar(self, node: mparser.BaseNode,
|
||||||
|
@permittedKwargs(known_build_target_kwargs)
|
||||||
|
@typed_pos_args('build_target', str, varargs=SOURCES_VARARGS)
|
||||||
|
@typed_kwargs('build_target', *BUILD_TARGET_KWS, allow_unknown=True)
|
||||||
|
- @noSecondLevelHolderResolving
|
||||||
|
def func_build_target(self, node: mparser.BaseNode,
|
||||||
|
args: T.Tuple[str, SourcesVarargsType],
|
||||||
|
kwargs: kwtypes.BuildTarget
|
||||||
|
) -> T.Union[build.Executable, build.StaticLibrary, build.SharedLibrary,
|
||||||
|
build.SharedModule, build.BothLibraries, build.Jar]:
|
||||||
|
target_type = kwargs['target_type']
|
||||||
|
- if target_type not in {'both_libraries', 'library'}:
|
||||||
|
- args, kwargs = resolve_second_level_holders(args, kwargs)
|
||||||
|
|
||||||
|
if target_type == 'executable':
|
||||||
|
return self.build_target(node, args, kwargs, build.Executable)
|
||||||
|
@@ -2176,13 +2172,19 @@ def func_run_target(self, node: mparser.FunctionNode, args: T.Tuple[str],
|
||||||
|
@FeatureNew('alias_target', '0.52.0')
|
||||||
|
@typed_pos_args('alias_target', str, varargs=(build.Target, build.BothLibraries), min_varargs=1)
|
||||||
|
@noKwargs
|
||||||
|
- @noSecondLevelHolderResolving
|
||||||
|
def func_alias_target(self, node: mparser.BaseNode, args: T.Tuple[str, T.List[T.Union[build.Target, build.BothLibraries]]],
|
||||||
|
kwargs: TYPE_kwargs) -> build.AliasTarget:
|
||||||
|
name, deps = args
|
||||||
|
if any(isinstance(d, build.RunTarget) for d in deps):
|
||||||
|
FeatureNew.single_use('alias_target that depends on run_targets', '0.60.0', self.subproject)
|
||||||
|
- tg = build.AliasTarget(name, deps, self.subdir, self.subproject, self.environment)
|
||||||
|
+ real_deps: T.List[build.Target] = []
|
||||||
|
+ for d in deps:
|
||||||
|
+ if isinstance(d, build.BothLibraries):
|
||||||
|
+ real_deps.append(d.shared)
|
||||||
|
+ real_deps.append(d.static)
|
||||||
|
+ else:
|
||||||
|
+ real_deps.append(d)
|
||||||
|
+ tg = build.AliasTarget(name, real_deps, self.subdir, self.subproject, self.environment)
|
||||||
|
self.add_target(name, tg)
|
||||||
|
return tg
|
||||||
|
|
||||||
|
@@ -3286,16 +3288,18 @@ def build_both_libraries(self, node: mparser.BaseNode, args: T.Tuple[str, Source
|
||||||
|
# Keep only compilers used for linking
|
||||||
|
static_lib.compilers = {k: v for k, v in static_lib.compilers.items() if k in compilers.clink_langs}
|
||||||
|
|
||||||
|
+ # Cross reference them to implement as_shared() and as_static() methods.
|
||||||
|
+ shared_lib.set_static(static_lib)
|
||||||
|
+ static_lib.set_shared(shared_lib)
|
||||||
|
+
|
||||||
|
return build.BothLibraries(shared_lib, static_lib, preferred_library)
|
||||||
|
|
||||||
|
def build_library(self, node: mparser.BaseNode, args: T.Tuple[str, SourcesVarargsType], kwargs: kwtypes.Library):
|
||||||
|
default_library = self.coredata.get_option(OptionKey('default_library', subproject=self.subproject))
|
||||||
|
assert isinstance(default_library, str), 'for mypy'
|
||||||
|
if default_library == 'shared':
|
||||||
|
- args, kwargs = resolve_second_level_holders(args, kwargs)
|
||||||
|
return self.build_target(node, args, T.cast('kwtypes.StaticLibrary', kwargs), build.SharedLibrary)
|
||||||
|
elif default_library == 'static':
|
||||||
|
- args, kwargs = resolve_second_level_holders(args, kwargs)
|
||||||
|
return self.build_target(node, args, T.cast('kwtypes.SharedLibrary', kwargs), build.StaticLibrary)
|
||||||
|
elif default_library == 'both':
|
||||||
|
return self.build_both_libraries(node, args, kwargs)
|
||||||
|
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
|
||||||
|
index a919102607be..f4a2b4107ed3 100644
|
||||||
|
--- a/mesonbuild/interpreter/interpreterobjects.py
|
||||||
|
+++ b/mesonbuild/interpreter/interpreterobjects.py
|
||||||
|
@@ -1001,8 +1001,6 @@ class SharedLibraryHolder(BuildTargetHolder[build.SharedLibrary]):
|
||||||
|
|
||||||
|
class BothLibrariesHolder(BuildTargetHolder[build.BothLibraries]):
|
||||||
|
def __init__(self, libs: build.BothLibraries, interp: 'Interpreter'):
|
||||||
|
- # FIXME: This build target always represents the shared library, but
|
||||||
|
- # that should be configurable.
|
||||||
|
super().__init__(libs, interp)
|
||||||
|
self.methods.update({'get_shared_lib': self.get_shared_lib_method,
|
||||||
|
'get_static_lib': self.get_static_lib_method,
|
||||||
|
@@ -1017,12 +1015,16 @@ def __repr__(self) -> str:
|
||||||
|
@noPosargs
|
||||||
|
@noKwargs
|
||||||
|
def get_shared_lib_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> build.SharedLibrary:
|
||||||
|
- return self.held_object.shared
|
||||||
|
+ lib = copy.copy(self.held_object.shared)
|
||||||
|
+ lib.both_lib = None
|
||||||
|
+ return lib
|
||||||
|
|
||||||
|
@noPosargs
|
||||||
|
@noKwargs
|
||||||
|
def get_static_lib_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> build.StaticLibrary:
|
||||||
|
- return self.held_object.static
|
||||||
|
+ lib = copy.copy(self.held_object.static)
|
||||||
|
+ lib.both_lib = None
|
||||||
|
+ return lib
|
||||||
|
|
||||||
|
class SharedModuleHolder(BuildTargetHolder[build.SharedModule]):
|
||||||
|
pass
|
||||||
|
diff --git a/test cases/frameworks/38 gir both_libraries/bar.c b/test cases/frameworks/38 gir both_libraries/bar.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..4cb41f798294
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test cases/frameworks/38 gir both_libraries/bar.c
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+#include "bar.h"
|
||||||
|
+#include "foo.h"
|
||||||
|
+
|
||||||
|
+int bar_func(void)
|
||||||
|
+{
|
||||||
|
+ return foo_func() + 42;
|
||||||
|
+}
|
||||||
|
diff --git a/test cases/frameworks/38 gir both_libraries/bar.h b/test cases/frameworks/38 gir both_libraries/bar.h
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..d22827b837f7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test cases/frameworks/38 gir both_libraries/bar.h
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+int bar_func(void);
|
||||||
|
diff --git a/test cases/frameworks/38 gir both_libraries/foo.c b/test cases/frameworks/38 gir both_libraries/foo.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..b88aa91dabb4
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test cases/frameworks/38 gir both_libraries/foo.c
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+#include "foo.h"
|
||||||
|
+
|
||||||
|
+int foo_func(void)
|
||||||
|
+{
|
||||||
|
+ return 42;
|
||||||
|
+}
|
||||||
|
diff --git a/test cases/frameworks/38 gir both_libraries/foo.h b/test cases/frameworks/38 gir both_libraries/foo.h
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..2a0867249307
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test cases/frameworks/38 gir both_libraries/foo.h
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+int foo_func(void);
|
||||||
|
diff --git a/test cases/frameworks/38 gir both_libraries/meson.build b/test cases/frameworks/38 gir both_libraries/meson.build
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..cb9cdd31f3ed
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test cases/frameworks/38 gir both_libraries/meson.build
|
||||||
|
@@ -0,0 +1,42 @@
|
||||||
|
+project('gir both libraries', 'c')
|
||||||
|
+
|
||||||
|
+gir = dependency('gobject-introspection-1.0', required: false)
|
||||||
|
+if not gir.found()
|
||||||
|
+ error('MESON_SKIP_TEST gobject-introspection not found.')
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+if host_machine.system() == 'cygwin'
|
||||||
|
+ # FIXME: g-ir-scanner seems broken on cygwin:
|
||||||
|
+ # ERROR: can't resolve libraries to shared libraries: foo++
|
||||||
|
+ error('MESON_SKIP_TEST g-ir-scanner is broken on cygwin.')
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+gnome = import('gnome')
|
||||||
|
+
|
||||||
|
+# Regression test simulating how GStreamer generate its GIRs.
|
||||||
|
+# Generated gobject-introspection binaries for every GStreamer libraries must
|
||||||
|
+# first call gst_init() defined in the main libgstreamer, which means they need
|
||||||
|
+# to link on that lib.
|
||||||
|
+# A regression caused by https://github.com/mesonbuild/meson/pull/12632 made
|
||||||
|
+# Meson not link the binary generated for bar with libfoo in the case it uses
|
||||||
|
+# both_libraries().
|
||||||
|
+
|
||||||
|
+libfoo = both_libraries('foo', 'foo.c')
|
||||||
|
+foo_gir = gnome.generate_gir(libfoo,
|
||||||
|
+ namespace: 'foo',
|
||||||
|
+ nsversion: '1.0',
|
||||||
|
+ sources: ['foo.c', 'foo.h'],
|
||||||
|
+)
|
||||||
|
+foo_dep = declare_dependency(
|
||||||
|
+ link_with: libfoo,
|
||||||
|
+ sources: foo_gir,
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+libbar = both_libraries('bar', 'bar.c', dependencies: foo_dep)
|
||||||
|
+gnome.generate_gir(libbar,
|
||||||
|
+ namespace: 'bar',
|
||||||
|
+ nsversion: '1.0',
|
||||||
|
+ sources: ['bar.c', 'bar.h'],
|
||||||
|
+ extra_args: '--add-init-section=extern void foo_func(void);foo_func();',
|
||||||
|
+ dependencies: foo_dep,
|
||||||
|
+)
|
||||||
|
diff --git a/test cases/frameworks/38 gir both_libraries/test.json b/test cases/frameworks/38 gir both_libraries/test.json
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..82ac42a293b3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test cases/frameworks/38 gir both_libraries/test.json
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+{
|
||||||
|
+ "expect_skip_on_jobname": ["azure", "macos", "msys2", "cygwin"]
|
||||||
|
+}
|
||||||
|
\ No newline at end of file
|
||||||
|
|
191
sdk_container/src/third_party/portage-stable/dev-build/meson/meson-1.6.0-r1.ebuild
vendored
Normal file
191
sdk_container/src/third_party/portage-stable/dev-build/meson/meson-1.6.0-r1.ebuild
vendored
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
# Copyright 2016-2024 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
PYTHON_COMPAT=( python3_{10..13} pypy3 )
|
||||||
|
DISTUTILS_USE_PEP517=setuptools
|
||||||
|
|
||||||
|
inherit bash-completion-r1 edo distutils-r1 flag-o-matic toolchain-funcs
|
||||||
|
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
EGIT_REPO_URI="https://github.com/mesonbuild/meson"
|
||||||
|
inherit ninja-utils git-r3
|
||||||
|
|
||||||
|
BDEPEND="
|
||||||
|
${NINJA_DEPEND}
|
||||||
|
$(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]')
|
||||||
|
"
|
||||||
|
|
||||||
|
else
|
||||||
|
inherit verify-sig
|
||||||
|
|
||||||
|
MY_PV=${PV/_/}
|
||||||
|
MY_P=${P/_/}
|
||||||
|
S=${WORKDIR}/${MY_P}
|
||||||
|
|
||||||
|
SRC_URI="
|
||||||
|
https://github.com/mesonbuild/meson/releases/download/${MY_PV}/${MY_P}.tar.gz
|
||||||
|
verify-sig? ( https://github.com/mesonbuild/meson/releases/download/${MY_PV}/${MY_P}.tar.gz.asc )
|
||||||
|
https://github.com/mesonbuild/meson/releases/download/${MY_PV}/meson-reference.3 -> meson-reference-${MY_PV}.3
|
||||||
|
"
|
||||||
|
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-jpakkane )"
|
||||||
|
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/jpakkane.gpg
|
||||||
|
|
||||||
|
if [[ ${PV} != *_rc* ]] ; then
|
||||||
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
DESCRIPTION="Open source build system"
|
||||||
|
HOMEPAGE="https://mesonbuild.com/"
|
||||||
|
|
||||||
|
LICENSE="Apache-2.0"
|
||||||
|
SLOT="0"
|
||||||
|
IUSE="test"
|
||||||
|
RESTRICT="!test? ( test )"
|
||||||
|
|
||||||
|
DEPEND="
|
||||||
|
test? (
|
||||||
|
dev-libs/glib:2
|
||||||
|
dev-libs/gobject-introspection
|
||||||
|
app-alternatives/ninja
|
||||||
|
dev-vcs/git
|
||||||
|
sys-libs/zlib[static-libs(+)]
|
||||||
|
virtual/pkgconfig
|
||||||
|
)
|
||||||
|
"
|
||||||
|
RDEPEND="
|
||||||
|
!<dev-build/muon-0.2.0-r2[man(-)]
|
||||||
|
virtual/pkgconfig
|
||||||
|
"
|
||||||
|
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}"/${PN}-1.2.1-python-path.patch
|
||||||
|
"${FILESDIR}"/${P}-generate_git-both-libraries.patch
|
||||||
|
)
|
||||||
|
|
||||||
|
src_unpack() {
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
git-r3_src_unpack
|
||||||
|
else
|
||||||
|
default
|
||||||
|
use verify-sig && verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.gz{,.asc}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
python_prepare_all() {
|
||||||
|
local disable_unittests=(
|
||||||
|
# ASAN and sandbox both want control over LD_PRELOAD
|
||||||
|
# https://bugs.gentoo.org/673016
|
||||||
|
-e 's/test_generate_gir_with_address_sanitizer/_&/'
|
||||||
|
|
||||||
|
# ASAN is unsupported on some targets
|
||||||
|
# https://bugs.gentoo.org/692822
|
||||||
|
-e 's/test_pch_with_address_sanitizer/_&/'
|
||||||
|
|
||||||
|
# clippy-driver fails, but only when run via portage.
|
||||||
|
#
|
||||||
|
# error[E0463]: can't find crate for `std`
|
||||||
|
# error: requires `sized` lang_item
|
||||||
|
-e 's/test_rust_clippy/_&/'
|
||||||
|
)
|
||||||
|
|
||||||
|
sed -i "${disable_unittests[@]}" unittests/*.py || die
|
||||||
|
|
||||||
|
# Broken due to python2 script created by python_wrapper_setup
|
||||||
|
rm -r "test cases/frameworks/1 boost" || die
|
||||||
|
# nvcc breaks on essentially any LDFLAGS
|
||||||
|
# https://bugs.gentoo.org/936757
|
||||||
|
# https://github.com/mesonbuild/meson/issues/11234
|
||||||
|
rm -r "test cases/cuda"/* || die
|
||||||
|
|
||||||
|
distutils-r1_python_prepare_all
|
||||||
|
}
|
||||||
|
|
||||||
|
python_check_deps() {
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
python_configure_all() {
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
# We use the unsafe_yaml loader because strictyaml is not packaged. In
|
||||||
|
# theory they produce the same results, but pyyaml is faster and
|
||||||
|
# without safety checks.
|
||||||
|
edo ./meson.py setup \
|
||||||
|
--prefix "${EPREFIX}/usr" \
|
||||||
|
-Dhtml=false \
|
||||||
|
-Dunsafe_yaml=true \
|
||||||
|
docs/ docs/builddir
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
python_compile_all() {
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
eninja -C docs/builddir
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
tc-export PKG_CONFIG
|
||||||
|
if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then
|
||||||
|
ewarn "Found Qt5Core but not Qt5Gui; skipping tests"
|
||||||
|
else
|
||||||
|
distutils-r1_src_test
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
python_test() {
|
||||||
|
(
|
||||||
|
# meson has its own tests for LTO support. We don't need to verify that
|
||||||
|
# all tests work when they happen to use it. And in particular, this
|
||||||
|
# breaks rust.
|
||||||
|
filter-lto
|
||||||
|
|
||||||
|
# remove unwanted python_wrapper_setup contents
|
||||||
|
# We actually do want to non-error if python2 is installed and tested.
|
||||||
|
remove="${T}/${EPYTHON}/bin:"
|
||||||
|
PATH=${PATH/${remove}/}
|
||||||
|
|
||||||
|
# test_meson_installed
|
||||||
|
unset PYTHONDONTWRITEBYTECODE
|
||||||
|
|
||||||
|
# https://bugs.gentoo.org/687792
|
||||||
|
unset PKG_CONFIG
|
||||||
|
|
||||||
|
# test_cross_file_system_paths
|
||||||
|
unset XDG_DATA_HOME
|
||||||
|
|
||||||
|
# 'test cases/unit/73 summary' expects 80 columns
|
||||||
|
export COLUMNS=80
|
||||||
|
|
||||||
|
# If JAVA_HOME is not set, meson looks for javac in PATH.
|
||||||
|
# If javac is in /usr/bin, meson assumes /usr/include is a valid
|
||||||
|
# JDK include path. Setting JAVA_HOME works around this broken
|
||||||
|
# autodetection. If no JDK is installed, we should end up with an empty
|
||||||
|
# value in JAVA_HOME, and the tests should get skipped.
|
||||||
|
export JAVA_HOME=$(java-config -O 2>/dev/null)
|
||||||
|
|
||||||
|
${EPYTHON} -u run_tests.py
|
||||||
|
) || die "Testing failed with ${EPYTHON}"
|
||||||
|
}
|
||||||
|
|
||||||
|
python_install_all() {
|
||||||
|
distutils-r1_python_install_all
|
||||||
|
|
||||||
|
insinto /usr/share/vim/vimfiles
|
||||||
|
doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax}
|
||||||
|
|
||||||
|
insinto /usr/share/zsh/site-functions
|
||||||
|
doins data/shell-completions/zsh/_meson
|
||||||
|
|
||||||
|
dobashcomp data/shell-completions/bash/meson
|
||||||
|
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
DESTDIR="${ED}" eninja -C docs/builddir install
|
||||||
|
else
|
||||||
|
newman "${DISTDIR}"/meson-reference-${MY_PV}.3 meson-reference.3
|
||||||
|
fi
|
||||||
|
}
|
190
sdk_container/src/third_party/portage-stable/dev-build/meson/meson-1.7.0_rc1.ebuild
vendored
Normal file
190
sdk_container/src/third_party/portage-stable/dev-build/meson/meson-1.7.0_rc1.ebuild
vendored
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
# Copyright 2016-2025 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
PYTHON_COMPAT=( python3_{10..13} pypy3 )
|
||||||
|
DISTUTILS_USE_PEP517=setuptools
|
||||||
|
|
||||||
|
inherit bash-completion-r1 edo distutils-r1 flag-o-matic toolchain-funcs
|
||||||
|
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
EGIT_REPO_URI="https://github.com/mesonbuild/meson"
|
||||||
|
inherit ninja-utils git-r3
|
||||||
|
|
||||||
|
BDEPEND="
|
||||||
|
${NINJA_DEPEND}
|
||||||
|
$(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]')
|
||||||
|
"
|
||||||
|
|
||||||
|
else
|
||||||
|
inherit verify-sig
|
||||||
|
|
||||||
|
MY_PV=${PV/_/}
|
||||||
|
MY_P=${P/_/}
|
||||||
|
S=${WORKDIR}/${MY_P}
|
||||||
|
|
||||||
|
SRC_URI="
|
||||||
|
https://github.com/mesonbuild/meson/releases/download/${MY_PV}/${MY_P}.tar.gz
|
||||||
|
verify-sig? ( https://github.com/mesonbuild/meson/releases/download/${MY_PV}/${MY_P}.tar.gz.asc )
|
||||||
|
https://github.com/mesonbuild/meson/releases/download/${MY_PV}/meson-reference.3 -> meson-reference-${MY_PV}.3
|
||||||
|
"
|
||||||
|
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-jpakkane )"
|
||||||
|
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/jpakkane.gpg
|
||||||
|
|
||||||
|
if [[ ${PV} != *_rc* ]] ; then
|
||||||
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
DESCRIPTION="Open source build system"
|
||||||
|
HOMEPAGE="https://mesonbuild.com/"
|
||||||
|
|
||||||
|
LICENSE="Apache-2.0"
|
||||||
|
SLOT="0"
|
||||||
|
IUSE="test"
|
||||||
|
RESTRICT="!test? ( test )"
|
||||||
|
|
||||||
|
DEPEND="
|
||||||
|
test? (
|
||||||
|
dev-libs/glib:2
|
||||||
|
dev-libs/gobject-introspection
|
||||||
|
app-alternatives/ninja
|
||||||
|
dev-vcs/git
|
||||||
|
sys-libs/zlib[static-libs(+)]
|
||||||
|
virtual/pkgconfig
|
||||||
|
)
|
||||||
|
"
|
||||||
|
RDEPEND="
|
||||||
|
!<dev-build/muon-0.2.0-r2[man(-)]
|
||||||
|
virtual/pkgconfig
|
||||||
|
"
|
||||||
|
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}"/${PN}-1.2.1-python-path.patch
|
||||||
|
)
|
||||||
|
|
||||||
|
src_unpack() {
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
git-r3_src_unpack
|
||||||
|
else
|
||||||
|
default
|
||||||
|
use verify-sig && verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.gz{,.asc}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
python_prepare_all() {
|
||||||
|
local disable_unittests=(
|
||||||
|
# ASAN and sandbox both want control over LD_PRELOAD
|
||||||
|
# https://bugs.gentoo.org/673016
|
||||||
|
-e 's/test_generate_gir_with_address_sanitizer/_&/'
|
||||||
|
|
||||||
|
# ASAN is unsupported on some targets
|
||||||
|
# https://bugs.gentoo.org/692822
|
||||||
|
-e 's/test_pch_with_address_sanitizer/_&/'
|
||||||
|
|
||||||
|
# clippy-driver fails, but only when run via portage.
|
||||||
|
#
|
||||||
|
# error[E0463]: can't find crate for `std`
|
||||||
|
# error: requires `sized` lang_item
|
||||||
|
-e 's/test_rust_clippy/_&/'
|
||||||
|
)
|
||||||
|
|
||||||
|
sed -i "${disable_unittests[@]}" unittests/*.py || die
|
||||||
|
|
||||||
|
# Broken due to python2 script created by python_wrapper_setup
|
||||||
|
rm -r "test cases/frameworks/1 boost" || die
|
||||||
|
# nvcc breaks on essentially any LDFLAGS
|
||||||
|
# https://bugs.gentoo.org/936757
|
||||||
|
# https://github.com/mesonbuild/meson/issues/11234
|
||||||
|
rm -r "test cases/cuda"/* || die
|
||||||
|
|
||||||
|
distutils-r1_python_prepare_all
|
||||||
|
}
|
||||||
|
|
||||||
|
python_check_deps() {
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
python_configure_all() {
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
# We use the unsafe_yaml loader because strictyaml is not packaged. In
|
||||||
|
# theory they produce the same results, but pyyaml is faster and
|
||||||
|
# without safety checks.
|
||||||
|
edo ./meson.py setup \
|
||||||
|
--prefix "${EPREFIX}/usr" \
|
||||||
|
-Dhtml=false \
|
||||||
|
-Dunsafe_yaml=true \
|
||||||
|
docs/ docs/builddir
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
python_compile_all() {
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
eninja -C docs/builddir
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
tc-export PKG_CONFIG
|
||||||
|
if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then
|
||||||
|
ewarn "Found Qt5Core but not Qt5Gui; skipping tests"
|
||||||
|
else
|
||||||
|
distutils-r1_src_test
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
python_test() {
|
||||||
|
(
|
||||||
|
# meson has its own tests for LTO support. We don't need to verify that
|
||||||
|
# all tests work when they happen to use it. And in particular, this
|
||||||
|
# breaks rust.
|
||||||
|
filter-lto
|
||||||
|
|
||||||
|
# remove unwanted python_wrapper_setup contents
|
||||||
|
# We actually do want to non-error if python2 is installed and tested.
|
||||||
|
remove="${T}/${EPYTHON}/bin:"
|
||||||
|
PATH=${PATH/${remove}/}
|
||||||
|
|
||||||
|
# test_meson_installed
|
||||||
|
unset PYTHONDONTWRITEBYTECODE
|
||||||
|
|
||||||
|
# https://bugs.gentoo.org/687792
|
||||||
|
unset PKG_CONFIG
|
||||||
|
|
||||||
|
# test_cross_file_system_paths
|
||||||
|
unset XDG_DATA_HOME
|
||||||
|
|
||||||
|
# 'test cases/unit/73 summary' expects 80 columns
|
||||||
|
export COLUMNS=80
|
||||||
|
|
||||||
|
# If JAVA_HOME is not set, meson looks for javac in PATH.
|
||||||
|
# If javac is in /usr/bin, meson assumes /usr/include is a valid
|
||||||
|
# JDK include path. Setting JAVA_HOME works around this broken
|
||||||
|
# autodetection. If no JDK is installed, we should end up with an empty
|
||||||
|
# value in JAVA_HOME, and the tests should get skipped.
|
||||||
|
export JAVA_HOME=$(java-config -O 2>/dev/null)
|
||||||
|
|
||||||
|
${EPYTHON} -u run_tests.py
|
||||||
|
) || die "Testing failed with ${EPYTHON}"
|
||||||
|
}
|
||||||
|
|
||||||
|
python_install_all() {
|
||||||
|
distutils-r1_python_install_all
|
||||||
|
|
||||||
|
insinto /usr/share/vim/vimfiles
|
||||||
|
doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax}
|
||||||
|
|
||||||
|
insinto /usr/share/zsh/site-functions
|
||||||
|
doins data/shell-completions/zsh/_meson
|
||||||
|
|
||||||
|
dobashcomp data/shell-completions/bash/meson
|
||||||
|
|
||||||
|
if [[ ${PV} = *9999* ]]; then
|
||||||
|
DESTDIR="${ED}" eninja -C docs/builddir install
|
||||||
|
else
|
||||||
|
newman "${DISTDIR}"/meson-reference-${MY_PV}.3 meson-reference.3
|
||||||
|
fi
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user