diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2022-12-06 16:14:22 -0500 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2022-12-27 20:29:46 -0500 |
commit | 2fa074917597fea0cf3332c6620d3414034825e4 (patch) | |
tree | 787dc86c8affa560710340a76dcdbbbf7794ff86 /mesonbuild/interpreter/interpreter.py | |
parent | 26b83eee9427889b5b006079872aa288bc0ffaed (diff) | |
download | meson-2fa074917597fea0cf3332c6620d3414034825e4.zip meson-2fa074917597fea0cf3332c6620d3414034825e4.tar.gz meson-2fa074917597fea0cf3332c6620d3414034825e4.tar.bz2 |
add license_files kwarg to project
Hook this up to installed dependency manifests. This is often needed
above and beyond just an SPDX string -- e.g. many licenses have custom
copyright lines.
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index f112e4e..5347120 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -1132,7 +1132,8 @@ class Interpreter(InterpreterBase, HoldableObject): validator=_project_version_validator, convertor=lambda x: x[0] if isinstance(x, list) else x, ), - KwargInfo('license', ContainerTypeInfo(list, str), default=['unknown'], listify=True), + KwargInfo('license', (ContainerTypeInfo(list, str), NoneType), default=None, listify=True), + KwargInfo('license_files', ContainerTypeInfo(list, str), default=[], listify=True, since='1.1.0'), KwargInfo('subproject_dir', str, default='subprojects'), ) def func_project(self, node: mparser.FunctionNode, args: T.Tuple[str, T.List[str]], kwargs: 'kwtypes.Project') -> None: @@ -1198,8 +1199,20 @@ class Interpreter(InterpreterBase, HoldableObject): if self.build.project_version is None: self.build.project_version = self.project_version - proj_license = kwargs['license'] - self.build.dep_manifest[proj_name] = build.DepManifest(self.project_version, proj_license) + + if kwargs['license'] is None: + proj_license = ['unknown'] + if kwargs['license_files']: + raise InvalidArguments('Project `license` name must be specified when `license_files` is set') + else: + proj_license = kwargs['license'] + proj_license_files = [] + for i in self.source_strings_to_files(kwargs['license_files']): + ifname = i.absolute_path(self.environment.source_dir, + self.environment.build_dir) + proj_license_files.append((ifname, i)) + self.build.dep_manifest[proj_name] = build.DepManifest(self.project_version, proj_license, + proj_license_files, self.subproject) if self.subproject in self.build.projects: raise InvalidCode('Second call to project().') |