Can install data files from subdirectories.

pull/18/head
Jussi Pakkanen 10 years ago
parent d767bcf86d
commit a500c6cfa8
  1. 14
      interpreter.py
  2. 4
      ninjabackend.py
  3. 1
      test cases/common/12 data/installed_files.txt
  4. 1
      test cases/common/12 data/meson.build
  5. 1
      test cases/common/12 data/vanishing/meson.build
  6. 1
      test cases/common/12 data/vanishing/vanishing.dat

@ -301,9 +301,10 @@ class Headers(InterpreterObject):
return self.custom_install_dir
class Data(InterpreterObject):
def __init__(self, subdir, sources, kwargs):
def __init__(self, source_subdir, subdir, sources, kwargs):
InterpreterObject.__init__(self)
self.subdir = subdir
self.source_subdir = source_subdir
self.install_subdir = subdir
self.sources = sources
kwsource = kwargs.get('sources', [])
if not isinstance(kwsource, list):
@ -313,8 +314,11 @@ class Data(InterpreterObject):
if self.custom_install_dir is not None and not isinstance(self.custom_install_dir, str):
raise InterpreterException('Custom_install_dir must be a string.')
def get_subdir(self):
return self.subdir
def get_install_subdir(self):
return self.install_subdir
def get_source_subdir(self):
return self.source_subdir
def get_sources(self):
return self.sources
@ -1210,7 +1214,7 @@ class Interpreter():
for a in args:
if not isinstance(a, str):
raise InvalidArguments('Argument %s is not a string.' % str(a))
data = Data(args[0], args[1:], kwargs)
data = Data(self.subdir, args[0], args[1:], kwargs)
self.build.data.append(data)
return data

@ -459,9 +459,9 @@ class NinjaBackend(backends.Backend):
for de in data:
subdir = de.get_custom_install_dir()
if subdir is None:
subdir = os.path.join(dataroot, de.get_subdir())
subdir = os.path.join(dataroot, de.get_install_subdir())
for f in de.get_sources():
srcabs = os.path.join(self.environment.get_source_dir(), f)
srcabs = os.path.join(self.environment.get_source_dir(), de.get_source_subdir(), f)
dstabs = os.path.join(subdir, f)
i = [srcabs, dstabs]
d.data.append(i)

@ -1 +1,2 @@
share/progname/datafile.dat
share/progname/vanishing.dat

@ -1,2 +1,3 @@
project('data install test', 'c')
install_data('progname', sources : 'datafile.dat')
subdir('vanishing')

@ -0,0 +1 @@
install_data('progname', sources : 'vanishing.dat')

@ -0,0 +1 @@
This is a data file to be installed in a subdirectory.
Loading…
Cancel
Save