aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-07-31 07:53:03 -0400
committerJussi Pakkanen <jpakkane@gmail.com>2017-07-31 18:47:09 -0400
commita572ebd2a19ff9501e3c03b0cec71f5a5aef5ceb (patch)
tree1a391342821a8e1e896731a5f8ff2f7dc43be39c
parent1826872fd25cf72ec65378891125a264e625da88 (diff)
downloadmeson-a572ebd2a19ff9501e3c03b0cec71f5a5aef5ceb.zip
meson-a572ebd2a19ff9501e3c03b0cec71f5a5aef5ceb.tar.gz
meson-a572ebd2a19ff9501e3c03b0cec71f5a5aef5ceb.tar.bz2
Convert man inputs to Files so you can install_man the output of configure_file. Closes #2135.
-rw-r--r--mesonbuild/backend/ninjabackend.py4
-rw-r--r--mesonbuild/interpreter.py12
-rw-r--r--test cases/common/10 man install/baz.1.in6
-rw-r--r--test cases/common/10 man install/installed_files.txt1
-rw-r--r--test cases/common/10 man install/meson.build8
5 files changed, 20 insertions, 11 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 5fc6d6b..f77d2b1 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -782,8 +782,8 @@ int dummy;
subdir = m.get_custom_install_dir()
if subdir is None:
subdir = os.path.join(manroot, 'man' + num)
- srcabs = os.path.join(self.environment.get_source_dir(), m.get_source_subdir(), f)
- dstabs = os.path.join(subdir, os.path.split(f)[1] + '.gz')
+ srcabs = f.absolute_path(self.environment.get_source_dir(), self.environment.get_build_dir())
+ dstabs = os.path.join(subdir, os.path.split(f.fname)[1] + '.gz')
i = [srcabs, dstabs]
d.man.append(i)
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 1858e8c..94fb649 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -465,13 +465,10 @@ class InstallDir(InterpreterObject):
class Man(InterpreterObject):
- def __init__(self, source_subdir, sources, kwargs):
+ def __init__(self, sources, kwargs):
InterpreterObject.__init__(self)
- self.source_subdir = source_subdir
self.sources = sources
self.validate_sources()
- if len(kwargs) > 1:
- raise InvalidArguments('Man function takes at most one keyword arguments.')
self.custom_install_dir = kwargs.get('install_dir', None)
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.')
@@ -491,9 +488,6 @@ class Man(InterpreterObject):
def get_sources(self):
return self.sources
- def get_source_subdir(self):
- return self.source_subdir
-
class GeneratedObjectsHolder(InterpreterObject):
def __init__(self, held_object):
super().__init__()
@@ -2354,9 +2348,9 @@ class Interpreter(InterpreterBase):
return h
@permittedKwargs(permitted_kwargs['install_man'])
- @stringArgs
def func_install_man(self, node, args, kwargs):
- m = Man(self.subdir, args, kwargs)
+ fargs = self.source_strings_to_files(args)
+ m = Man(fargs, kwargs)
self.build.man.append(m)
return m
diff --git a/test cases/common/10 man install/baz.1.in b/test cases/common/10 man install/baz.1.in
new file mode 100644
index 0000000..d0b79b4
--- /dev/null
+++ b/test cases/common/10 man install/baz.1.in
@@ -0,0 +1,6 @@
+This is a man page of baz.1 it was generated @TODAY@.
+
+You should not put generation timestamps in real world projects
+because they break reproducible builds. This manpage is written
+by professionals or under the supervision of professionals. Do
+not try this at home.
diff --git a/test cases/common/10 man install/installed_files.txt b/test cases/common/10 man install/installed_files.txt
index 7b19616..c13baa4 100644
--- a/test cases/common/10 man install/installed_files.txt
+++ b/test cases/common/10 man install/installed_files.txt
@@ -2,3 +2,4 @@ usr/share/man/man1/foo.1.gz
usr/share/man/man2/bar.2.gz
usr/share/man/man1/vanishing.1.gz
usr/share/man/man2/vanishing.2.gz
+usr/share/man/man1/baz.1.gz
diff --git a/test cases/common/10 man install/meson.build b/test cases/common/10 man install/meson.build
index 8436fa5..8262ffc 100644
--- a/test cases/common/10 man install/meson.build
+++ b/test cases/common/10 man install/meson.build
@@ -3,3 +3,11 @@ m1 = install_man('foo.1')
m2 = install_man('bar.2')
install_man('vanishing/vanishing.2')
subdir('vanishing')
+
+cdata = configuration_data()
+cdata.set('TODAY', '$this_day')
+b1 = configure_file(input : 'baz.1.in',
+ output : 'baz.1',
+ configuration : cdata)
+
+install_man(b1)