Skip to content

Commit 049eaca

Browse files
authored
Fix bzl_mod symlink issues in doxygen rule (#171)
With the introduction of `bzl_mod` the doxygen rule was broken and needs to be fixed. This means splitting up the preprocessing of doxygen input files into smaller actions. - [x] Test with Bazel 7 in `orion-engine` - [x] Test with Bazel 6 in `starling-core`
1 parent 5c49d96 commit 049eaca

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

doxygen/doxygen.bzl

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,13 @@ def _swift_doxygen_impl(ctx):
2121
# this performs a CMake-like replacement of @VAR@ based on the vars dict
2222
config = configure_file_impl(ctx, vars, ctx.attr.name + "_Doxyfile")[0].files.to_list()[0]
2323

24+
# Create a processed config file for sed operations
25+
processed_config = ctx.actions.declare_file(ctx.attr.name + "_processed_Doxyfile")
26+
27+
# First action: Create the processed config file and apply sed replacements
2428
ctx.actions.run_shell(
25-
inputs = [config] + ctx.files.deps,
26-
outputs = [doxygen_out],
29+
inputs = [config],
30+
outputs = [processed_config],
2731
env = vars,
2832
command = """
2933
DOXYGEN_DOT_FOUND=NO
@@ -36,18 +40,26 @@ def _swift_doxygen_impl(ctx):
3640
3741
PRW=`pwd`
3842
39-
# backward compatibility with old CMake-style doxygen config files
40-
sed -i "s|@DOXYGEN_DOT_FOUND@|$DOXYGEN_DOT_FOUND|g" {config}
41-
sed -i "s|@DOXYGEN_DOT_PATH@|$DOXYGEN_DOT_PATH|g" {config}
42-
sed -i "s|@PLANTUML_JAR_PATH@|/usr/local/bin/plantuml.jar|g" {config}
43-
sed -i "s|@INPUT_DIR@|$PROJECT_SOURCE_DIR|g" {config}
44-
sed -i "s|@PROJECT_NAME@|$PROJECT_NAME|g" {config}
45-
sed -i "s|@STABLE_GIT_TAG@|$STABLE_GIT_TAG|g" {config}
46-
sed -i "s|@DOXYGEN_EXCLUDE@|$DOXYGEN_EXCLUDE|g" {config}
47-
sed -i "s|@PROJECT_SOURCE_DIR@|$PRW|g" {config}
43+
# Apply backward compatibility sed replacements
44+
sed "s|@DOXYGEN_DOT_FOUND@|$DOXYGEN_DOT_FOUND|g" {original_config} | \
45+
sed "s|@DOXYGEN_DOT_PATH@|$DOXYGEN_DOT_PATH|g" | \
46+
sed "s|@PLANTUML_JAR_PATH@|/usr/local/bin/plantuml.jar|g" | \
47+
sed "s|@INPUT_DIR@|$PROJECT_SOURCE_DIR|g" | \
48+
sed "s|@PROJECT_NAME@|$PROJECT_NAME|g" | \
49+
sed "s|@STABLE_GIT_TAG@|$STABLE_GIT_TAG|g" | \
50+
sed "s|@DOXYGEN_EXCLUDE@|$DOXYGEN_EXCLUDE|g" | \
51+
sed "s|@PROJECT_SOURCE_DIR@|$PRW|g" > {processed_config}
52+
""".format(original_config = config.path, processed_config = processed_config.path),
53+
)
4854

55+
# Second action: Run doxygen with the processed config
56+
ctx.actions.run_shell(
57+
inputs = [processed_config] + ctx.files.deps,
58+
outputs = [doxygen_out],
59+
env = vars,
60+
command = """
4961
PATH=$PATH doxygen {config}
50-
""".format(config = config.path),
62+
""".format(config = processed_config.path),
5163
)
5264

5365
return [DefaultInfo(files = depset([doxygen_out, config]))]

0 commit comments

Comments
 (0)