)]}'
{
  "log": [
    {
      "commit": "aaff782cd688f26947811c4cdcd96f91a901fa98",
      "tree": "5b03cb3291d7bf660134c0c255ab8479084a283f",
      "parents": [
        "ea6451a03abf35c622752fd5dfcb9fdabfa64ab0"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Tue Jul 30 12:59:44 2024 -0700"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Tue Jul 30 12:59:44 2024 -0700"
      },
      "message": "Make stub_libs property configurable\n\nTo replace soong config module types with selects.\n\nBug: 342006386\nTest: m nothing --no-skip-soong-tests\nChange-Id: I76394c0c8e2bc98ec03a3a9d8cff0ba2af4ab0d1\n"
    },
    {
      "commit": "a963b94cde194257fa67ce9596026a4da2fe7523",
      "tree": "8bffbc8bdaa97f5bb57f533422623b62287f1326",
      "parents": [
        "01bd5b1ddf0706ecb683f1fc70bf1d11028e7591"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Thu Apr 11 17:43:00 2024 -0700"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Thu May 02 15:41:24 2024 -0700"
      },
      "message": "Make the enabled property configurable\n\nThis allows using select statements with it.\n\nBug: 323382414\nTest: m nothing --no-skip-soong-tests\nChange-Id: I6f3efaaa3d82505e38a91ee4ba0e18e404360191\nMerged-In: If355d24506e3f117d27b21442a6c02bca3402dc7\n"
    },
    {
      "commit": "cb13b5d1bde9a45316271c61fd23a22c35ebf609",
      "tree": "106fae4f1411b188d820c7fea564f43a45067e5c",
      "parents": [
        "e3c11d0aad4e1efa17e6dbade960f6041ecd602d"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Jul 13 11:03:38 2023 +0100"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Fri Jul 14 12:13:28 2023 +0100"
      },
      "message": "Refactor dexpreopt for boot jars to make it flexible to config changes.\n\nIn the past, dexpreopt for boot jars was very inflexible, and it was\nincredibly hard to make a change that is as simple as adding a jar to a\nboot image. Boot image generation was handled by\n\"platform_bootclasspath\" and \"bootclasspath_fragment\" separately. This\ncaused not only code duplication but also the inflexiblity as such a\ndesign did not fit today\u0027s use cases, where a boot image may take jars\nfrom multiple mainline modules and the platform, and a mainline module\ncan contribute to multiple boot images. The design casued a huge\nmaintenance burden as any change to the boot image cost multi-week\nefforts.\n\nIn recent years, efforts have been made to improve this a bit by a bit.\nThis change is another step towards making dexpreopt reasonable.\n\nAfter this change, all boot images are generated by \"dex_bootjars\",\nwhich is in build/soong and is therefore available on both the full\nsource tree and the thin manifest (master-art). The change decouples\nprofile generation/extraction from boot image generation. Profiles for\nmainline modules are still handled by \"bootclasspath_fragment\"\nbecause they need to be packed into APEXes when building mainline\nmodules and extracted from APEXes whem building the system image from\nprebuilt modules. Boot images are not handled by\n\"bootclasspath_fragment\" anymore.\n\nBug: 290583827\nTest: m (all existing tests are still passing)\nTest: Manually checked that the boot images are exactly the same as\n  before.\nChange-Id: Ib5a5f401bee334ffcab5c26618e0c8888b84575a\n"
    },
    {
      "commit": "b1639db53f1df445f08924c6414bba53d9cee512",
      "tree": "4af3b829c418baf986cb912305b01dca12ea5fda",
      "parents": [
        "da47d3c6f3914fca33eddcc4d1ad4c8d3b4ec630"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Jul 11 15:03:13 2023 +0100"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Jul 11 17:59:05 2023 +0100"
      },
      "message": "Extract duplicate code to common helper functions.\n\nAlso, fall back to using a default name for the dexpreopt directory if\nwe are not building for Android.\n\nBug: 290583827\nTest: m nothing\nChange-Id: I3fc6ff9142a2dcdf995796f75891b242fe2848d0\n"
    },
    {
      "commit": "b2c2173bfd3e2e4ed3f91615ca6500ea704b65d9",
      "tree": "34b686b15231a42974107df1777bdf82d8b080a0",
      "parents": [
        "f923333a93bf595e7ac26c6dfd473de0068ced6e"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed May 11 14:29:53 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed May 11 15:20:37 2022 +0000"
      },
      "message": "Ensure that *bootclasspath* module types depend on device variants\n\nNeeded to allow change https://r.android.com/2089503 to be reapplied.\n\nBug: 232106778\nTest: Apply the change and then run\n      m EMMA_INSTRUMENT\u003dtrue nothing\nChange-Id: I92d19c51cc828295ba13951e65911db707f0f2ba\n"
    },
    {
      "commit": "b1e61cb8bc40e4441cf05ee7b9b457b695a784a3",
      "tree": "5af004d4d3d2e1d134fe307f25aeba93e6ba9583",
      "parents": [
        "ca9bc98e0cfe9a519cfdd13450a68f1ed7ad5b02"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Sep 08 21:56:18 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Sep 16 00:55:53 2021 +0100"
      },
      "message": "Remove fallback code path for missing BCP fragments that is no longer\nnecessary.\n\n#codehealth\n\nTest: m nothing\nBug: 179354495\nChange-Id: Iaddf163e69b52cef82d522311e81bef9bdb4aa8d\n"
    },
    {
      "commit": "31fad800a7a44ef2edda5d4051335f28d514139a",
      "tree": "120da4c1ba603bb4b148b5610fd01ac9ebb65783",
      "parents": [
        "c1b6cfbd4c40e101adf71a94d1fe4f3bf96c77b9"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Jun 18 18:14:25 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 24 21:56:27 2021 +0100"
      },
      "message": "Add HiddenAPIScope to replace use of SdkKind\n\nPreviously, the hidden API processing used SdkKind to identify the API\nscopes, e.g. public, system, etc. that are of interest for hidden API\nprocessing. Unfortunately, there is a mismatch between the SdkKind and\nwhat hidden API processing needs. e.g. SdkKind includes values that are\nnot used by hidden API processing and hidden API processing needs\nadditional API scope specific information not provided by SdkKind. The\napiScope struct used in sdk_library.go is also not a suitable\nrepresentation for similar reasons.\n\nThis change adds the HiddenAPIScope (following a similar approach as\napiScope) that rectifies that and uses it as a replacement for SdkKind\nin most parts of the hidden API processing. The SdkKind is still used\nfor retrieving information from java_sdk_library[_import] modules.\n\nFollow up changes will extend the HiddenAPIScope with more information.\n\nBug: 179354495\nTest: m out/soong/hiddenapi/hiddenapi-flags.csv\n      - make sure that this change has no effect on the generated flags.\nChange-Id: I97968f58535121652852b8d25217aa288afd2bfd\n"
    },
    {
      "commit": "51227d875b1ae91cde5af5b5b463c93a56c79f94",
      "tree": "64bb8ed584435f78e01819b8295a6b253351fcea",
      "parents": [
        "2afa8915bb32e43c1f59240d44740e2dcbfb8235"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue May 18 12:54:27 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jun 23 17:12:31 2021 +0100"
      },
      "message": "Output bootclasspath_fragment\u0027s fragments property to sdk snapshot\n\nAdds support for printing a PropertySet that has a property whose value\nis an array of structs.\n\nBug: 179354495\nTest: m nothing\n      m conscrypt-module-sdk\n      - check generated Android.bp file\nChange-Id: I71be04188465610bcbea4d3c9a5e8204171a1eeb\n"
    },
    {
      "commit": "18cf19745e2fffb184a7b42f50609ea98d4adb1d",
      "tree": "747b4ea68bbe867faaa0172f571e2fb1b41e4931",
      "parents": [
        "62370923911827d0a9cf6103e47652f40ca2cd25"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri May 21 22:46:59 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon May 24 13:32:56 2021 +0100"
      },
      "message": "Remove bootclasspathApiInfo\n\nPreviously, the bootclasspathApiInfo was only used for tests and follow\nup changes will need to provide the stub dex jars. This change moves\nthe stubJarsByKind into HiddenAPIInfo and removes bootclasspathApiInfo\nand the corresponding provider.\n\nBug: 179354495\nTest: m nothing\nChange-Id: I5459c56de561c053ed671dc9d5cb3ee4820c0ee8\n"
    },
    {
      "commit": "7487a7abb6c29bbf22268826b85105ca43caa475",
      "tree": "47d162291e59d5ad7dc822f2b6690a3bc64f48e2",
      "parents": [
        "c798d27e2c726c054d3f49e275cc9f0a91d8f2b0"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed May 19 09:36:09 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed May 19 11:42:20 2021 +0000"
      },
      "message": "Workaround to make AlwaysUsePrebuiltSdks() work with platform_bootclasspath\n\nThe AlwaysUsePrebuiltSdks() causes all java_sdk_library_import modules\nto be preferred over the source, i.e. as if they had prefer: true set.\nThat interacts badly with the work that is being done to integrate the\nbootclasspath_fragment/platform_bootclasspath modules into the build.\n\nIt would work fine once that integration has been completed but in the\ninterim it causes problems. e.g. it does not cause a problem in AOSP\nbecause those java_sdk_library_import modules that are affected have\nalready been integrated into the build properly.\n\nUnfortunately, internally that is not the case because there are\njava_sdk_library/java_sdk_library_import modules that still need to\nbe updated.\n\nBefore the java_sdk_library_import can be safely preferred each\njava_sdk_library/java_sdk_library_import module that contributes to the\nbootclasspath must:\n* Be in the contents of matching bootclasspath_fragment and\n  prebuilt_bootclasspath_fragment modules.\n* Have an apex and one of a prebuilt_apex/apex_set that contains the\n  dex implementation jar and lists the prebuilt_bootclasspath_fragment\n  name in its exported_bootclasspath_fragments property.\n\nSafely preferred in this context means that the whole build will\ncontinue to work rather than the current situation which is that only\nsome of the build will work and some will fail if an attempt is\nactually made to build it.\n\nUnfortunately, many java_sdk_library_import modules are missing:\n* The prebuilt_bootclasspath_fragment.\n* The exported_bootclasspath_fragments property on the\n  prebuilt_apex/apex_set that contains them.\n\nTogether these cause the following symptoms:\n1. The java_sdk_library_import does not have a dex implementation jar.\n2. The java_sdk_library_import does not have a myapex variant.\n\nThese workarounds will avoid Soong reporting build failures. However,\nthe build will still fail if an attempt is made to build anything\nproduced by the platform-bootclasspath, e.g. hidden API processing or\na system image.\n\nBug: 188505921\nBug: 179354495\nTest: m TARGET_BUILD_APPS\u003dCalendar\nChange-Id: I3226e21cd6a7f9e4d6bbe94e54129ac5e1d4c679\nMerged-In: I3226e21cd6a7f9e4d6bbe94e54129ac5e1d4c679\n"
    },
    {
      "commit": "9bacf56564d6d5bf50d6320a25a9ecb373ba2ef4",
      "tree": "20c7e1e2c1f52171a5e323cd071e9d62539d825f",
      "parents": [
        "110b0add9e9ec1ad87751c11975900af065ed5e8"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Apr 28 21:16:02 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Apr 29 11:34:59 2021 +0100"
      },
      "message": "Extract logic to gather deps added for \u003capex\u003e:\u003cmodule\u003e pairs\n\nTrades having to traverse a module\u0027s direct dependencies multiple times\nfor reusable code. While at the minute the amount of duplicated code is\nsmall (checking a tag and appending to a list) follow up changes will\nmodify the gatherApexModulePairDepsWithTag module to improve error\nreporting greatly increasing the benefit of deduping.\n\nThe cost of traversing a module\u0027s direct dependencies is very small as\nthere will be only a very few dependencies.\n\nBug: 177892522\nTest: m nothing\nChange-Id: I16389102abd8038e1bfa52b63f4153bdf92ff553\n"
    },
    {
      "commit": "110b0add9e9ec1ad87751c11975900af065ed5e8",
      "tree": "70f4c8f2d1d382a34ba7539eacec20d501d18702",
      "parents": [
        "50599f77350a917f1060ffd6d9589ce10ae99231"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Apr 27 14:36:08 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Apr 29 10:35:10 2021 +0100"
      },
      "message": "Treat \"apex\" system_ext the same as platform\n\nChange https://r.android.com/1672245 added support to treat\nsystem_ext:foo in the boot jars configuration the same as platform:foo,\nat least for dexpreopt_bootjars.go\u0027s getBootJar.\n\nThis change replicates that mechanism in platform_bootclasspath and as\nthat now handles hidden API processing also made a similar change in\nthe isModuleInConfiguredList function.\n\nBug: 177892522\nBug: 154976937\nTest: m nothing\nChange-Id: I105f4fbaa3b0355b013b7c5618d218d888faefb6\n"
    },
    {
      "commit": "1093158faf0c868aaf6e76ae3f9875403f66080f",
      "tree": "76e6e14b91c20b9f18d910e15fc02bcf7053532b",
      "parents": [
        "1cc8f451d1a18f48be60af095fe4ae7054949d27"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Sun Apr 25 10:13:54 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Apr 28 21:59:46 2021 +0100"
      },
      "message": "Add support for specifying api provided by bootclasspath_fragment\n\nThe hidden API processing needs access to dex stub jars for the API\nscopes provided by the bootclasspath_fragment so that it can mark the\ncorresponding dex members as being part of that API. This change adds\nthe ability to specify the modules that provide those jars, resolve the\nmodules to dex jar stubs and make them available for other modules and\ntests to use.\n\nWhile the stubs are only needed for hidden API at the moment these were\nnot added to the hidden_api properties section as there are other parts\nof the build that may need to access the stubs in future, e.g. api\nfingerprint and aidl generation.\n\nThe stubs properties can be affected by coverage as when coverage is\nenabled the jacoco-stubs needs adding to the list, just like how\njacocoagent is added to the contents.\n\nBug: 177892522\nTest: m nothing\nChange-Id: I31097d1ca45c84adeba4cbb38f693698cb289e99\n"
    },
    {
      "commit": "81667c8c11ec6a37f10e893de2ec7fc6eb2ad2ac",
      "tree": "5c4bc1b5e15668b530272311586195f47052d86d",
      "parents": [
        "c86058876314c04ed0d8e7cdff7e3b9319611997"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Apr 26 13:55:36 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Apr 27 15:56:47 2021 +0100"
      },
      "message": "Remove panics from reportMissingVariationDependency\n\nThe code that has been removed triggers in many cases when it should\nnot, e.g. an unknown module on the bootclasspath. The code was\noriginally added to try and ensure that if the attempt to add useful\nerror messages failed it would help debug the issue. However, it ended\nup just creating more failures.\n\nIf this does become an issue then this will be revisited.\n\nBug: 177892522\nTest: Add an unknown module to PRODUCT_BOOT_JARS\n      m SOONG_ALLOW_MISSING_DEPENDENCIES\u003dtrue\nChange-Id: I08dbd4b29d301f3f1f78a0fb396687062b47deb8\n"
    },
    {
      "commit": "4994d26bfac6791f3729c5a1331f89c6ab20765e",
      "tree": "0f13ec221beb114835577232983e951f5b6b9c26",
      "parents": [
        "b67d878b8008866fbab73b1b7f3b4457d6c6ea1b"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Apr 22 12:08:59 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Apr 23 09:32:14 2021 +0100"
      },
      "message": "Generalize the platformBootclasspathDepsMutator\n\nAdds a BootclasspathDepsMutator that is currently only implemented by\nthe platform_bootclasspath but which can be implemented by\nbootclasspath_fragment too.\n\nBug: 177892522\nTest: m nothing\nChange-Id: Ibe35854281004d6e40bf1f797144fb582e8c08b9\n"
    },
    {
      "commit": "b67d878b8008866fbab73b1b7f3b4457d6c6ea1b",
      "tree": "d17f5f1e5d4ca453da8239298252262224a47c05",
      "parents": [
        "a3693772a6fe4dd7439405125a775f4775047d93"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Apr 22 11:49:41 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Apr 23 09:32:14 2021 +0100"
      },
      "message": "Extract general bootclasspath related code into java/bootclasspath.go\n\nThe platform_bootclasspath and bootclasspath_fragment modules provide\ndifferent capabilities but are related and so have some common\nfunctionality. This change moves some platform_bootclasspath code that\nwill be of use for bootclasspath_fragment in future into a separate\nfile.\n\nBug: 177892522\nTest: m nothing\nChange-Id: I827b85e33d16155fcc920d553100c9e99267dc4e\n"
    }
  ]
}
