Skip to content

Commit

Permalink
docs: allow selecting a Sphinx theme
Browse files Browse the repository at this point in the history
Instead of having RTD as an almost mandatory theme, allow the
user to select other themes via DOCS_THEME environment var.

There's a catch, though: as the current theme override logic is
dependent of the RTD theme, we need to move the code which
adds the CSS overrides to be inside the RTD theme logic.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>
Link: https://lore.kernel.org/r/bd20adabfd428fd3cd0e69c2cf146aa354932936.1638870323.git.mchehab+huawei@kernel.org
Signed-off-by: Jonathan Corbet <[email protected]>
  • Loading branch information
mchehab authored and Jonathan Corbet committed Dec 10, 2021
1 parent b080e52 commit fca7216
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 22 deletions.
3 changes: 3 additions & 0 deletions Documentation/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ endif
SPHINXBUILD = sphinx-build
SPHINXOPTS =
SPHINXDIRS = .
DOCS_THEME =
_SPHINXDIRS = $(sort $(patsubst $(srctree)/Documentation/%/index.rst,%,$(wildcard $(srctree)/Documentation/*/index.rst)))
SPHINX_CONF = conf.py
PAPER =
Expand Down Expand Up @@ -154,4 +155,6 @@ dochelp:
@echo ' make SPHINX_CONF={conf-file} [target] use *additional* sphinx-build'
@echo ' configuration. This is e.g. useful to build with nit-picking config.'
@echo
@echo ' make DOCS_THEME={sphinx-theme} selects a different Sphinx theme.'
@echo
@echo ' Default location for the generated documents is Documentation/output'
52 changes: 30 additions & 22 deletions Documentation/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,16 +208,36 @@
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.

# The Read the Docs theme is available from
# - https://github.com/snide/sphinx_rtd_theme
# - https://pypi.python.org/pypi/sphinx_rtd_theme
# - python-sphinx-rtd-theme package (on Debian)
try:
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
except ImportError:
sys.stderr.write('Warning: The Sphinx \'sphinx_rtd_theme\' HTML theme was not found. Make sure you have the theme installed to produce pretty HTML output. Falling back to the default theme.\n')
# Default theme
html_theme = 'sphinx_rtd_theme'

if "DOCS_THEME" in os.environ:
html_theme = os.environ["DOCS_THEME"]

if html_theme == 'sphinx_rtd_theme':
# Read the Docs theme
try:
import sphinx_rtd_theme
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_css_files = [
'theme_overrides.css',
]
except ImportError:
html_theme = 'classic'

if major <= 1 and minor < 8:
html_context = {
'css_files': [],
}

for l in html_css_files:
html_context['css_files'].append('_static/' + l)

sys.stderr.write("Using %s theme\n" % html_theme)

# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
Expand Down Expand Up @@ -246,20 +266,8 @@
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".

html_static_path = ['sphinx-static']

html_css_files = [
'theme_overrides.css',
]

if major <= 1 and minor < 8:
html_context = {
'css_files': [
'_static/theme_overrides.css',
],
}

# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
Expand Down
8 changes: 8 additions & 0 deletions Documentation/doc-guide/sphinx.rst
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,14 @@ To pass extra options to Sphinx, you can use the ``SPHINXOPTS`` make
variable. For example, use ``make SPHINXOPTS=-v htmldocs`` to get more verbose
output.

By default, the build will try to use the Read the Docs sphinx theme:

https://github.com/readthedocs/sphinx_rtd_theme

If the theme is not available, it will fall-back to the classic one.

The Sphinx theme can be overriden by using the ``DOCS_THEME`` make variable.

To remove the generated documentation, run ``make cleandocs``.

Writing Documentation
Expand Down

0 comments on commit fca7216

Please sign in to comment.