You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
# 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",
0 commit comments