diff options
-rw-r--r-- | TOOLS/docutils-wrapper.py | 56 | ||||
-rw-r--r-- | meson.build | 14 |
2 files changed, 68 insertions, 2 deletions
diff --git a/TOOLS/docutils-wrapper.py b/TOOLS/docutils-wrapper.py new file mode 100644 index 0000000000..9d6304fc45 --- /dev/null +++ b/TOOLS/docutils-wrapper.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +""" +Wrapper around docutils rst2x commands, +converting their dependency files to a format understood by meson/ninja. +""" + +# +# This file is part of mpv. +# +# mpv is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# mpv is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with mpv. If not, see <http://www.gnu.org/licenses/>. +# + +import os +import subprocess +import sys + + +def convert_depfile(output, depfile): + with open(depfile, 'r') as f: + deps = f.readlines() + + with open(depfile, 'w') as f: + f.write(os.path.abspath(output)) + f.write(': \\\n') + for dep in deps: + dep = dep[:-1] + f.write('\t') + f.write(os.path.abspath(dep)) + f.write(' \\\n') + +argv = sys.argv[1:] + +depfile = None +output = argv[-1] + +for opt, optarg in zip(argv, argv[1:]): + if opt == '--record-dependencies': + depfile = optarg + +try: + subprocess.run(argv) + convert_depfile(output, depfile) +except: + os.remove(output) + os.remove(depfile) diff --git a/meson.build b/meson.build index 5c6439d2f7..6b8e264c25 100644 --- a/meson.build +++ b/meson.build @@ -554,6 +554,7 @@ tools_directory = join_paths(source_root, 'TOOLS') file2string = find_program(join_paths(tools_directory, 'file2string.py')) matroska = find_program(join_paths(tools_directory, 'matroska.py')) version_py = find_program(join_paths(source_root, 'version.py')) +docutils_wrapper = find_program(join_paths(tools_directory, 'docutils-wrapper.py')) subdir('generated') subdir(join_paths('generated', 'etc')) @@ -1556,7 +1557,12 @@ if features['manpage-build'] custom_target('manpages', input: manpage, output: 'mpv.1', - command: [rst2man, '--strip-elements-with-class=contents', '@INPUT@', '@OUTPUT@'], + command: [ + docutils_wrapper, rst2man, + '--record-dependencies', '@DEPFILE@', + '--strip-elements-with-class=contents', + '@INPUT@', '@OUTPUT@'], + depfile: 'mpv.1.dep', install: true, install_dir: join_paths(mandir, 'man1') ) @@ -1569,7 +1575,11 @@ if features['html-build'] custom_target('html-manpages', input: manpage, output: 'mpv.html', - command: [rst2html, '@INPUT@', '@OUTPUT@'], + command: [ + docutils_wrapper, rst2html, + '--record-dependencies', '@DEPFILE@', + '@INPUT@', '@OUTPUT@'], + depfile: 'mpv.html.dep', install: true, install_dir: join_paths(datadir, 'doc', 'mpv') ) |