aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreter.py
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2022-12-06 16:14:22 -0500
committerEli Schwartz <eschwartz@archlinux.org>2022-12-27 20:29:46 -0500
commit2fa074917597fea0cf3332c6620d3414034825e4 (patch)
tree787dc86c8affa560710340a76dcdbbbf7794ff86 /mesonbuild/interpreter/interpreter.py
parent26b83eee9427889b5b006079872aa288bc0ffaed (diff)
downloadmeson-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.py19
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().')