Skip to content

Commit 6ed584f

Browse files
gmarulljhedberg
authored andcommitted
doc: extensions: domain: fix inventory on incremental builds
Generated objects.inv would not contain e.g. "zephyr:board" entry on incremental builds, making it impossible to use Intersphinx on other projects when rebuilding the Zephyr docset. It can be verified by inspecting inventory like this: ```python from sphinx.util.inventory import InventoryFile InventoryFile.loads(open("objects.inv", "rb").read(), uri="") inv.data.keys() ``` Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
1 parent 8b032af commit 6ed584f

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

doc/_extensions/zephyr/domain/__init__.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1182,6 +1182,13 @@ class ZephyrDomain(Domain):
11821182
"has_code_sample_listing": {}, # docname -> bool
11831183
"board_catalog_docname": None, # docname of the one page containing the board catalog
11841184
"has_board": {}, # docname -> bool
1185+
# board catalog data (populated by load_board_catalog_into_domain)
1186+
"boards": {},
1187+
"shields": {},
1188+
"vendors": {},
1189+
"socs": {},
1190+
"archs": {},
1191+
"runners": {},
11851192
}
11861193

11871194
def clear_doc(self, docname: str) -> None:
@@ -1204,6 +1211,11 @@ def clear_doc(self, docname: str) -> None:
12041211
self.data["board_catalog_docname"] = None
12051212
self.data["has_board"].pop(docname, None)
12061213

1214+
# Clear board docnames for boards documented in this docname
1215+
for board_data in self.data.get("boards", {}).values():
1216+
if board_data.get("docname") == docname:
1217+
board_data.pop("docname", None)
1218+
12071219
def merge_domaindata(self, docnames: list[str], otherdata: dict) -> None:
12081220
self.data["code-samples"].update(otherdata["code-samples"])
12091221
self.data["code-samples-categories"].update(otherdata["code-samples-categories"])
@@ -1419,7 +1431,15 @@ def load_board_catalog_into_domain(app: Sphinx) -> None:
14191431
),
14201432
hw_features_vendor_filter=app.config.zephyr_hw_features_vendor_filter,
14211433
)
1422-
app.env.domaindata["zephyr"]["boards"] = board_catalog["boards"]
1434+
1435+
# Preserve existing docnames when reloading the catalog
1436+
existing_boards = app.env.domaindata.get("zephyr", {}).get("boards", {})
1437+
new_boards = board_catalog["boards"]
1438+
for board_name, board_data in new_boards.items():
1439+
if board_name in existing_boards and "docname" in existing_boards[board_name]:
1440+
board_data["docname"] = existing_boards[board_name]["docname"]
1441+
1442+
app.env.domaindata["zephyr"]["boards"] = new_boards
14231443
app.env.domaindata["zephyr"]["shields"] = board_catalog["shields"]
14241444
app.env.domaindata["zephyr"]["vendors"] = board_catalog["vendors"]
14251445
app.env.domaindata["zephyr"]["socs"] = board_catalog["socs"]

0 commit comments

Comments
 (0)