)]}'
{
  "commit": "1bca1bde7db06340559878a7d54b1f5698e7ddd6",
  "tree": "2d3512968b5c3950cd462cbab08b32b2ea3fa60b",
  "parents": [
    "88acef49ee2a6c401b9f96859a2ed7501cf110d3"
  ],
  "author": {
    "name": "messa",
    "email": "messa@google.com",
    "time": "Fri May 14 00:48:19 2021 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri May 14 00:49:39 2021 -0700"
  },
  "message": "Add `required_providers` attribute to Starlark defined aspects.\n\n`required_providers` attribute allows the aspect to limit its propagation to only the targets whose rules advertise the required providers. It accepts a list of either providers or providers lists. To make some rule targets visible to an aspect, the rule must advertise all providers from at least one of the lists specified in the aspect `required_providers`.\n\nThis CL also adds incompatible flag `incompatible_top_level_aspects_require_providers` which when set allows the top level aspects to only run on top level targets that advertise its required providers. It is needed to avoid breaking existing usages on command line aspects on targets not advertising its required providers.\n\nPiperOrigin-RevId: 373738497\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a905d015e1ea0d7ad40501e4a5b2c2b58a13f26b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java",
      "new_id": "29c4febdb671eaa29375103a2d5f477ff6dc46a1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java"
    },
    {
      "type": "modify",
      "old_id": "9c50c80d7631a755a9dd77341c56bf4f1cf4bc65",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java",
      "new_id": "30ec83cb11c54463805682d5a7e53cf917713854",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java"
    },
    {
      "type": "modify",
      "old_id": "3991894e154c05a2ef31bcffedba608aba26a837",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkDefinedAspect.java",
      "new_id": "959d6ec967bf552dedea62f984cc09f617aa47d1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/StarlarkDefinedAspect.java"
    },
    {
      "type": "modify",
      "old_id": "d42e7fff2117a464dcab3f852f6c5252371ea2b5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java",
      "new_id": "d3b47f4cd0591c0bc335835cd092b505dab38627",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/semantics/BuildLanguageOptions.java"
    },
    {
      "type": "modify",
      "old_id": "44ab8a796da506dbdc4f88b865d9d5790aa2cc02",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java",
      "new_id": "aead10e50768501298ec18a4095d7f0d80397ee9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java"
    },
    {
      "type": "modify",
      "old_id": "b268a76782b5dc8c68d715903ebe28d6c4ce456f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java",
      "new_id": "2a82a6ee45632be9e7eeed716789db3ec17addde",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/StarlarkRuleFunctionsApi.java"
    },
    {
      "type": "modify",
      "old_id": "daad2b721f949940af94997259d9afa742d58569",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeStarlarkRuleFunctionsApi.java",
      "new_id": "9b163e2455da4e8beb5de4fe4e49fa2665578de5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeStarlarkRuleFunctionsApi.java"
    },
    {
      "type": "modify",
      "old_id": "2711dfc1c8b10246a618e6cce7b3f9b3ce003952",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java",
      "new_id": "741da4564579d3c55f224689db28b7599ea7ce96",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java"
    },
    {
      "type": "modify",
      "old_id": "92800aebec496a161987771035bed66727f0082b",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java",
      "new_id": "326e56d1ce30dd53d734c055d9c58a3306ce9a1f",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java"
    },
    {
      "type": "modify",
      "old_id": "826c37d50e9d202a063615fe2ae46d0193c36e26",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleClassFunctionsTest.java",
      "new_id": "b43b362558b2f83094556d57f427da47bdc38f72",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleClassFunctionsTest.java"
    },
    {
      "type": "modify",
      "old_id": "0d960f7b94c9bfb86a002e041d10d2b2498c0ee1",
      "old_mode": 33261,
      "old_path": "src/test/shell/integration/aspect_test.sh",
      "new_id": "63f0c978e88165b014f525a9b22e2bcc565218d7",
      "new_mode": 33261,
      "new_path": "src/test/shell/integration/aspect_test.sh"
    }
  ]
}
