Skip to content

fix: load CcSharedLibraryInfo from rules_cc for Bazel 9#1493

Merged
novas0x2a merged 2 commits intobazel-contrib:mainfrom
rdesgroppes:fix-CcSharedLibraryInfo-for-bazel9
Mar 19, 2026
Merged

fix: load CcSharedLibraryInfo from rules_cc for Bazel 9#1493
novas0x2a merged 2 commits intobazel-contrib:mainfrom
rdesgroppes:fix-CcSharedLibraryInfo-for-bazel9

Conversation

@rdesgroppes
Copy link
Copy Markdown
Contributor

@rdesgroppes rdesgroppes commented Mar 18, 2026

This is to make rules_foreign_cc consumable with Bazel 9 where cc_external_rule_impl currently fails on:

Error in fail: CcSharedLibraryInfo is only available in Bazel 7 or greater

The guard was relying on bazel_features.globals.CcSharedLibraryInfo to detect provider availability.
In Bazel 9, bazel_features computes this via native.legacy_globals.CcSharedLibraryInfo, which is None because the symbol was removed from the native namespace.

CcSharedLibraryInfo has been available in @rules_cc since 0.1.0, which predates the minimum rules_cc version required by rules_foreign_cc.
Loading it directly from @rules_cc//cc/common:cc_shared_library_info.bzl makes the guard unnecessary and should satisfy all Bazel versions.

@novas0x2a
Copy link
Copy Markdown
Collaborator

Seems fine, except buildifier is angry with you

This is to make `rules_foreign_cc` consumable with Bazel 9 where
`cc_external_rule_impl` currently fails on:
```
Error in fail: CcSharedLibraryInfo is only available in Bazel 7 or greater
```

The guard was relying on `bazel_features.globals.CcSharedLibraryInfo` to
detect provider availability.
In Bazel 9, `bazel_features` computes this via
`native.legacy_globals.CcSharedLibraryInfo`, which is `None` because
the symbol was removed from the `native` namespace.

`CcSharedLibraryInfo` has been available in `@rules_cc` since 0.1.0,
which predates the minimum `rules_cc` version required by
`rules_foreign_cc`.
Loading it directly from
`@rules_cc//cc/common:cc_shared_library_info.bzl` makes the guard
unnecessary and should satisfy all Bazel versions.
@rdesgroppes rdesgroppes force-pushed the fix-CcSharedLibraryInfo-for-bazel9 branch from ba952e9 to be20551 Compare March 19, 2026 07:29
@rdesgroppes
Copy link
Copy Markdown
Contributor Author

Seems fine, except buildifier is angry with you

@novas0x2a Sorry - I just removed the (now) unused load statement. Would you mind having a second look, please?

@novas0x2a novas0x2a enabled auto-merge (squash) March 19, 2026 07:37
@novas0x2a novas0x2a merged commit 031862e into bazel-contrib:main Mar 19, 2026
2 checks passed
@rdesgroppes rdesgroppes deleted the fix-CcSharedLibraryInfo-for-bazel9 branch March 19, 2026 07:43
novas0x2a pushed a commit that referenced this pull request Mar 19, 2026
This is a first step toward making `rules_foreign_cc` _buildable_ with
Bazel 9 (making it _consumable_ with Bazel 9 deserves a dedicated
[fix](#1493)).

Running `bazel build -k //...` on Bazel 9.0.1 produces a flood of errors
like:
```
  ERROR: .../rules_go+/go/private/rules/cgo.bzl:101:12: The CcInfo
  symbol has been removed, add the following to your BUILD/bzl file:
  load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
```

The root cause is [email protected], pulled in transitively via:
- `[email protected]`
  - `[email protected]`
    - `[email protected]`

That version references `CcInfo` and other `CC*` symbols as Bazel-native
globals, removed in Bazel 9. bazel-contrib/rules_go#4508 fixed this in
[email protected].

Bumping `bazel_skylib_gazelle_plugin` to 1.9.0 is sufficient: its direct
dependency on [email protected] overrides the [email protected] required by
[email protected], wiping out the entire error class.

Since `bazel_skylib_gazelle_plugin` is a **dev** dependency, this only
affects building the repo itself, not its consumers.

Note: `bazel_skylib` must be bumped as well according to CI failing on:
```
  ERROR: For repository 'bazel_skylib', the root module requires module
  version [email protected], but got [email protected] in the resolved
  dependency graph.
```
rdesgroppes added a commit to DataDog/datadog-agent that referenced this pull request Mar 19, 2026
Moving the unreleased tip of main allows to address Bazel 9 related
issues instead of patching locally:
- bazel-contrib/rules_foreign_cc#1493
- bazel-contrib/rules_foreign_cc#1492

Other notable commits since:
- bazel-contrib/rules_foreign_cc#1483
- bazel-contrib/rules_foreign_cc#1490
- bazel-contrib/rules_foreign_cc#1496

Patches 0002 (DY/LD_LIBRARY_PATH) and 0003 (-j on make command line) are
still carried locally as neither has landed upstream yet (but we're
working on it).
rdesgroppes added a commit to DataDog/datadog-agent that referenced this pull request Mar 21, 2026
Moving the unreleased tip of main allows to address Bazel 9 related
issues instead of patching locally:
- bazel-contrib/rules_foreign_cc#1493
- bazel-contrib/rules_foreign_cc#1492

Other notable commits since:
- bazel-contrib/rules_foreign_cc#1483
- bazel-contrib/rules_foreign_cc#1490
- bazel-contrib/rules_foreign_cc#1496

Patches 0002 (DY/LD_LIBRARY_PATH) and 0003 (-j on make command line) are
still carried locally as neither has landed upstream yet (but we're
working on it).
gh-worker-dd-mergequeue-cf854d bot pushed a commit to DataDog/datadog-agent that referenced this pull request Mar 21, 2026
Depends on #48082.

### Motivation
Moving the unreleased tip of main allows to address Bazel 9 related issues instead of patching locally:
- bazel-contrib/rules_foreign_cc#1493
- bazel-contrib/rules_foreign_cc#1492 (`CcInfo` and other `Cc*` symbols)

Other notable commits since:
- bazel-contrib/rules_foreign_cc#1483
- bazel-contrib/rules_foreign_cc#1490
- bazel-contrib/rules_foreign_cc#1496

### Additional Notes
Patches 0002 (bazel-contrib/rules_foreign_cc#1452) and 0003 (bazel-contrib/rules_foreign_cc#1491) are still carried locally as neither has landed upstream yet (but we're working on it).

Co-authored-by: regis.desgroppes <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants