Skip to content

Commit 3cd460e

Browse files
committed
Fix ABLD-471 with a single gazelle:resolve_regexp directive
### What does this PR do? Replace the 39 individual `gazelle:resolve` lines in `deps/go.MODULE.bazel` with one `gazelle:resolve_regexp` directive that covers every current and future datadog-agent submodule import from external Go modules. ### Motivation [ABLD-471](https://datadoghq.atlassian.net/browse/ABLD-471): external modules that import a `datadog-agent` submodule end up depending on two copies of the same Go package: - our in-tree `//<path>` target, - a `go_deps`-generated external repo. The Go linker rightfully rejects the duplicate. This happens because `go_deps.gazelle_default_attributes` directives run inside each external module's own, **separate Gazelle invocation**, which never sees our root `BUILD.bazel`'s `prefix = "github.com/DataDog/datadog-agent"`: that prefix only scopes our own `//:gazelle` invocation. Each occurrence had its own `gazelle:resolve` line redirecting the import to the in-tree target, growing by one entry every time a new external importer surfaced. Every entry intrinsically follows the same shape, though: the target name is always the last path segment, so Bazel's `//x/y/z` == `//x/y/z:z` shorthand lets one regex cover every case, present and future, without a dedicated line per package. This is exactly the repetition bazel-contrib/bazel-gazelle#817 introduced `resolve_regexp` to avoid. ### Describe how you validated your changes A full `bazel build //...` passes with no `datadog-agent`-related or Gazelle resolution failures, matching the 39 explicit entries this replaces. ### Additional Notes `gazelle:resolve_regexp` parses its label template as a `label.Label` before substituting capture groups, so the template must already contain a literal `//`. bazel-contrib/bazel-gazelle#1965, fixed by #1969, is a related but distinct `label.Parse` failure in that same code path.
1 parent 0947c21 commit 3cd460e

1 file changed

Lines changed: 2 additions & 47 deletions

File tree

deps/go.MODULE.bazel

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -26,53 +26,8 @@ go_deps.gazelle_default_attributes(
2626
# We don't want to generate code from protos from dependencies, as this most often fails
2727
# and is different behavior from the default with go tooling
2828
"gazelle:proto disable",
29-
# ABLD-471: third-party modules that import datadog-agent submodules would
30-
# otherwise generate `@com_github_datadog_datadog_agent_*` labels (because
31-
# bazelify_go_work materializes our local go.work modules as external repos),
32-
# while the same Go package is also reachable in-tree at `//<path>`. The linker
33-
# then sees two copies of the package. Redirect every such import to the in-tree
34-
# label so both build contexts agree. The list grows as new third-party imports
35-
# surface — long-term fix is retiring bazelify_go_work or unifying label spaces.
36-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/proto/pbgo/trace @@//pkg/proto/pbgo/trace:trace",
37-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/trace/traceutil/normalize @@//pkg/trace/traceutil/normalize:normalize",
38-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/metrics/event @@//pkg/metrics/event:event",
39-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/metrics/servicecheck @@//pkg/metrics/servicecheck:servicecheck",
40-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes/source @@//pkg/opentelemetry-mapping-go/otlp/attributes/source:source",
41-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/serializer/marshaler @@//pkg/serializer/marshaler:marshaler",
42-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/serializer/types @@//pkg/serializer/types:types",
43-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/util/hostname/validate @@//pkg/util/hostname/validate:validate",
44-
"gazelle:resolve go github.com/DataDog/datadog-agent/comp/core/config @@//comp/core/config:config",
45-
"gazelle:resolve go github.com/DataDog/datadog-agent/comp/core/log/def @@//comp/core/log/def:def",
46-
"gazelle:resolve go github.com/DataDog/datadog-agent/comp/core/tagger/types @@//comp/core/tagger/types:types",
47-
"gazelle:resolve go github.com/DataDog/datadog-agent/comp/forwarder/defaultforwarder @@//comp/forwarder/defaultforwarder:defaultforwarder",
48-
"gazelle:resolve go github.com/DataDog/datadog-agent/comp/logs/agent/config @@//comp/logs/agent/config:config",
49-
"gazelle:resolve go github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/metricsclient @@//comp/otelcol/otlp/components/metricsclient:metricsclient",
50-
"gazelle:resolve go github.com/DataDog/datadog-agent/comp/otelcol/otlp/testutil @@//comp/otelcol/otlp/testutil:testutil",
51-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/config/create @@//pkg/config/create:create",
52-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/config/model @@//pkg/config/model:model",
53-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/config/setup @@//pkg/config/setup:setup",
54-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/config/utils @@//pkg/config/utils:utils",
55-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/fleet/installer/telemetry @@//pkg/fleet/installer/telemetry:telemetry",
56-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/metrics @@//pkg/metrics:metrics",
57-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/obfuscate @@//pkg/obfuscate:obfuscate",
58-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata @@//pkg/opentelemetry-mapping-go/inframetadata:inframetadata",
59-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata/gohai @@//pkg/opentelemetry-mapping-go/inframetadata/gohai:gohai",
60-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata/payload @@//pkg/opentelemetry-mapping-go/inframetadata/payload:payload",
61-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes @@//pkg/opentelemetry-mapping-go/otlp/attributes:attributes",
62-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes/azure @@//pkg/opentelemetry-mapping-go/otlp/attributes/azure:azure",
63-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes/ec2 @@//pkg/opentelemetry-mapping-go/otlp/attributes/ec2:ec2",
64-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes/gcp @@//pkg/opentelemetry-mapping-go/otlp/attributes/gcp:gcp",
65-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/metrics @@//pkg/opentelemetry-mapping-go/otlp/metrics:metrics",
66-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/serializer @@//pkg/serializer:serializer",
67-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/tagset @@//pkg/tagset:tagset",
68-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/trace/config @@//pkg/trace/config:config",
69-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/trace/log @@//pkg/trace/log:log",
70-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/trace/otel/stats @@//pkg/trace/otel/stats:stats",
71-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/trace/stats @@//pkg/trace/stats:stats",
72-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/util/compression/impl-zlib @@//pkg/util/compression/impl-zlib:impl-zlib",
73-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/util/option @@//pkg/util/option:option",
74-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/remoteconfig/state @@//pkg/remoteconfig/state:state",
75-
"gazelle:resolve go github.com/DataDog/datadog-agent/pkg/network/driver @@//pkg/network/driver:driver",
29+
# Map datadog-agent imports to in-tree labels to avoid duplicate packages from go_deps-generated external repos:
30+
"gazelle:resolve_regexp go ^github[.]com/DataDog/datadog-agent/(.+)$ @@//$1",
7631
],
7732
)
7833
go_deps.gazelle_override(

0 commit comments

Comments
 (0)