aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorAleksey Filippov <alekseyf@google.com>2018-01-18 16:44:06 +0000
committerAleksey Filippov <alekseyf@google.com>2018-02-05 01:28:07 +0000
commit8ca3cc0c3db481b467233151e481a190cbb84c31 (patch)
treee3f247cfdaa3db28ef073d5f6513fbae1da2fb80 /mesonbuild/interpreter.py
parent86ee89b400fc4acbb506cc44d5a287958397edf9 (diff)
downloadmeson-8ca3cc0c3db481b467233151e481a190cbb84c31.zip
meson-8ca3cc0c3db481b467233151e481a190cbb84c31.tar.gz
meson-8ca3cc0c3db481b467233151e481a190cbb84c31.tar.bz2
Add elide_directory keyword for install_subdir() function
If elide_directory=true install_subdir() installs directory contents instead of directory itself, eliding name of the source directory. Closes #2869.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 2273b71..0d9e6e8 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -507,13 +507,14 @@ class DataHolder(InterpreterObject, ObjectHolder):
return self.held_object.install_dir
class InstallDir(InterpreterObject):
- def __init__(self, src_subdir, inst_subdir, install_dir, install_mode, exclude):
+ def __init__(self, src_subdir, inst_subdir, install_dir, install_mode, exclude, elide_directory):
InterpreterObject.__init__(self)
self.source_subdir = src_subdir
self.installable_subdir = inst_subdir
self.install_dir = install_dir
self.install_mode = install_mode
self.exclude = exclude
+ self.elide_directory = elide_directory
class Man(InterpreterObject):
@@ -1390,7 +1391,7 @@ permitted_kwargs = {'add_global_arguments': {'language'},
'install_data': {'install_dir', 'install_mode', 'sources'},
'install_headers': {'install_dir', 'subdir'},
'install_man': {'install_dir'},
- 'install_subdir': {'exclude_files', 'exclude_directories', 'install_dir', 'install_mode'},
+ 'install_subdir': {'elide_directory', 'exclude_files', 'exclude_directories', 'install_dir', 'install_mode'},
'jar': jar_kwargs,
'project': {'version', 'meson_version', 'default_options', 'license', 'subproject_dir'},
'run_target': {'command', 'depends'},
@@ -2674,6 +2675,12 @@ root and issuing %s.
install_dir = kwargs['install_dir']
if not isinstance(install_dir, str):
raise InvalidArguments('Keyword argument install_dir not a string.')
+ if 'elide_directory' in kwargs:
+ if not isinstance(kwargs['elide_directory'], bool):
+ raise InterpreterException('"elide_directory" keyword must be a boolean.')
+ elide_directory = kwargs['elide_directory']
+ else:
+ elide_directory = False
if 'exclude_files' in kwargs:
exclude = extract_as_list(kwargs, 'exclude_files')
for f in exclude:
@@ -2696,7 +2703,7 @@ root and issuing %s.
exclude_directories = set()
exclude = (exclude_files, exclude_directories)
install_mode = self._get_kwarg_install_mode(kwargs)
- idir = InstallDir(self.subdir, subdir, install_dir, install_mode, exclude)
+ idir = InstallDir(self.subdir, subdir, install_dir, install_mode, exclude, elide_directory)
self.build.install_dirs.append(idir)
return idir