@@ -18,14 +18,14 @@ load(
1818 "sphinx_module" ,
1919)
2020load ("//bazel/rules/rules_score:sphinx_toolchain.bzl" , "sphinx_toolchain" )
21+ load ("//lobster_bazel:lobster_bazel.bzl" , "lobster_linker" )
2122
2223exports_files ([
2324 "templates/conf.template.py" ,
24- "templates/seooc_index .template.rst" ,
25+ "templates/dependable_element_index .template.rst" ,
2526 "templates/unit.template.rst" ,
2627 "templates/component.template.rst" ,
27- "src/sphinx_wrapper.py" ,
28- "src/bazel_sphinx_needs.py" ,
28+ "templates/fmea.template.rst" ,
2929])
3030
3131compile_pip_requirements (
@@ -37,20 +37,22 @@ compile_pip_requirements(
3737 ],
3838)
3939
40- sphinx_module (
41- name = "rules_score_doc" ,
42- srcs = glob (
43- [
44- "docs/**/*.rst" ,
45- "docs/**/*.puml" ,
46- ],
47- allow_empty = True ,
48- ),
49- index = "docs/index.rst" ,
40+ # Arch-to-reqs-from-lobster tool: extracts requirements from component requirement .lobster files
41+ # and generates an architecture.lobster item representing the component's allocation
42+ py_binary (
43+ name = "arch_to_reqs_from_lobster" ,
44+ srcs = ["src/arch_to_reqs_from_lobster.py" ],
45+ main = "src/arch_to_reqs_from_lobster.py" ,
46+ visibility = ["//visibility:public" ],
47+ )
48+
49+ # Safety analysis tools (preprocess FTA PlantUML + extract lobster traceability items)
50+ py_binary (
51+ name = "safety_analysis_tools" ,
52+ srcs = ["src/safety_analysis_tools.py" ],
53+ imports = ["src" ],
54+ main = "src/safety_analysis_tools.py" ,
5055 visibility = ["//visibility:public" ],
51- deps = [
52- # "@score_process//:score_process_module",
53- ],
5456)
5557
5658# HTML merge tool
@@ -63,50 +65,117 @@ py_binary(
6365
6466py_library (
6567 name = "sphinx_module_ext" ,
66- srcs = ["src/bazel_sphinx_needs .py" ],
68+ srcs = ["src/sphinx_module_ext .py" ],
6769 imports = ["src" ],
68- visibility = ["//visibility:public" ],
70+ deps = [
71+ requirement ("sphinx" ),
72+ ],
6973)
7074
7175# Sphinx build binary with all required dependencies
7276py_binary (
73- name = "sphinx_build " ,
77+ name = "score_build " ,
7478 srcs = ["src/sphinx_wrapper.py" ],
79+ data = [
80+ "//tools/sphinx:plantuml" ,
81+ ],
82+ env = {
83+ "SOURCE_DIRECTORY" : "" ,
84+ "DATA" : "" ,
85+ "ACTION" : "check" ,
86+ },
7587 main = "src/sphinx_wrapper.py" ,
7688 visibility = ["//visibility:public" ],
7789 deps = [
7890 ":sphinx_module_ext" ,
79- "@pip_tooling//myst_parser" ,
80- "@pip_tooling//sphinx" ,
81- "@pip_tooling//sphinx_design" ,
82- "@pip_tooling//sphinx_needs" ,
83- "@pip_tooling//sphinx_rtd_theme" ,
84- "@pip_tooling//sphinxcontrib_plantuml" ,
91+ "//tools/sphinx/extensions/lobster" ,
92+ "@score_docs_as_code//src/extensions/score_metamodel" ,
93+ "@score_tooling//plantuml/sphinx/clickable_plantuml" ,
94+ "@trlc//tools/sphinx/extensions/trlc" ,
95+ requirement ("sphinx" ),
96+ requirement ("sphinx_rtd_theme" ),
97+ requirement ("sphinx_needs" ),
98+ requirement ("sphinx_design" ),
99+ requirement ("myst_parser" ),
100+ requirement ("readthedocs_sphinx_ext" ),
101+ requirement ("rst2pdf" ),
102+ requirement ("sphinxcontrib-umlet" ),
103+ requirement ("svglib" ),
104+ requirement ("sphinxcontrib-plantuml" ),
105+ "@rules_python//python/runfiles" ,
85106 ],
86107)
87108
88- sphinx_toolchain (
89- name = "default_toolchain" ,
90- conf_template = "@score_tooling//bazel/rules/rules_score:templates/conf.template.py" ,
91- html_merge_tool = ":sphinx_html_merge" ,
92- sphinx = ":sphinx_build" ,
109+ sphinx_module (
110+ name = "rules_score_doc" ,
111+ srcs = glob (
112+ [
113+ "docs/**/*.rst" ,
114+ "docs/**/*.puml" ,
115+ ],
116+ allow_empty = True ,
117+ ),
118+ index = "docs/index.rst" ,
119+ visibility = ["//visibility:public" ],
93120)
94121
95- toolchain_type (
96- name = "toolchain_type" ,
122+ # HTML merge tool
123+
124+ py_binary (
125+ name = "raw_build" ,
126+ srcs = ["src/sphinx_wrapper.py" ],
127+ env = {
128+ "SOURCE_DIRECTORY" : "" ,
129+ "DATA" : "" ,
130+ "ACTION" : "check" ,
131+ },
132+ main = "src/sphinx_wrapper.py" ,
97133 visibility = ["//visibility:public" ],
134+ deps = [
135+ "//tools/sphinx/extensions/lobster" ,
136+ "@score_docs_as_code//src/extensions/score_metamodel" ,
137+ "@score_tooling//plantuml/sphinx/clickable_plantuml" ,
138+ "@trlc//tools/sphinx/extensions/trlc" ,
139+ requirement ("sphinx" ),
140+ requirement ("sphinx_rtd_theme" ),
141+ requirement ("sphinx_needs" ),
142+ requirement ("sphinx_design" ),
143+ requirement ("myst_parser" ),
144+ requirement ("readthedocs_sphinx_ext" ),
145+ requirement ("rst2pdf" ),
146+ requirement ("sphinxcontrib-umlet" ),
147+ requirement ("svglib" ),
148+ requirement ("sphinxcontrib-plantuml" ),
149+ ],
98150)
99151
152+ sphinx_toolchain (
153+ name = "default_toolchain" ,
154+ sphinx = ":score_build" ,
155+ )
156+
157+ toolchain_type (name = "toolchain_type" )
158+
100159toolchain (
101160 name = "sphinx_default_toolchain" ,
102- exec_compatible_with = [
103- "@platforms//os:linux" ,
104- "@platforms//cpu:x86_64" ,
105- ],
106- target_compatible_with = [
107- "@platforms//os:linux" ,
108- "@platforms//cpu:x86_64" ,
109- ],
110161 toolchain = ":default_toolchain" ,
111162 toolchain_type = ":toolchain_type" ,
112163)
164+
165+ # ---------------------------------------------------------------------------
166+ # Lobster traceability – rules_score Bazel implementation
167+ # ---------------------------------------------------------------------------
168+
169+ filegroup (
170+ name = "bzl_srcs" ,
171+ srcs = glob (["*.bzl" ]),
172+ )
173+
174+ lobster_linker (
175+ name = "rules_score_impl" ,
176+ srcs = [
177+ ":bzl_srcs" ,
178+ "//bazel/rules/rules_score/private:bzl_srcs" ,
179+ ],
180+ visibility = ["//docs/processes:__pkg__" ],
181+ )
0 commit comments