aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/ninjabackend.py9
-rw-r--r--mesonbuild/build.py8
-rw-r--r--mesonbuild/interpreter.py5
3 files changed, 14 insertions, 8 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index ba249ed..408e4d4 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -878,11 +878,10 @@ int dummy;
subdir = de.install_dir
if not subdir:
subdir = os.path.join(self.environment.get_datadir(), self.interpreter.build.project_name)
- for f in de.sources:
- assert(isinstance(f, mesonlib.File))
- plain_f = os.path.basename(f.fname)
- dstabs = os.path.join(subdir, plain_f)
- i = [f.absolute_path(srcdir, builddir), dstabs, de.install_mode]
+ for src_file, dst_name in zip(de.sources, de.rename):
+ assert(isinstance(src_file, mesonlib.File))
+ dst_abs = os.path.join(subdir, dst_name)
+ i = [src_file.absolute_path(srcdir, builddir), dst_abs, de.install_mode]
d.data.append(i)
def generate_subdir_install(self, d):
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 5c9f346..515fd83 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -1894,13 +1894,19 @@ class ConfigurationData:
# A bit poorly named, but this represents plain data files to copy
# during install.
class Data:
- def __init__(self, sources, install_dir, install_mode=None):
+ def __init__(self, sources, install_dir, install_mode=None, rename=None):
self.sources = sources
self.install_dir = install_dir
self.install_mode = install_mode
self.sources = listify(self.sources)
for s in self.sources:
assert(isinstance(s, File))
+ if rename is None:
+ self.rename = [os.path.basename(f.fname) for f in self.sources]
+ else:
+ self.rename = stringlistify(rename)
+ if len(self.rename) != len(self.sources):
+ raise MesonException('Size of rename argument is different from number of sources')
class RunScript(dict):
def __init__(self, script, args):
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index cab8bf3..11e058c 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1500,7 +1500,7 @@ permitted_kwargs = {'add_global_arguments': {'language'},
'find_program': {'required', 'native'},
'generator': {'arguments', 'output', 'depfile', 'capture', 'preserve_path_from'},
'include_directories': {'is_system'},
- 'install_data': {'install_dir', 'install_mode', 'sources'},
+ 'install_data': {'install_dir', 'install_mode', 'rename', 'sources'},
'install_headers': {'install_dir', 'subdir'},
'install_man': {'install_dir'},
'install_subdir': {'exclude_files', 'exclude_directories', 'install_dir', 'install_mode', 'strip_directory'},
@@ -2826,7 +2826,8 @@ root and issuing %s.
if not isinstance(install_dir, (str, type(None))):
raise InvalidArguments('Keyword argument install_dir not a string.')
install_mode = self._get_kwarg_install_mode(kwargs)
- data = DataHolder(build.Data(sources, install_dir, install_mode))
+ rename = kwargs.get('rename', None)
+ data = DataHolder(build.Data(sources, install_dir, install_mode, rename))
self.build.data.append(data.held_object)
return data