Skip to content

Commit

Permalink
doc: rewrite shell scripts in Python
Browse files Browse the repository at this point in the history
Shell used in documentation generation could not run on Windows.
Rewrite scripts in Python.
New scripts use proper path separators and handle paths with spaces.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
  • Loading branch information
PlushBeaver authored and tmonjalo committed Jun 1, 2022
1 parent a9d84ea commit 53bb9a0
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 35 deletions.
19 changes: 19 additions & 0 deletions doc/api/generate_doxygen.py
@@ -0,0 +1,19 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: BSD-3-Clause
# (c) 2018 Luca Boccassi <bluca@debian.org>
# (c) 2022 Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>

import os, re, subprocess, sys

pattern = re.compile('^Preprocessing (.*)...$')
out_dir, *doxygen_command = sys.argv[1:]
out_file = os.path.join(os.path.dirname(out_dir), 'doxygen.out')
dep_file = f'{out_dir}.d'
with open(out_file, 'w') as out:
subprocess.run(doxygen_command, check=True, stdout=out)
with open(out_file) as out, open(dep_file, 'w') as dep:
print(f'{out_dir}:', end=' ', file=dep)
for line in out:
match = re.match(pattern, line)
if match:
print(match.group(1), end=' ', file=dep)
12 changes: 0 additions & 12 deletions doc/api/generate_doxygen.sh

This file was deleted.

31 changes: 31 additions & 0 deletions doc/api/generate_examples.py
@@ -0,0 +1,31 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: BSD-3-Clause
# (c) 2018 Luca Boccassi <bluca@debian.org>
# (c) 2022 Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>

import os, sys

examples_dir, api_examples = sys.argv[1:]

sources = []
with open(f'{api_examples}.d', 'w') as dep:
print(f'{api_examples}:', end=' ', file=dep)
for root, _, files in os.walk(examples_dir):
for name in files:
is_source = name.endswith('.c')
if is_source or name == 'meson.build':
path = os.path.join(root, name)
if is_source:
sources.append(path)
print(path , end=' ', file=dep)

with open(api_examples, 'w') as out:
print('''/**
@page examples DPDK Example Programs
''', file=out)
for path in sources:
# Produce consistent output with forward slashes on all systems.
# Every \ in paths within examples directory is a separator, not escape.
relpath = os.path.relpath(path, examples_dir).replace('\\', '/')
print(f'@example examples/{relpath}', file=out)
print('*/', file=out)
20 changes: 0 additions & 20 deletions doc/api/generate_examples.sh

This file was deleted.

6 changes: 3 additions & 3 deletions doc/api/meson.build
Expand Up @@ -11,8 +11,8 @@ endif
# is in a subdirectory that is created at build time and thus it cannot
# be an individual custom_target, we need to wrap the doxygen call in a
# script to run the CSS modification afterwards
generate_doxygen = find_program('generate_doxygen.sh')
generate_examples = find_program('generate_examples.sh')
generate_doxygen = py3 + files('generate_doxygen.py')
generate_examples = py3 + files('generate_examples.py')

htmldir = join_paths(get_option('datadir'), 'doc', 'dpdk')

Expand Down Expand Up @@ -51,7 +51,7 @@ doxy_build = custom_target('doxygen',
input: doxy_conf,
output: 'html',
depfile: 'html.d',
command: [generate_doxygen, '@INPUT@', '@OUTPUT@'],
command: [generate_doxygen, '@OUTPUT@', doxygen, '@INPUT@'],
install: get_option('enable_docs'),
install_dir: htmldir,
build_by_default: get_option('enable_docs'))
Expand Down

0 comments on commit 53bb9a0

Please sign in to comment.