)]}'
{
  "log": [
    {
      "commit": "b614cd441b355e48e59d1f5cd61a800103404151",
      "tree": "52631bc0f41419e8e6e251d9be1653599349c133",
      "parents": [
        "7ceb14aa4bb17638e3521ca11bd5c671e32adc50"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Oct 11 12:52:21 2024 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Nov 05 14:31:14 2024 -0800"
      },
      "message": "Verify that libraries in apexes don\u0027t link to implementations outside the apex\n\nAs part of removing some of the complexity in Soong around using\nstub vs. implementations for shared library dependencies a syntax\nwill be added to Soong to allow explicitly selecting stubs vs.\nimplementation.  To avoid incorrect use, add a verification pass\non apexes that ensure that all transitive implementation libraries\nused to link native libraries or binaries in the apex are\nthemselves in the apex.\n\nBug: 372543712\nTest: TestApexVerifyNativeImplementationLibs\nFlag: EXEMPT host only\nChange-Id: I4aeaca00a359ce97e8f9efd2d8bffb8f9d2dc0df\n"
    },
    {
      "commit": "a2fdb61a04e444d308cae227f3ce0dfe571807d9",
      "tree": "4a2f0de53023e168f0827c3e055b8ba59e77d99d",
      "parents": [
        "a14fb6a73e2207c1084a0230fd97f08c14ef4818"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Oct 11 12:52:56 2024 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Oct 24 11:33:33 2024 -0700"
      },
      "message": "Make apex tests parallel\n\nMark all the apex tests and subtests with t.Parallel(), which will allow\nthe test runner to run them in parallel.  Reduces the time required to\nrun the apex tests from 70s to 9.7s.\n\nTest: go test ./apex\nFlag: EXEMPT test only\nChange-Id: I08bd3cb4d8eec1f9520c1118b4525aa79e95288e\n"
    },
    {
      "commit": "85bc19380567dfee327f04162587633673e3dcf7",
      "tree": "49f62c495320605e5f5792d702ea368adc8dc7f7",
      "parents": [
        "a1527e5e23a517911891074a6b83dfe02823aef3"
      ],
      "author": {
        "name": "Jihoon Kang",
        "email": "jihoonkang@google.com",
        "time": "Mon Jul 01 17:04:46 2024 +0000"
      },
      "committer": {
        "name": "Jihoon Kang",
        "email": "jihoonkang@google.com",
        "time": "Thu Aug 29 17:55:00 2024 +0000"
      },
      "message": "Revert^4 \"Implement detecting container violations.\"\n\nThis change introduces a method to detect violating inter-container\ndependencies between modules. The method is run in\n`ModuleBase.GenerateBuildActions`, after the container info provider is\nset. Given that the provider of the direct dependencies would have been\nset at this time, the method utilizes this information to determine\nthe violations, which are introduced in https://r.android.com/3141104.\n\nNote that this enforcement does not turn all inter-container\ndependencies as errors. Instead, it will only turn dependencies that\nmatches the pre-defined violations into errors. Even if the dependency\nmatches the violation, an error will not be thrown if the dependency\nsatisfies any of the exception functions (e.g. the dependent module is\nstubs, or the two modules belong to the same apexes).\n\nTest: m nothing --no-skip-soong-tests\nBug: 338660802\nChange-Id: Ib9ddc0761fa46f1309b1a1a4f759d9a4e04fd70e\n"
    },
    {
      "commit": "b2b1ef63e2ee63b137cb71ae2360c111e5d9647f",
      "tree": "4c9fefbb31e4038a2251a78c09ee511b54ca8f7f",
      "parents": [
        "bb678f82d6bb5cd89bf282e88a879123d9763d61"
      ],
      "author": {
        "name": "Satish Yalla",
        "email": "satishy@google.com",
        "time": "Wed Aug 28 05:10:31 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 28 05:10:31 2024 +0000"
      },
      "message": "Revert \"Implement detecting container violations.\"\n\nThis reverts commit bb678f82d6bb5cd89bf282e88a879123d9763d61.\n\nReason for revert: Droidmonitor created revert due to b/362639013. Will be verifying through ABTD before submission.\n\nChange-Id: I1dcb71672eeb44a17cf176d3731bcaf9aaf81edf\n"
    },
    {
      "commit": "bb678f82d6bb5cd89bf282e88a879123d9763d61",
      "tree": "e158cdfc87bc019e85dc2f861c3abdebc7426927",
      "parents": [
        "601939d0a78e393058c2582b9ff73ffd500f6747"
      ],
      "author": {
        "name": "Jihoon Kang",
        "email": "jihoonkang@google.com",
        "time": "Mon Jul 01 17:04:46 2024 +0000"
      },
      "committer": {
        "name": "Jihoon Kang",
        "email": "jihoonkang@google.com",
        "time": "Tue Aug 27 17:30:42 2024 +0000"
      },
      "message": "Implement detecting container violations.\n\nThis change introduces a method to detect violating inter-container\ndependencies between modules. The method is run in\n`ModuleBase.GenerateBuildActions`, after the container info provider is\nset. Given that the provider of the direct dependencies would have been\nset at this time, the method utilizes this information to determine\nthe violations, which are introduced in https://r.android.com/3141104.\n\nNote that this enforcement does not turn all inter-container\ndependencies as errors. Instead, it will only turn dependencies that\nmatches the pre-defined violations into errors. Even if the dependency\nmatches the violation, an error will not be thrown if the dependency\nsatisfies any of the exception functions (e.g. the dependent module is\nstubs, or the two modules belong to the same apexes).\n\nTest: m nothing --no-skip-soong-tests\nBug: 338660802\nChange-Id: I36e9cd956c5a076a53635be0c6ff27f77725516e\n"
    },
    {
      "commit": "313aa5475f50024da74e709a55f840eb7b263153",
      "tree": "fe4d43b20d557f151641b323eeae292474478427",
      "parents": [
        "ff694a8c88c632559c72653edf99f21c3d761dee"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 13 13:47:44 2023 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 14 16:12:22 2023 -0800"
      },
      "message": "Convert OtherModuleProvider to generic providers API\n\nConvert all of the callers of OtherModuleProvider/OtherModuleHasProvider\nto use the type-safe android.OtherModuleProvider API.\n\nBug: 316410648\nTest: builds\nChange-Id: Id77f514d68761a262d9ea830a601dbed804bbbe5\n"
    },
    {
      "commit": "3c0a83d19f56061bc9f621372cc7a5245d1204f6",
      "tree": "4aad30e3db38c504452ba34eb531565f0b71b7f0",
      "parents": [
        "e8eeec913f4c8cd00cfa30afc064b229fcdf0a51"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 12 14:13:26 2023 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 14 16:12:20 2023 -0800"
      },
      "message": "Use generics for providers API\n\nUsing generics for the providers API allows a type to be associated\nwith a ProviderKey, resulting in a type-safe API without that doesn\u0027t\nrequire runtime type assertions by every caller.\n\nUnfortunately, Go does not allow generic types in methods, only in\nfunctions [1].  This prevents a type-safe API on ModuleContext, and\nrequires moving the API to be functions that take a ModuleContext as\na parameter.\n\nThis CL creates the new API, but doesn\u0027t convert all of the callers.\n\n[1] https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md#no-parameterized-methods)\n\nBug: 316410648\nTest: builds\nChange-Id: I3e30d68b966b730efd968166a38a25cc144bd6de\n"
    },
    {
      "commit": "9fd564711ec5fd7361d0fc723256bb58569501f5",
      "tree": "96417654a886a5fb92fdca0eb28acf3953d23e43",
      "parents": [
        "ff9b6faba2b9a949289c70657db87c0b1790cc07"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Mar 31 15:42:30 2022 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri May 27 16:27:50 2022 +0100"
      },
      "message": "bootclasspath_fragment: Require at least one hidden_api package property\n\nPreviously, the split_packages, single_packages and package_prefixes\nproperties were all optional and the split_packages defaulted to [\"*\"].\nAs that value conflicted with the other package properties that meant\nthat split_packages always had to be specified even if it was to just\nset it to an empty array.\n\nThis change requires at least one of them to be specified and defaults\nsplit_packages to an empty list which means it is not required,\nalthough it can be helpful to make that explicit.\n\nBug: 194063708\nTest: m nothing\nChange-Id: I5a4c2d68e72e39f5c4a2441326dfce8685fc8ff2\n"
    },
    {
      "commit": "d34eb0c4a6e176ca129f66f0449bd0ba19fdff5e",
      "tree": "d9ec7ce082ff942f98acacbbe2797c7cfacc7914",
      "parents": [
        "fc30cfc7ae35ac92d2e7b423b23c1bba8fa3f005"
      ],
      "author": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Fri Aug 06 13:20:28 2021 +0100"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Mon Aug 16 12:00:25 2021 +0100"
      },
      "message": "Make sure that classpath fragment contents appear in make vars.\n\nThe source of truth for what jars are in BOOTCLASSPATH and\nSYSTEMSERVERCLASSPATH is make; adding a classpath fragment in soong\nwith a new jar in the contents without having it declared in make\nis wrong (excluding test apexes).\n\nBug: 191369843\nTest: m nothing\nChange-Id: Ifd313776ee7ad206031244534ed3870126e4f835\n"
    },
    {
      "commit": "abcd59731e0f88b988b8e97562c9ecd116802353",
      "tree": "c95c937ede641f37051c41d2177b83243c155179",
      "parents": [
        "47c456228c7f79bccea810db1e5f8fda0a77610c"
      ],
      "author": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Fri Aug 06 17:49:46 2021 +0100"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Tue Aug 10 15:35:52 2021 +0100"
      },
      "message": "Fix tests to use correct fixtures for configuring (Apex)BootJars.\n\nThis is in preparation to r.android.com/1740313 where setting correct\nvariables would be enforced (i.e. apex and non-apex boot jars must be in\nconfig.ApexBootJars and config.BootJars correspondingly).\n\nBug: 191369843\nTest: m nothing\nChange-Id: Ic86680c1f7af53d229083b2cc58beb3ceccb4b6a\n"
    },
    {
      "commit": "e245b61aa212e70acf0afc71aac03f8412ec5f9d",
      "tree": "2be8f029c607e371bbcfa3d44e232ead198a0a12",
      "parents": [
        "f45966f35b10be5e53111d9f5f29fdb4cdf140fd"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 10 08:59:41 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Jun 18 11:46:52 2021 +0100"
      },
      "message": "Add ClasspathElement support\n\nThe configuration of the bootclasspath, e.g. PRODUCT_BOOT_JARS,\nincludes libraries that are standalone and libraries that are part of\nan APEX. All libraries that are part of an APEX must also be part of a\nbootclasspath_fragment. Currently, the libraries and fragments are\nhandled separately but that is limiting as it does not make it easy to\nprocess all the libraries while treating those from fragments\ndifferently to standalone libraries. That is needed for hidden API\nprocessing as it needs to use classesJars from standalone libraries\nbut pre-generated flag files from fragments.\n\nThis change adds support for ClasspathElements which is represents the\nclasspath as a whole while differentiating between standalone libraries\nand fragments.\n\nBug: 177892522\nTest: m nothing\nChange-Id: I7a4adc67164a46079eb8ec0a17fc755044b4949d\n"
    }
  ]
}
