mirror of
https://github.com/torvalds/linux.git
synced 2025-11-30 23:16:01 +07:00
docs: add tools/docs/gen-redirects.py
Add a new script and a new documentation 'make' target, htmldocs-redirects. This will generate HTML stub files in the HTML documentation output directory that redirect the browser to the new path. Suggested-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org> Suggested-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <20250905144608.577449-4-vegard.nossum@oracle.com>
This commit is contained in:
committed by
Jonathan Corbet
parent
4b6fba4643
commit
f2c2f64900
@@ -108,6 +108,9 @@ htmldocs:
|
||||
@$(srctree)/scripts/sphinx-pre-install --version-check
|
||||
@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
|
||||
|
||||
htmldocs-redirects: $(srctree)/Documentation/.renames.txt
|
||||
@tools/docs/gen-redirects.py --output $(BUILDDIR) < $<
|
||||
|
||||
# If Rust support is available and .config exists, add rustdoc generated contents.
|
||||
# If there are any, the errors from this make rustdoc will be displayed but
|
||||
# won't stop the execution of htmldocs
|
||||
@@ -175,6 +178,7 @@ cleandocs:
|
||||
dochelp:
|
||||
@echo ' Linux kernel internal documentation in different formats from ReST:'
|
||||
@echo ' htmldocs - HTML'
|
||||
@echo ' htmldocs-redirects - generate HTML redirects for moved pages'
|
||||
@echo ' texinfodocs - Texinfo'
|
||||
@echo ' infodocs - Info'
|
||||
@echo ' latexdocs - LaTeX'
|
||||
|
||||
5
Makefile
5
Makefile
@@ -1799,8 +1799,9 @@ $(help-board-dirs): help-%:
|
||||
|
||||
# Documentation targets
|
||||
# ---------------------------------------------------------------------------
|
||||
DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs \
|
||||
linkcheckdocs dochelp refcheckdocs texinfodocs infodocs
|
||||
DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs htmldocs-redirects \
|
||||
epubdocs cleandocs linkcheckdocs dochelp refcheckdocs \
|
||||
texinfodocs infodocs
|
||||
PHONY += $(DOC_TARGETS)
|
||||
$(DOC_TARGETS):
|
||||
$(Q)$(MAKE) $(build)=Documentation $@
|
||||
|
||||
54
tools/docs/gen-redirects.py
Executable file
54
tools/docs/gen-redirects.py
Executable file
@@ -0,0 +1,54 @@
|
||||
#! /usr/bin/env python3
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
#
|
||||
# Copyright © 2025, Oracle and/or its affiliates.
|
||||
# Author: Vegard Nossum <vegard.nossum@oracle.com>
|
||||
|
||||
"""Generate HTML redirects for renamed Documentation/**.rst files using
|
||||
the output of tools/docs/gen-renames.py.
|
||||
|
||||
Example:
|
||||
|
||||
tools/docs/gen-redirects.py --output Documentation/output/ < Documentation/.renames.txt
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
|
||||
parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument('-o', '--output', help='output directory')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
for line in sys.stdin:
|
||||
line = line.rstrip('\n')
|
||||
|
||||
old_name, new_name = line.split(' ', 2)
|
||||
|
||||
old_html_path = os.path.join(args.output, old_name + '.html')
|
||||
new_html_path = os.path.join(args.output, new_name + '.html')
|
||||
|
||||
if not os.path.exists(new_html_path):
|
||||
print(f"warning: target does not exist: {new_html_path} (redirect from {old_html_path})")
|
||||
continue
|
||||
|
||||
old_html_dir = os.path.dirname(old_html_path)
|
||||
if not os.path.exists(old_html_dir):
|
||||
os.makedirs(old_html_dir)
|
||||
|
||||
relpath = os.path.relpath(new_name, os.path.dirname(old_name)) + '.html'
|
||||
|
||||
with open(old_html_path, 'w') as f:
|
||||
print(f"""\
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>This page has moved</title>
|
||||
<meta http-equiv="refresh" content="0; url={relpath}">
|
||||
</head>
|
||||
<body>
|
||||
<p>This page has moved to <a href="{relpath}">{new_name}</a>.</p>
|
||||
</body>
|
||||
</html>""", file=f)
|
||||
Reference in New Issue
Block a user