aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-04-04 20:57:17 +0300
committerGitHub <noreply@github.com>2017-04-04 20:57:17 +0300
commit14579ed9c512cf260ce50b303deca4b7356b92ce (patch)
tree4b04198f3d3884309e92561458dc4597f2cc066e
parent99649e66908693c58fa0c015dbcce19ad8f55b19 (diff)
parent734b1973e534df142c2d6487cfae2f247bfa7dca (diff)
downloadmeson-14579ed9c512cf260ce50b303deca4b7356b92ce.zip
meson-14579ed9c512cf260ce50b303deca4b7356b92ce.tar.gz
meson-14579ed9c512cf260ce50b303deca4b7356b92ce.tar.bz2
Merge pull request #1557 from pitti/fix/configure_data-files-input
Fix configure_data files input
-rw-r--r--authors.txt1
-rw-r--r--mesonbuild/interpreter.py8
-rw-r--r--mesonbuild/mesonlib.py12
-rw-r--r--test cases/common/16 configure file/meson.build5
4 files changed, 18 insertions, 8 deletions
diff --git a/authors.txt b/authors.txt
index 0c575e7..ab438b7 100644
--- a/authors.txt
+++ b/authors.txt
@@ -73,3 +73,4 @@ Joe Baldino
Peter Harris
Roger Boerdijk
melak47
+Philipp Ittershagen
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 0c6d980..af2c17d 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2290,7 +2290,11 @@ class Interpreter(InterpreterBase):
inputfile = inputfile[0]
if not isinstance(inputfile, (str, mesonlib.File)):
raise InterpreterException('Input must be a string or a file')
- ifile_abs = os.path.join(self.environment.source_dir, self.subdir, inputfile)
+ if isinstance(inputfile, str):
+ inputfile = os.path.join(self.subdir, inputfile)
+ else:
+ inputfile = inputfile.relative_name()
+ ifile_abs = os.path.join(self.environment.source_dir, inputfile)
elif 'command' in kwargs and '@INPUT@' in kwargs['command']:
raise InterpreterException('@INPUT@ used as command argument, but no input file specified.')
# Validate output
@@ -2309,7 +2313,7 @@ class Interpreter(InterpreterBase):
if inputfile is not None:
# Normalize the path of the conffile to avoid duplicates
# This is especially important to convert '/' to '\' on Windows
- conffile = os.path.normpath(os.path.join(self.subdir, inputfile))
+ conffile = os.path.normpath(inputfile)
if conffile not in self.build_def_files:
self.build_def_files.append(conffile)
os.makedirs(os.path.join(self.environment.build_dir, self.subdir), exist_ok=True)
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py
index 7a5b962..ba52219 100644
--- a/mesonbuild/mesonlib.py
+++ b/mesonbuild/mesonlib.py
@@ -125,14 +125,14 @@ class File:
assert(isinstance(self.fname, str))
def __str__(self):
- return os.path.join(self.subdir, self.fname)
+ return self.relative_name()
def __repr__(self):
ret = '<File: {0}'
if not self.is_built:
ret += ' (not built)'
ret += '>'
- return ret.format(os.path.join(self.subdir, self.fname))
+ return ret.format(self.relative_name())
@staticmethod
def from_source_file(source_root, subdir, fname):
@@ -150,15 +150,15 @@ class File:
def rel_to_builddir(self, build_to_src):
if self.is_built:
- return os.path.join(self.subdir, self.fname)
+ return self.relative_name()
else:
return os.path.join(build_to_src, self.subdir, self.fname)
def absolute_path(self, srcdir, builddir):
+ absdir = srcdir
if self.is_built:
- return os.path.join(builddir, self.subdir, self.fname)
- else:
- return os.path.join(srcdir, self.subdir, self.fname)
+ absdir = builddir
+ return os.path.join(absdir, self.relative_name())
def endswith(self, ending):
return self.fname.endswith(ending)
diff --git a/test cases/common/16 configure file/meson.build b/test cases/common/16 configure file/meson.build
index 8271ca3..8ffc28c 100644
--- a/test cases/common/16 configure file/meson.build
+++ b/test cases/common/16 configure file/meson.build
@@ -22,6 +22,11 @@ e = executable('inctest', 'prog.c',
cfile)
test('inctest', e)
+# Test if we can also pass files() as input
+configure_file(input : files('config.h.in'),
+ output : 'config2.h',
+ configuration : conf)
+
# Now generate a header file with an external script.
genprog = import('python3').find_python()
scriptfile = '@0@/generator.py'.format(meson.current_source_dir())