diff options
author | Pablo Correa Gómez <ablocorrea@hotmail.com> | 2021-11-22 15:46:15 +0100 |
---|---|---|
committer | Eli Schwartz <eschwartz93@gmail.com> | 2021-12-01 13:59:54 -0500 |
commit | 4f882ff8ec81cbc42b097d3aee8ca4a8013f538b (patch) | |
tree | 9cef0e48e71fda1e116023ca8f0791cdfea59b2c /mesonbuild/interpreter | |
parent | bb5a09de45a99b657b16edef7a9be423735aec79 (diff) | |
download | meson-4f882ff8ec81cbc42b097d3aee8ca4a8013f538b.zip meson-4f882ff8ec81cbc42b097d3aee8ca4a8013f538b.tar.gz meson-4f882ff8ec81cbc42b097d3aee8ca4a8013f538b.tar.bz2 |
add install_symlink function
Allows installing symlinks directly from meson, which can
become useful in multiple scenarios. Current main use is to
help moving forward #9557
Diffstat (limited to 'mesonbuild/interpreter')
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 22 | ||||
-rw-r--r-- | mesonbuild/interpreter/interpreterobjects.py | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 97e1a06..ae6be3b 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -364,6 +364,7 @@ class Interpreter(InterpreterBase, HoldableObject): 'install_headers': self.func_install_headers, 'install_man': self.func_install_man, 'install_subdir': self.func_install_subdir, + 'install_symlink': self.func_install_symlink, 'is_disabler': self.func_is_disabler, 'is_variable': self.func_is_variable, 'jar': self.func_jar, @@ -425,6 +426,7 @@ class Interpreter(InterpreterBase, HoldableObject): build.Man: OBJ.ManHolder, build.EmptyDir: OBJ.EmptyDirHolder, build.Data: OBJ.DataHolder, + build.SymlinkData: OBJ.SymlinkDataHolder, build.InstallDir: OBJ.InstallDirHolder, build.IncludeDirs: OBJ.IncludeDirsHolder, build.EnvironmentVariables: OBJ.EnvironmentVariablesHolder, @@ -476,6 +478,8 @@ class Interpreter(InterpreterBase, HoldableObject): self.build.install_scripts.append(v) elif isinstance(v, build.Data): self.build.data.append(v) + elif isinstance(v, build.SymlinkData): + self.build.symlinks.append(v) elif isinstance(v, dependencies.InternalDependency): # FIXME: This is special cased and not ideal: # The first source is our new VapiTarget, the rest are deps @@ -1968,6 +1972,24 @@ This will become a hard error in the future.''', location=node) return d + @FeatureNew('install_symlink', '0.61.0') + @typed_pos_args('symlink_name', str) + @typed_kwargs( + 'install_symlink', + KwargInfo('pointing_to', str, required=True), + KwargInfo('install_dir', str, required=True), + KwargInfo('install_tag', (str, NoneType)), + ) + def func_install_symlink(self, node: mparser.BaseNode, + args: T.Tuple[T.List[str]], + kwargs) -> build.SymlinkData: + name = args[0] # Validation while creating the SymlinkData object + target = kwargs['pointing_to'] + l = build.SymlinkData(target, name, kwargs['install_dir'], + self.subproject, kwargs['install_tag']) + self.build.symlinks.append(l) + return l + @typed_pos_args('subdir', str) @typed_kwargs( 'subdir', diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py index 602623a..6ff4b0f 100644 --- a/mesonbuild/interpreter/interpreterobjects.py +++ b/mesonbuild/interpreter/interpreterobjects.py @@ -641,6 +641,9 @@ class HeadersHolder(ObjectHolder[build.Headers]): class DataHolder(ObjectHolder[build.Data]): pass +class SymlinkDataHolder(ObjectHolder[build.SymlinkData]): + pass + class InstallDirHolder(ObjectHolder[build.InstallDir]): pass |