Newer
Older
# BeagleBoard.org documentation build configuration file.
#
# References:
# https://github.com/zephyrproject-rtos/zephyr/blob/main/doc/conf.py
# https://www.sphinx-doc.org/en/master/usage/configuration.html
import os
import sys
import re
from sphinx.ext.imgconverter import ImagemagickConverter
ImagemagickConverter.conversion_rules.append(('image/webp', 'image/png'))
sys.path.append(str(Path(".").resolve()))
rst_epilog =""
# Add latest images to rst_epilog
rst_epilog_path = "_static/epilog/"
for (dirpath, dirnames, filenames) in os.walk(rst_epilog_path):
for filename in filenames:
with open(dirpath + filename) as f:
rst_epilog += f.read()
# Board OSHWA certification information
oshw_details = []
for (dirpath, dirnames, filenames) in os.walk(oshw_logos_path):
for filename in filenames:
if filename.endswith('.svg'):
oshw_logo_name = filename.split(".")[0]
board, path, oshw_id = oshw_logo_name.split('_')
oshw_details.append([board, path, oshw_id])
# Unique boards path information
boards_path = []
for board, path, oshw_id in oshw_details:
for (dirpath, dirnames, filenames) in os.walk("boards"):
if '/'+path+'/' in dirpath+'/':
if path+'/' not in dirpath:
sys.path.append(os.path.abspath("./_ext"))
"sphinxcontrib.images",
"sphinx.ext.imgconverter",
"sphinx.ext.graphviz",
"sphinx.ext.autodoc",
"sphinx.ext.autosummary",
#graphviz_output_format = 'svg'
breathe_projects = {"librobotcontrol": "projects/librobotcontrol/docs/xml"}
breathe_default_project = "librobotcontrol"
"containmentFolder": "./projects/librobotcontrol",
"rootFileName": "index.rst",
"rootFileTitle": "Robot Control Library",
"createTreeView": True,
"exhaleExecutesDoxygen": False,
"doxygenStripFromPath": ".",
"verboseBuild": False,
}
primary_domain = 'cpp'
highlight_language = 'cpp'
# Update (HTML) supported_image_types selection priority order
from sphinx.builders.html import StandaloneHTMLBuilder
StandaloneHTMLBuilder.supported_image_types = ['image/webp', 'image/jpg',
'image/jpeg', 'image/svg+xml', 'image/png', 'image/gif']
# Update (PDF) supported_image_types selection priority order
from sphinx.builders.latex import LaTeXBuilder
LaTeXBuilder.supported_image_types = ['application/pdf', 'image/jpg', 'image/jpeg', 'image/png']
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'env', ".venv"]
html_logo = "_static/images/logo.svg"
html_favicon = "_static/images/boris.svg"
html_sourcelink_suffix = ""
html_last_updated_fmt = ""
html_theme_path = [pydata_sphinx_theme.Path()]
html_baseurl = "docs.beagleboard.io"
"external_links": [
{
"url": "https://www.beagleboard.org/about",
"name": "About",
},
{
"url": "https://www.beagleboard.org/donate",
"name": "Donate",
},
{
"url": "https://gsoc.beagleboard.org/",
"name": "GSoC",
},
{
"url": "https://forum.beagleboard.org/c/faq",
"name": "FAQ",
},
],
"show_prev_next": True,
"icon_links": [
{
"name": "OpenBeagle",
"url": "https://openbeagle.org/",
"icon": "fa-brands fa-gitlab",
"attributes": {"target": "_blank"},
},
{
"name": "Docs",
"url": "https://docs.beagleboard.org/",
"icon": "fa-solid fa-book",
"attributes": {"target": "_blank"},
},
{
"name": "Discord",
"icon": "fa-brands fa-discord",
"attributes": {"target": "_blank"},
},
{
"name": "Forum",
"url": "https://forum.beagleboard.org/",
"icon": "fa-brands fa-discourse",
"attributes": {"target": "_blank"},
},
{
"name": "BeagleBoard.org",
"url": "https://www.beagleboard.org",
"icon": "_static/images/boris.svg",
"type": "local",
"attributes": {"target": "_blank"},
}
],
"use_edit_page_button": True,
"show_toc_level": 1,
"navbar_align": "right",
"show_nav_level": 1,
"announcement": "Welcome to new site for BeagleBoard.org docs!",
# "show_version_warning_banner": True,
"navbar_center": ["navbar-nav"],
"navbar_start": ["navbar-logo"],
"navbar_end": ["theme-switcher", "navbar-icon-links"],
# "navbar_persistent": ["search-button"],
"footer_start": ["copyright"],
"footer_end": ["last-updated"],
# "content_footer_items": ["last-updated"],
"**": ["page-toc", "edit-this-page", "sourcelink","pdf","oshw"]
with open("VERSION") as f:
m = re.match(
(
r"^VERSION_MAJOR\s*=\s*(\d+)$\n"
+ r"^VERSION_MINOR\s*=\s*(\d+)$\n"
+ r"^PATCHLEVEL\s*=\s*(\d+)$\n"
+ r"^VERSION_TWEAK\s*=\s*\d+$\n"
+ r"^EXTRAVERSION\s*=\s*(.*)$"
),
f.read(),
re.MULTILINE,
)
if not m:
sys.stderr.write("Warning: Could not extract docs version\n")
version = "Unknown"
else:
major, minor, patch, extra = m.groups(1)
version = ".".join((major, minor, patch))
release_version = ".".join((major, minor))
if extra:
version += "-" + extra
release = version
# Variables here holds default settings
gitlab_user = "docs"
gitlab_version = "main"
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
with open("PAGES") as f:
m = re.match(
(
r"^PAGES_URL\s*=\s*(\S+)$\n"
+ r"^PAGES_SLUG\s*=\s*(\S+)$\n"
+ r"^GITLAB_USER\s*=\s*(\S+)$\n"
+ r"^PROJECT_BRANCH\s*=\s*(\S+)$\n"
+ r"^GITLAB_HOST\s*=\s*(\S+)$\n"
+ r"^PROJECT_REPO\s*=\s*(\S+)$\n"
),
f.read(),
re.MULTILINE,
)
if not m:
sys.stderr.write("Warning: Could not extract pages information\n")
else:
url, slug, user, branch, host, repo = m.groups(1)
slug = "latest" if slug == "main" else slug
pages_url = url
pages_slug = slug
gitlab_user = user
gitlab_version = branch
gitlab_url = host
gitlab_repo = repo
docs_url = "/".join((url, slug))
"gitlab_user": gitlab_user,
"gitlab_repo": gitlab_repo,
"gitlab_version": gitlab_version,
#"use_edit_page_button": True,
#"edit_page_url_template": "https://openbeagle.org/XXXX/{{ file_name }}",
"edit_page_url_template": "{{ my_vcs_site }}{{ file_name }}",
"edit_page_provider_name": "OpenBeagle",
"my_vcs_site": "https://openbeagle.org/docs/docs.beagleboard.io/-/edit/main/",
"oshw_details": oshw_details,
"boards_path": boards_path
latex_engine = "xelatex"
latex_logo = "_static/images/logo-latex.pdf"
latex_documents = []
latex_elements = {
"papersize": "a4paper",
"maketitle": open("_static/latex/title.tex").read(),
"preamble": open("_static/latex/preamble.tex").read(),
"sphinxsetup": ",".join(
(
"verbatimwithframe=false",
"VerbatimColor={HTML}{f0f2f4}",
"InnerLinkColor={HTML}{2980b9}",
"warningBgColor={HTML}{e9a499}",
"warningborder=0pt",
r"HeaderFamily=\rmfamily\bfseries",
)
),
}
for board_path in boards_path:
board_tex_name = board_path.split('/')[-1]
latex_documents.append((board_path+"/index", board_tex_name+".tex", "", author, "manual"))