Convert man inputs to Files so you can install_man the output of configure_file. Closes #2135.

pull/2146/head
Jussi Pakkanen 7 years ago
parent 1826872fd2
commit a572ebd2a1
  1. 4
      mesonbuild/backend/ninjabackend.py
  2. 12
      mesonbuild/interpreter.py
  3. 6
      test cases/common/10 man install/baz.1.in
  4. 1
      test cases/common/10 man install/installed_files.txt
  5. 8
      test cases/common/10 man install/meson.build

@ -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)

@ -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

@ -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.

@ -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

@ -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)

Loading…
Cancel
Save