Skip to content

Commit df4d4e2

Browse files
LittleHubahoe-jo
andauthored
Bump rules_score (#165)
* Add sphinx translator for lobster * Bump rules_score * Add examples to rules_score * Remove old broken tests The tests will be recreated in the future, based on the updated rules implementation. * fix safety analysis * Fix formatting * Adjust test target in CI workflow * Drop unused lobster repo rules * fix tracing bugs * Bump tests to new trlc and lobster dependencies --------- Co-authored-by: Jochen Hoenle <173445474+hoe-jo@users.noreply.github.com>
1 parent 80c3a0a commit df4d4e2

108 files changed

Lines changed: 4717 additions & 3790 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/tests.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,4 @@ jobs:
3737
bazel test //coverage/tests:all
3838
- name: Run rules_score tests
3939
run: |
40-
cd bazel/rules/rules_score/test
41-
bazel test //...
40+
bazel test //bazel/rules/rules_score/...

MODULE.bazel

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,26 @@ register_toolchains(
215215
###############################################################################
216216
bazel_dep(name = "score_docs_as_code", version = "3.0.1", dev_dependency = True)
217217

218+
###############################################################################
219+
# Setup Googletest
220+
###############################################################################
221+
bazel_dep(name = "googletest", version = "1.17.0.bcr.2", dev_dependency = True)
222+
223+
###############################################################################
224+
# Blueprint Maven
225+
###############################################################################
226+
bazel_dep(name = "rules_jvm_external", version = "6.10")
227+
228+
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
229+
maven.install(
230+
name = "blueprint_maven_dependencies",
231+
artifacts = [
232+
"net.sourceforge.plantuml:plantuml:1.2025.9",
233+
],
234+
repositories = ["https://repo1.maven.org/maven2"],
235+
)
236+
use_repo(maven, "blueprint_maven_dependencies")
237+
218238
###############################################################################
219239
# Dependencies for Manual Analysis
220240
###############################################################################

bazel/rules/rules_score/BUILD

Lines changed: 109 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ load(
1818
"sphinx_module",
1919
)
2020
load("//bazel/rules/rules_score:sphinx_toolchain.bzl", "sphinx_toolchain")
21+
load("//lobster_bazel:lobster_bazel.bzl", "lobster_linker")
2122

2223
exports_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

3131
compile_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

6466
py_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
7276
py_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+
100159
toolchain(
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

Comments
 (0)