tree 2b1d7a87ac5f110704a29404de346a64134c71aa
parent a7a809bf6fa3a60c1e78fbae72db58433b6dd6d2
author Ian (Hee) Cha <heec@google.com> 1790026782 +0000
committer GitHub <noreply@github.com> 1790026782 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJqsaQuCRC1aQ7uu5UhlAAAraAQABhlofv2Oegbu49Mp+YXZnZJ
 4F3S3w2tV+S0ZmHsGcXCPzbDfvRYJ+0fHvkRjuUyF8RzT0R2GjPqQJdvKi9WkpGz
 Hp3T4MKcEL1VuqsGntw8XCpZThdq0kcp6or6VvEsv98B5mBqRXx6++0+apPWKE2z
 nmTl0BBXuLWlRbffgfbXXlW6KNejpkkK+O2GBY6MMM9lqpBJvwgG/HylkZmlTbft
 WSB9EUJYh7DSDD2eWHOw8LKudusVaOUteArxw+teZ85NpP5jce6hnGDLhwMGjNNh
 RSZAw3R0HoIGlH/3y4b2/leUpO32Me9Uw4EOXMbJZhkMGfTMtdDBLaeXI83tXIpB
 1wjV3RvLBb5cDPxnSo3fBrVO5APTJQoborE/6BThgbrXBu1N4v2eIhPe9xt2ArRP
 kAqCDJk1Mys3N8NAY8W12EZ1lJ33v70B5V9WJ2UmLUrPyvLXuE7bS6KnZyPil1eC
 BrQLjXzaHrefhu9iDYXVpDVBXuw4y16EpNO4bGmQ4ebA/0tuWqNXKv42v9ppwuaR
 2IU2zvwwUJpdUx34cKdahNsdHK+vr3H69KhVDFVv1L1z4MU/WolswYXLk7Km7vtt
 baYBnrQruRYT7sa8m2oGOP3QU5R9iDCu6jyqB0T8VdmlNo6LYc7egzqxRSuTIjky
 8d9JOl6b2B5tQwgvpp08
 =XFCb
 -----END PGP SIGNATURE-----
 

[9.3.0] Exclude the source file from C++ include scanning results (https://gi… (#31248)

…thub.com/bazelbuild/bazel/pull/30432)

### Description

Excludes the compile action's source file from the results of C++
include scanning.

### Motivation

The include scanner adds all files it scans, including the compile
action's own source file, to the set of found includes, and
`CppIncludeScanningContextImpl#collect` replaces tree file artifacts in
this set with their parent tree artifact. For an action that compiles a
tree file artifact source (created by an action template), the spawn
thus contained both the source file and its entire parent tree artifact
as inputs, which Bazel's `MerkleTreeComputer` isn't set up (and meant
to) handle.

Since the source file is always a mandatory input of the action, it
doesn't need to be discovered and is now excluded from the include
scanning results.

### Build API Changes

No

### Checklist

- [x] I have added tests for the new use cases (if any).
- [ ] I have updated the documentation (if applicable).

### Release Notes

RELNOTES: None

Closes #30432.

PiperOrigin-RevId: 985313605
Change-Id: Id2b3fbf40a5c851947b8c05b79574cd01b76ce12

<!--
Thank you for contributing to Bazel!
Please read the contribution guidelines: https://bazel.build/contribute
-->

### Description
<!--
Please provide a brief summary of the changes in this PR.
-->

### Motivation
<!--
Why is this change important? Does it fix a specific bug or add a new
feature?
If this PR fixes an existing issue, please link it here (e.g. "Fixes
#1234").
-->

### Build API Changes
<!--
Does this PR affect the Build API? (e.g. Starlark API, providers,
command-line flags, native rules)
If yes, please answer the following:
1. Has this been discussed in a design doc or issue? (Please link it)
2. Is the change backward compatible?
3. If it's a breaking change, what is the migration plan?
-->

No

### Checklist

- [ ] I have added tests for the new use cases (if any).
- [ ] I have updated the documentation (if applicable).

### Release Notes

<!--
If this is a new feature, please add 'RELNOTES[NEW]: <description>'
here.
If this is a breaking change, please add 'RELNOTES[INC]: <reason>' here.
If this change should be mentioned in release notes, please add
'RELNOTES: <reason>' here.
-->

RELNOTES: None

Commit
https://github.com/bazelbuild/bazel/commit/15640dc3910c4e73ab7bf1ce58827677bddc796d

Co-authored-by: pzembrod <pzembrod@google.com>