aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/build.py
diff options
context:
space:
mode:
authorPablo Correa Gómez <ablocorrea@hotmail.com>2021-11-22 15:46:15 +0100
committerEli Schwartz <eschwartz93@gmail.com>2021-12-01 13:59:54 -0500
commit4f882ff8ec81cbc42b097d3aee8ca4a8013f538b (patch)
tree9cef0e48e71fda1e116023ca8f0791cdfea59b2c /mesonbuild/build.py
parentbb5a09de45a99b657b16edef7a9be423735aec79 (diff)
downloadmeson-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/build.py')
-rw-r--r--mesonbuild/build.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 545575c..89c158e 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -251,6 +251,7 @@ class Build:
self.man: T.List[Man] = []
self.emptydir: T.List[EmptyDir] = []
self.data: T.List[Data] = []
+ self.symlinks: T.List[SymlinkData] = []
self.static_linker: PerMachine[StaticLinker] = PerMachine(None, None)
self.subprojects = {}
self.subproject_dir = ''
@@ -329,6 +330,9 @@ class Build:
def get_data(self) -> T.List['Data']:
return self.data
+ def get_symlinks(self) -> T.List['SymlinkData']:
+ return self.symlinks
+
def get_emptydir(self) -> T.List['EmptyDir']:
return self.emptydir
@@ -2802,6 +2806,18 @@ class Data(HoldableObject):
self.subproject = subproject
self.data_type = data_type
+class SymlinkData(HoldableObject):
+ def __init__(self, target: str, name: str, install_dir: str,
+ subproject: str, install_tag: T.Optional[str] = None):
+ self.target = target
+ if name != os.path.basename(name):
+ raise InvalidArguments(f'Link name is "{name}", but link names cannot contain path separators. '
+ 'The dir part should be in install_dir.')
+ self.name = name
+ self.install_dir = install_dir
+ self.subproject = subproject
+ self.install_tag = install_tag
+
class TestSetup:
def __init__(self, exe_wrapper: T.List[str], gdb: bool,
timeout_multiplier: int, env: EnvironmentVariables,