numam-dpdk/doc/api/generate_examples.py
Luca Boccassi fac23f030c doc: sort file lists in API generators
In order to build the documentation in a reproducible manner,
sort the lists of files used as input,
since walking the filesystem is not guaranteed to be done in a stable order.
When converting the scripts from shell to python, sorting the input was lost.

Fixes: 53bb9a073f ("doc: rewrite shell scripts in Python")
Cc: stable@dpdk.org

Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2022-11-22 15:25:39 +01:00

32 lines
1.1 KiB
Python
Executable File

#!/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 sorted(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 sorted(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)