)]}'
{
  "commit": "dd8317883cd9b329393a539be6b132ee3979687d",
  "tree": "7fe9f0284e1feca31a30954730571e86f413046b",
  "parents": [
    "3aec1bcfc34850966fa9508b8dd046ed4e945eb0"
  ],
  "author": {
    "name": "PikachuHy",
    "email": "pikachuhy@linux.alibaba.com",
    "time": "Fri Jun 14 03:59:43 2024 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri Jun 14 04:00:58 2024 -0700"
  },
  "message": "[1/5] support C++20 Modules, add module_interfaces attr\n\nI split the XXL PR https://github.com/bazelbuild/bazel/pull/19940 into several small patches.\nThis is the first patch of Support C++20 Modules, I add `module_interfaces` attr only\n\nexample\n\n-  foo.cppm\n```\n// foo.cppm\nexport module foo;\n// ...\n```\n- BUILD.bazel\n\n```\ncc_library(\n    name\u003d\"foo\",\n    copts\u003d[\"-std\u003dc++20\"],\n    module_interfaces\u003d[\"foo.cppm\"],\n    # features\u003d[\"cpp20_module\"]\n)\n\n```\n\nbuild failed with the following message\n\n```\n➜  bazel build :foo\nERROR: bazel_demo/BUILD.bazel:1:11: in cc_library rule //:foo:\nTraceback (most recent call last):\n        File \"/virtual_builtins_bzl/common/cc/cc_library.bzl\", line 40, column 42, in _cc_library_impl\n        File \"/virtual_builtins_bzl/common/cc/semantics.bzl\", line 123, column 13, in _check_can_module_interfaces\nError in fail: attribute module_interfaces: requires --experimental_cpp20_modules\nERROR: bazel_demo/BUILD.bazel:1:11: Analysis of target \u0027//:foo\u0027 failed\nERROR: Analysis of target \u0027//:foo\u0027 failed; build aborted\nINFO: Elapsed time: 0.106s, Critical Path: 0.00s\nINFO: 1 process: 1 internal.\nERROR: Build did NOT complete successfully\n```\nTo build with C++20 Modules, the flag `--experimental_cpp20_modules` must be added.\n\n```\n➜  bazel build :foo --experimental_cpp20_modules\nERROR: bazel_demo/BUILD.bazel:1:11: in cc_library rule //:foo:\nTraceback (most recent call last):\n        File \"/virtual_builtins_bzl/common/cc/cc_library.bzl\", line 41, column 34, in _cc_library_impl\n        File \"/virtual_builtins_bzl/common/cc/cc_helper.bzl\", line 1225, column 13, in _check_cpp20_modules\nError in fail: to use C++20 Modules, the feature cpp20_modules must be enabled\nERROR: bazel_demo/BUILD.bazel:1:11: Analysis of target \u0027//:foo\u0027 failed\nERROR: Analysis of target \u0027//:foo\u0027 failed; build aborted\nINFO: Elapsed time: 0.091s, Critical Path: 0.00s\nINFO: 1 process: 1 internal.\nERROR: Build did NOT complete successfully\n```\n\nTo build with C++20 Modules, the feature `cpp20_modules` must be enabled.\n\n```\nbazel build :foo --experimental_cpp20_modules --features cpp20_modules\n```\n\nthe flag `--experimental_cpp20_modules` works on global and\nthe feature `cpp20_modules` work on each target\n\nbut in this patch, do nothing with C++20 Module Interfaces.\n\nCloses #22425.\n\nPiperOrigin-RevId: 643303029\nChange-Id: I08d8a1186d2ddd1c632f1e768442e504b87a0691\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "74dbb15a36ea63750f34442cbbf93df0642f5b70",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java",
      "new_id": "97f3ece853611829d496424046ff3d1b2b809f16",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java"
    },
    {
      "type": "modify",
      "old_id": "95461fc4385e78c65ca7b6d301a7345ace9ca5b2",
      "old_mode": 33261,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java",
      "new_id": "1ab8951fc026762faa73a29fe66ddce1f4146a02",
      "new_mode": 33261,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java"
    },
    {
      "type": "modify",
      "old_id": "f75e4b79c092252cdea2dc3096d5539e87107540",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java",
      "new_id": "f4ec9015f64a8f9a794322e876aaa2df884f8912",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java"
    },
    {
      "type": "modify",
      "old_id": "8b9b65f1c5c1fb7115ba96870628a68cf432c4f8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java",
      "new_id": "b6871ea395b94b285ca0cf6d09eb91e7ad74aca7",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java"
    },
    {
      "type": "modify",
      "old_id": "bed26992124c78b0d4299cc26a79c5a8dee5c60a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java",
      "new_id": "67f604e31051308ff6ca345ff3d45768aa7251c8",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java"
    },
    {
      "type": "modify",
      "old_id": "ada290f5b3bcf9cea5d3878d743f3ae28df67456",
      "old_mode": 33261,
      "old_path": "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcModuleApi.java",
      "new_id": "bc53c218d17871a8b056f7cdc291a0ec0d4306d3",
      "new_mode": 33261,
      "new_path": "src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcModuleApi.java"
    },
    {
      "type": "modify",
      "old_id": "6823a3a72982939271dbb639ae3709a11db08a4f",
      "old_mode": 33188,
      "old_path": "src/main/starlark/builtins_bzl/common/builtin_exec_platforms.bzl",
      "new_id": "7ebdd281accbc710b6168e0ec20ab5b09164f155",
      "new_mode": 33188,
      "new_path": "src/main/starlark/builtins_bzl/common/builtin_exec_platforms.bzl"
    },
    {
      "type": "modify",
      "old_id": "c7e37177d0840aaf15173fa30574914d0737c4e3",
      "old_mode": 33188,
      "old_path": "src/main/starlark/builtins_bzl/common/cc/attrs.bzl",
      "new_id": "f02ab98356b08f34a6287c4aa999dbb405c9d4af",
      "new_mode": 33188,
      "new_path": "src/main/starlark/builtins_bzl/common/cc/attrs.bzl"
    },
    {
      "type": "modify",
      "old_id": "d2343bd98db75266cf012a58cb1d2f085347b709",
      "old_mode": 33188,
      "old_path": "src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl",
      "new_id": "eaf01fb7dbc8f32032bbe10001d313dfe1dc2d16",
      "new_mode": 33188,
      "new_path": "src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl"
    },
    {
      "type": "modify",
      "old_id": "3b67687dafd6721f5bcd522b00fe18708507f52a",
      "old_mode": 33188,
      "old_path": "src/main/starlark/builtins_bzl/common/cc/cc_common.bzl",
      "new_id": "b37eb48d7ba0bf8af8efb0cd2b0b3a798e5a420a",
      "new_mode": 33188,
      "new_path": "src/main/starlark/builtins_bzl/common/cc/cc_common.bzl"
    },
    {
      "type": "modify",
      "old_id": "78a47e931191dc630186f734ed05053e039b9be9",
      "old_mode": 33188,
      "old_path": "src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl",
      "new_id": "5d14be2a4a230b2a041d8b1eef97f2650242b5a2",
      "new_mode": 33188,
      "new_path": "src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl"
    },
    {
      "type": "modify",
      "old_id": "7295719955e6ddec60b9bfb9e437cc51fba32047",
      "old_mode": 33261,
      "old_path": "src/main/starlark/builtins_bzl/common/cc/cc_library.bzl",
      "new_id": "1d5b5bef954c19bc5818ef36ba1a7d78f5fe9707",
      "new_mode": 33261,
      "new_path": "src/main/starlark/builtins_bzl/common/cc/cc_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "da292f9b2710ea355ef9ab614a8189a9d68adacf",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/analysis/mock/cc_toolchain_config.bzl",
      "new_id": "19b9be59f64e889c213efa6795480759d37897a7",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/analysis/mock/cc_toolchain_config.bzl"
    },
    {
      "type": "modify",
      "old_id": "abf6d81f8f3b343e46b9b61f15572d7d5301652d",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/packages/util/mock/osx_cc_toolchain_config.bzl",
      "new_id": "94d8adfce56e3c9608c490ade1b48f5379bee823",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/packages/util/mock/osx_cc_toolchain_config.bzl"
    },
    {
      "type": "modify",
      "old_id": "2245f20d8634c99618238a23f6fce30a61d9a5ad",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD",
      "new_id": "f8f3f1e8c85043d9dbbf876d7456e555bce1d22e",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "00b26dd7d31e81bcd697abc06eaaf6d0499efd29",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/CppModulesConfiguredTargetTest.java"
    },
    {
      "type": "modify",
      "old_id": "fd83cf624276578c23f9907111604246959f79a6",
      "old_mode": 33261,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java",
      "new_id": "ebbcd01b7bb8793a1890edb0f7a18e15d6d3501b",
      "new_mode": 33261,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java"
    },
    {
      "type": "modify",
      "old_id": "61f656116cbdd12175c6af45db1e0d441acabed6",
      "old_mode": 33188,
      "old_path": "tools/cpp/unix_cc_toolchain_config.bzl",
      "new_id": "cec23f9094a8d9514cee827c8974d95ab757b0ab",
      "new_mode": 33188,
      "new_path": "tools/cpp/unix_cc_toolchain_config.bzl"
    }
  ]
}
