Skip to content

Commit 6ea6f30

Browse files
redsun82michaelnebel
authored andcommitted
Bazel: fix codeql_csharp_binary
A `publish` directory for a C# binary contains copies of some DLLs inside localized subdirectories (e.g. `ru`). We want to ignore those, as otherwise our packaging machinery now goes haywire, with the newer version of `rules_csharp`. In any case we never shipped those.
1 parent 91f9247 commit 6ea6f30

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

‎misc/bazel/csharp.bzl‎

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,30 @@ def codeql_xunit_test(name, **kwargs):
4747
**kwargs
4848
)
4949

50+
def _filter_published_files_impl(ctx):
51+
dir = ctx.attr.src[DefaultInfo].files_to_run.executable.dirname
52+
files = ctx.attr.src[DefaultInfo].files.to_list()
53+
54+
# filter out all unneeded localization directories, that contain
55+
# duplicate files that would break our packaging
56+
files = [
57+
f
58+
for f in files
59+
if f.dirname in (dir, dir + "/bin", dir + "\\bin")
60+
]
61+
return [
62+
DefaultInfo(
63+
files = depset(files),
64+
),
65+
]
66+
67+
_filter_published_files = rule(
68+
implementation = _filter_published_files_impl,
69+
attrs = {
70+
"src": attr.label(),
71+
},
72+
)
73+
5074
def codeql_csharp_binary(name, **kwargs):
5175
kwargs.setdefault("nullable", "enable")
5276
kwargs.setdefault("target_frameworks", [TARGET_FRAMEWORK])
@@ -63,6 +87,7 @@ def codeql_csharp_binary(name, **kwargs):
6387

6488
csharp_binary_target = "bin/" + name
6589
publish_binary_target = "publish/" + name
90+
filtered_target = "filtered/" + name
6691
csharp_binary(name = csharp_binary_target, srcs = srcs, resources = resources, visibility = visibility, **kwargs)
6792
publish_binary(
6893
name = publish_binary_target,
@@ -76,10 +101,14 @@ def codeql_csharp_binary(name, **kwargs):
76101
},
77102
),
78103
)
104+
_filter_published_files(
105+
name = filtered_target,
106+
src = publish_binary_target,
107+
)
79108

80109
codeql_pkg_files(
81110
name = name,
82-
exes = [publish_binary_target],
111+
exes = [filtered_target],
83112
prefix = "tools/{CODEQL_PLATFORM}",
84113
strip_prefix = strip_prefix.files_only(),
85114
visibility = visibility,

0 commit comments

Comments
 (0)