)]}'
{
  "log": [
    {
      "commit": "d7812415c3671bd24246a76e462675af8f384022",
      "tree": "9dee746de445a2ae35e465a2956fc6cbe860140b",
      "parents": [
        "9cb8fcbe06cb1391a5c7286db93edaf78ed3cc70",
        "a644c263dd1ea327f428e540a4f0aea82e7a42bd"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Nov 15 21:01:38 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 15 21:01:38 2023 +0000"
      },
      "message": "Merge \"Stop collecting path entry for module_bp_java_deps.json from each module type\" into main"
    },
    {
      "commit": "a644c263dd1ea327f428e540a4f0aea82e7a42bd",
      "tree": "91637f40fc473be5daf80bcac466d1a5676abc3f",
      "parents": [
        "692f54baeb8494e72faac06bb5cf0348d6862216"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Nov 15 11:38:36 2023 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Nov 15 11:40:48 2023 -0800"
      },
      "message": "Stop collecting path entry for module_bp_java_deps.json from each module type\n\nThe jdepsGeneratorSingleton can get the module path directly, it doesn\u0027t\nneed to be collected by each module type that implements IDEInfo.  Fixes\nmodule types (like android_library) that didn\u0027t reach the code that\ncollected the path.\n\nBug: 309835196\nTest: out/soong/module_bp_java_deps.json contains path for ExtServices.core\nChange-Id: If8cb81b4f708e0367f156ade164bee253bf53492\n"
    },
    {
      "commit": "d97bf3646914c20e4e7602c7f87792e89ac29ce3",
      "tree": "e9c1806faa62580caa58c6592ac6dd0179ef2460",
      "parents": [
        "5876a78543c010c39cb5cac291b607b06a72d44b",
        "9b59352a82b099daf032fced3e3997aab652f3d2"
      ],
      "author": {
        "name": "Aditya Choudhary",
        "email": "caditya@google.com",
        "time": "Wed Nov 15 10:30:50 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 15 10:30:50 2023 +0000"
      },
      "message": "Merge \"Add proto for Test ownership metadata.\" into main"
    },
    {
      "commit": "9b59352a82b099daf032fced3e3997aab652f3d2",
      "tree": "c19800a6d78aa0b9c2a96081256d2a533b09d58e",
      "parents": [
        "bf3e32d870a69608af720194647c24ecdb934e54"
      ],
      "author": {
        "name": "Aditya Choudhary",
        "email": "caditya@google.com",
        "time": "Fri Oct 06 19:54:58 2023 +0000"
      },
      "committer": {
        "name": "Aditya Choudhary",
        "email": "caditya@google.com",
        "time": "Wed Nov 15 09:08:02 2023 +0000"
      },
      "message": "Add proto for Test ownership metadata.\n\nThis Cl adds a new rule to Soong to generate test spec metadata. Also, this CL adds a provider in various test module to provide test spec related data to the Soong rule.\nWill add providers and test code to other Module in the future changes.\nProvider added for the following test modules in this change: android_robolectric_test, android_test, bootclasspath_fragment_test, java_test, java_test_host, python_test, python_test_host, sh_test,and sh_test_host.\n\nBug: 296873595\n\nChange-Id: I5f89f72d5874bb7838ae357efdb8c6ca208e18a7\n"
    },
    {
      "commit": "a0cf0a4a6686bbed09e07397423a6ce2cad586c4",
      "tree": "be32d562bba61803d61938efd1ce2059d123efb2",
      "parents": [
        "74639be8a789d9a3e9683bc961686b5cdec261f7"
      ],
      "author": {
        "name": "Alyssa Ketpreechasawat",
        "email": "kalyssa@google.com",
        "time": "Thu Oct 26 13:21:16 2023 +0000"
      },
      "committer": {
        "name": "Alyssa Ketpreechasawat",
        "email": "kalyssa@google.com",
        "time": "Thu Nov 09 12:54:09 2023 +0000"
      },
      "message": "Skip unknown check in bootclasspath_fragment (source version) if prebuilt version is in use.\n\nFollowing aosp/2822531, when MediaProvider prebuilt is enabled, framework-pdf (new jar) will be removed from PRODUCT_APEX_BOOT_JARS. Subsequently there will be an error around the inconsistency (unknown) between bootclasspath_fragment (source version of MP with framework-pdf in its content) and PRODUCT_APEX_BOOT_JARS (framework-pdf removed). Since the source version of bootclasspath_fragment is not in use, we should ignore this check. See more detail in go/stale-mainline-prebuilts (issue from changes in framework/service jars in existing apexes).\n\nBug: 304719212\nTest: lunch cf_x86_phone-next-userdebug \u0026 m\nTest: lunch cf_x86_phone-trunk-userdebug \u0026 m\nChange-Id: I0f62277a9e65522bf5a4ea1ae33c166f996c37d5\n"
    },
    {
      "commit": "3e75cfa795af895ca8418826b4d6c36cc699443e",
      "tree": "ee59d75b16b1151d6aa3b24b862c45e290afe8aa",
      "parents": [
        "f96b001064c2dcdd8038f0aa03c372aaa2f2a132"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Fri Nov 03 00:46:29 2023 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Fri Nov 03 00:46:29 2023 +0000"
      },
      "message": "Remove retrieveLegacyEncodedBootDexFiles\n\nSeems to be an unused function\n\nTest: TH\nChange-Id: Ic0b352afc16ccaf450dadb5b13d9fb6c694e72e6\n"
    },
    {
      "commit": "06ea531ab30026dcddbe609ed71f951d4f7ffd5b",
      "tree": "2a953171a46f25c2423b4a6b20c7dcb839bc1924",
      "parents": [
        "03787bea6d58171c084ea8840f3a717137f60687"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Wed Oct 18 17:38:40 2023 -0700"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Wed Oct 18 17:42:59 2023 -0700"
      },
      "message": "gofmt soong\n\nTest: Presubmits\nChange-Id: Ia76c35ba51685eca29df51738000eacd3f43ce20\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": "f7f782c4f1242f7f2c869b42a97f195c59317172",
      "tree": "53157f47aeef56f0b9adc7b3c869c91ccbf4f3a8",
      "parents": [
        "b69e89559fe02bcd010f25c3cf2449d30200a761"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Jul 11 14:51:04 2023 +0100"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Jul 11 15:29:17 2023 +0100"
      },
      "message": "Remove Modules() from BootclasspathFragmentApexContentInfo.\n\nThe Modules() method was for the ART boot image in the ART APEX. It\u0027s no\nlonger needed because we don\u0027t install the ART boot image in the ART\nAPEX anymore.\n\nBug: 290583827\nTest: m nothing\nChange-Id: I674a5fa1ed18908413a64129df5947c7d26e638e\n"
    },
    {
      "commit": "6c0df888094915e32955c2b175b29c020104d07c",
      "tree": "7479b740ef66cfaa03a2b0afed73932ab757ee13",
      "parents": [
        "3d4d88d68e5b5796cf4d9d236793df5322a1eab5"
      ],
      "author": {
        "name": "Jihoon Kang",
        "email": "jihoonkang@google.com",
        "time": "Wed Jun 14 22:43:25 2023 +0000"
      },
      "committer": {
        "name": "Jihoon Kang",
        "email": "jihoonkang@google.com",
        "time": "Thu Jun 15 19:42:34 2023 +0000"
      },
      "message": "Cleanup remaining android.JavaApiLibraryName() references\n\nSince the name of the java_library generated from sdk_library per api\nscope does not depend on the build configuration anymore, all\ndependency switching \"magic\" via android.JavaApiLibraryName() can be\nremoved.\n\nThis change also removes from-text-build-specific test cases, as those\ntest cases depend on build configurations.\n\nTest: m nothing \u0026\u0026 m nothing --build-from-text-stub\nBug: 287340610\nChange-Id: I3bac35259e0cbaa16432a46cb2b128951c9bc075\n"
    },
    {
      "commit": "c08c162b5a82ddfc44e9944d798636b2241308de",
      "tree": "c45d7ab59494cf0b013c3fdb44fa03c39d57326a",
      "parents": [
        "09d88df0407263e846b01c226184b262f2e36678"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed May 10 18:38:34 2023 +0100"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu May 11 19:04:17 2023 +0100"
      },
      "message": "Dexpreopt ART jars and framework jars together.\n\nBug: 280776428\nTest: atest art_standalone_dexpreopt_tests\nTest: -\n  1. m\n  2. Check .invocation file (http://gpaste/6498044089466880)\n  3. Check files in $ANDROID_PRODUCT_OUT/system/framework/x86_64\nTest: -\n  1. m dist\n  2. Check files in out/dist/boot.zip\nTest: -\n  1. art/tools/buildbot-build.sh --host\n  2. m test-art-host-gtest\n  3. art/test/testrunner/testrunner.py --host\nTest: m build-art-target-golem\nChange-Id: I89490252e56a05edab03fdddc6539fa4d7f79756\n"
    },
    {
      "commit": "b47caccbc037b65462f757c462a99732ad6dd51c",
      "tree": "3f7ba11fa931f07702bc6cdc16fb0c9f31006fee",
      "parents": [
        "b95998be731406209f18fab764b96421a17ab4c9"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed May 10 16:40:18 2023 +0100"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu May 11 18:25:18 2023 +0100"
      },
      "message": "Remove the ability to install boot images by bootclasspath_fragments.\n\nWe don\u0027t need this anymore because we are going to compile ART jars and\nframework jars together.\n\nBug: 280776428\nTest: m\nChange-Id: I070157530449a1bb5779e25984c367df3dde7b36\n"
    },
    {
      "commit": "bc698cd28aa2ee17af208bfd56f003347116ddb0",
      "tree": "c5010d80692fd66cf53b61c3fc8b4a9e23f4e331",
      "parents": [
        "e3f0281b8897da1fe23b2f4f3a05f1dc87bcc902"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon May 08 16:28:38 2023 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon May 08 21:28:13 2023 +0100"
      },
      "message": "Revert^2 \"Generate boot image profiles even if dexpreopt is disabled.\"\n\nRevert submission 2580631-revert-2574032-XXTWCJDTDQ\n\nReason for revert: Fixed build breakages\n\nReverted changes: /q/submissionid:2580631-revert-2574032-XXTWCJDTDQ\n\nBug: 280440941\nTest: lunch aosp_cf_riscv64_minidroid-userdebug \u0026\u0026 m UNSAFE_DISABLE_HIDDENAPI_FLAGS\u003dtrue dist\nTest: Disable dex2oat on host (to simulate macOS) and build\nChange-Id: I5f7f746ca1d4da660fe0c40115e6c71750dfdccc\n"
    },
    {
      "commit": "8d8c660710037e87c7094a612246d64e5af74846",
      "tree": "08e92ff8c3a7a797b7f0ed74b27cafb22b4ed8e6",
      "parents": [
        "3d08c388b9e00cf98510cbd1408b5ffc3524e2ff"
      ],
      "author": {
        "name": "Qiao Yang",
        "email": "qiaoccolato@google.com",
        "time": "Fri May 05 15:03:24 2023 +0000"
      },
      "committer": {
        "name": "Qiao Yang",
        "email": "qiaoccolato@google.com",
        "time": "Fri May 05 15:03:24 2023 +0000"
      },
      "message": "Revert \"Generate boot image profiles even if dexpreopt is disabled.\"\n\nRevert submission 2574032\n\nReason for revert: DroidMonitor-triggered revert due to breakage \u003chttps://android-build.googleplex.com/builds/quarterdeck?branch\u003daosp-master\u0026target\u003daosp_cf_riscv64_minidroid-userdebug\u0026lkgb\u003d10069333\u0026lkbb\u003d10075041\u0026fkbb\u003d10071083\u003e, bug \u003cb/280902279\u003e\n\nReverted changes: /q/submissionid:2574032\n\nChange-Id: I8e99f8231639198b149ea8d822ee7f9a5b391a89\nBUG: \u003c280902279\u003e\n"
    },
    {
      "commit": "b95f8345c8b926035e5ed40c903f056cd106c539",
      "tree": "dea5843baa19eff63513a2e2b04c628c1ad0bf87",
      "parents": [
        "05d4d901146d96634ad0ff3a9982c9c87c394f18"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue May 02 14:35:44 2023 +0100"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed May 03 15:25:18 2023 +0100"
      },
      "message": "Generate boot image profiles even if dexpreopt is disabled.\n\nBug: 280440941\nTest: -\n  1. Patch ag/22302622 to disable dexpreopt.\n  2. See boot image profiles still generated.\nChange-Id: I1bf05ade53fa83f3dba46f28a8f9246ba1fdf664\n"
    },
    {
      "commit": "877f39d535edfb58d75eac843a818234d1c56657",
      "tree": "28cdd443933b7c4c14b4f85d17c33553bf56a5af",
      "parents": [
        "69f4218c4feaeca953237cd9e76a9a8cc423d3e3"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Wed Mar 29 16:19:51 2023 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Mar 30 00:34:36 2023 +0000"
      },
      "message": "Use stubs from .txt files for hiddenapi\n\nHiddenapi processing uses the stub libraries to determine the api\nsurface boundaries. Use JavaLibraryName function to redirect the usage\nof stubs from .txt files based on config.\n\nThis should be a no-op for now.\n\nBug: 271443071\nTest: go test ./java\nChange-Id: I1ed3ab2485c903bc57f627dc1acf1a3fbc0a3c4d\n"
    },
    {
      "commit": "18994c73f11db00371be747c8dca6da1c01fa2ef",
      "tree": "76516067d92eb71defdcb276a6dc910cb50bd266",
      "parents": [
        "20eed826fd037d27f87631bd6e64e0ea651621e7"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Tue Feb 28 16:02:16 2023 -0800"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Tue Feb 28 16:51:32 2023 -0800"
      },
      "message": "Replace SortedStringKeys with SortedKeys\n\nNow that we have generics.\n\nBug: 193460475\nTest: presubmits\nChange-Id: I1594fd8feb505175d5c09c03ef397e5ffd5b09cb\n"
    },
    {
      "commit": "8e9ea8bb83bdab080c696d05eb1676b8dba0d35f",
      "tree": "3fbc15ac1393f549b150d7887930492e2d947e42",
      "parents": [
        "af8b9503575549d046470fde9b9e985278a17b87"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Feb 23 17:50:46 2023 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Feb 23 17:50:46 2023 +0000"
      },
      "message": "Add a new option `compilerFilter` to `bootImageConfig`.\n\nAfter this change, the compiler filter can be specified by the option,\nand profiles will not be used if the compiler filter is not\na profile-guided one.\n\nThis change also allows preloadedClassesFile to be empty.\n\nBug: 269230245\nTest: m\nChange-Id: I65e6b7209d2f0510bcc784a62623ab402b7f96bb\n"
    },
    {
      "commit": "d796f6f6dcb1c34bb7ed5c699588eb3938a3ed37",
      "tree": "37b5efac5f630c265f9ea8b458f540f4ff5ab8ee",
      "parents": [
        "5e71e68a82bf00b8d1ddb3c6d50a0aa38458530c"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Nov 23 23:06:05 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Dec 12 17:33:06 2022 +0000"
      },
      "message": "Stop module types being SdkAware\n\nRemoves all usages of SdkBase and InitSdkAwareModule.\n\nBug: 260237150\nTest: m nothing\nChange-Id: I07db8afc805eadbeb5b23f2e1d2f51567eecfab0\n"
    },
    {
      "commit": "458a15bd8af649af4f2d3752ba2e6d0d5c61350b",
      "tree": "9c01f61fa5fd306ff9e570b13397d0dbc7daa219",
      "parents": [
        "e3ae3dd6f99a6f9758f1f8540e274285771e5e60"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Nov 25 12:18:24 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Dec 12 17:33:05 2022 +0000"
      },
      "message": "Remove IsModuleInVersionedSdk\n\nPreviously, as all versioned sdk snapshots have been removed from\nAndroid.bp files this method would always return false. This change\neffectively replaces all calls to it with false, and then optimizes\naway any unused code.\n\nBug: 260237150\nTest: m nothing\nChange-Id: I1b717ee8345e807bd888451f6e7e3c3a0d391ee2\n"
    },
    {
      "commit": "e10a9f2e5e1b853e834debc692c3802540777533",
      "tree": "f7cccf1c84b4f73b8ac5b7e4305a3a11fc244642",
      "parents": [
        "9f6ac0bb42a8c229c6a1f85b10f4881b7cbe551f"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Oct 04 16:39:18 2022 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Oct 05 12:33:02 2022 +0100"
      },
      "message": "Remove deviceInstalls from bootImageVariant\n\nThe use of this field to return information from buildBootImageVariant\nup the call stack to one of the callers resulted in data races being\ndetected. This change simply passes the deviceInstalls up the call\nstack.\n\nBug: 245956352\nTest: m nothing\n      go test -race ./sdk/... -run TestSnapshotWithBootclasspathFragment_ImageName -test.count 100\n      # Run the previous command without this change and sometimes it\n      # shows the data race around deviceInstalls. When run with this\n      # change it reports no data races.\nChange-Id: I3c73920dcb17a6c89a63c6a9c3a0bb049a98a690\n"
    },
    {
      "commit": "9f6ac0bb42a8c229c6a1f85b10f4881b7cbe551f",
      "tree": "288b3f2e0af4c8fb79f51f01191f853fe3b41876",
      "parents": [
        "a8df7e1c5bfce9115293ddd3bee9682c3c2c5728"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Oct 04 15:36:44 2022 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Oct 05 12:33:02 2022 +0100"
      },
      "message": "Remove profilePathOnHost from bootImageConfig\n\nThe use of this field to return information from bootImageProfileRule\nup the call stack to one of the users resulted in data races being\ndetected. This change simply returns the profile path back up the call\nstack.\n\nBug: 245956352\nTest: m nothing\n      go test -race ./sdk/... -run TestSnapshotWithBootclasspathFragment_ImageName -test.count 100\n      # Run the previous command without this change and sometimes it\n      # shows the data race around profilePathOnHost. With this change\n      # that data race is not reported. Although there is still another\n      # data race.\nChange-Id: I03b09e514cc94f2a6c9d5117d3b2f130cc2e4f5b\n"
    },
    {
      "commit": "4930389405423c7edef4becac37515f781eeaf4c",
      "tree": "bebd5ed2dda05c51bd5973622667a886a901851f",
      "parents": [
        "4f1128bee498e0d04f27d5ab9d9eb2f4a79e29bc",
        "1938dba8b62a15b9a589e7aaf8ec5a120b7915fe"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 21 12:43:47 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 21 12:43:47 2022 +0000"
      },
      "message": "Merge \"Exclude unsupported libraries from sdk snapshot\""
    },
    {
      "commit": "4f1128bee498e0d04f27d5ab9d9eb2f4a79e29bc",
      "tree": "1f680a9e40403c0429fa1fb6d996aaeb2eddcf4a",
      "parents": [
        "1fdd934df0a96dba85892dc9e7bb01b8e6aa5b59",
        "887efdd779ecf6b264ea1ca510e47ef74d66f03c"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 21 12:10:37 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 21 12:10:37 2022 +0000"
      },
      "message": "Merge \"Separate hidden API flag info for sdk from platform_bootclasspath\""
    },
    {
      "commit": "1fdd934df0a96dba85892dc9e7bb01b8e6aa5b59",
      "tree": "9e46a2d88a0e9c7f140fe6abed1c73998562c50f",
      "parents": [
        "7113b19be803d54abca058b9d9384bee0625b206",
        "af70518189374b3a18ccc3cf4d9500fcce5e29df"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 21 12:10:29 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 21 12:10:29 2022 +0000"
      },
      "message": "Merge \"Separate hidden API flag generation from encoding\""
    },
    {
      "commit": "d9d5f97f00ceee41d5098761240eb22114075b38",
      "tree": "98f2e995344ff013431c1dce2f110a3462122d3f",
      "parents": [
        "b8356ed83ac59dabde57845b34bab32177f4758c"
      ],
      "author": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Fri Sep 16 18:44:28 2022 +0000"
      },
      "committer": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Fri Sep 16 18:44:28 2022 +0000"
      },
      "message": "Remove special case for test-only module\n\nTest: m nothing\n\nBug: 195732042\nChange-Id: I401a7ec63c5c902255184b5861ead3e3322be373\n"
    },
    {
      "commit": "56fd1539f0272e48b50f1485dd4b1e03f652d414",
      "tree": "d8681f24f33e692e906c13228fc977fe76de44cd",
      "parents": [
        "6d01b8f516d576c4b524cb591f4e904dbbafb797",
        "d0fe1307aafc7714f3f9e9949a2c143be04fcf44"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 16 18:24:49 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 16 18:24:49 2022 +0000"
      },
      "message": "Merge \"Revert \"bootclasspath_fragment: Treat some specific modules as test\"\""
    },
    {
      "commit": "d0fe1307aafc7714f3f9e9949a2c143be04fcf44",
      "tree": "d18dea6fe0ace1b08c6057843cd3681ad320aa19",
      "parents": [
        "ff9b6faba2b9a949289c70657db87c0b1790cc07"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 14 17:04:51 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 14 17:05:25 2022 +0000"
      },
      "message": "Revert \"bootclasspath_fragment: Treat some specific modules as test\"\n\nThis reverts commit ff9b6faba2b9a949289c70657db87c0b1790cc07.\n\nReason for revert: No longer needed\nBug: 194063708\nTest: m nothing\nChange-Id: Ic2f6761c9a0a00a612724cb429f002a16522e53f\n"
    },
    {
      "commit": "1938dba8b62a15b9a589e7aaf8ec5a120b7915fe",
      "tree": "a6619499d1c8a5304d0830bc11d2f9666e3891cd",
      "parents": [
        "887efdd779ecf6b264ea1ca510e47ef74d66f03c"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jul 26 23:53:00 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 14 16:47:18 2022 +0100"
      },
      "message": "Exclude unsupported libraries from sdk snapshot\n\nWhen an sdk snapshot is targeted at release X then it cannot include\nbootclasspath fragment libraries which are not present in that build as\notherwise it causes build failures. It should also not include any\nunsupported libraries, i.e. libraries that cannot work on that release.\n\nThis change causes sdk snapshot to exclude libraries that have a\n    min_sdk_version \u003e target build release\n\nIt also ensures that hidden API flags do not include any information\nfrom excluded libraries.\n\nBug: 240406019\nTest: BUILD_NUMBER\u003dfixed packages/modules/common/build/mainline_modules_sdks.sh\n      # Ran the previous command with and without this change to make\n      # sure that this change excludes framework-connectivity-t library from the\n      # tethering sdk snapshot for S, including from the hidden API flag files.\nChange-Id: I57969b85a12e9e5a3fc76c055b260cec5d5f7d7f\n"
    },
    {
      "commit": "887efdd779ecf6b264ea1ca510e47ef74d66f03c",
      "tree": "e0dd635e4afb3e82bcab3dc28ccced2870d5e4cf",
      "parents": [
        "af70518189374b3a18ccc3cf4d9500fcce5e29df"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 14 16:37:12 2022 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 14 16:37:12 2022 +0100"
      },
      "message": "Separate hidden API flag info for sdk from platform_bootclasspath\n\nPreviously, the sdk snapshot and platform_bootclasspath both used the\nHiddenAPIInfo/Provider to retrieve the hidden API related information\nthey needed. This change separates them by adding a new\nHiddenAPIInfoForSdk/Provider that is used to provide the information\nneeded by the sdk snapshot. This allows a follow up change to generate\ndifferent information for the sdk and for the platform depending on the\ntarget build release of the sdk snapshot.\n\nBug: 240406019\nTest: packages/modules/common/build/mainline_modules_sdks.sh\n      # Ran the previous command with and without this change to make\n      # sure that this change does not change the sdk snapshot\n      # contents.\nChange-Id: I30cea6cf8dae1be467b7063430d6197e5baa684b\n"
    },
    {
      "commit": "af70518189374b3a18ccc3cf4d9500fcce5e29df",
      "tree": "5cdee2e3ac8cc4059ccc7d5338b2695d17661fd8",
      "parents": [
        "9a2d40c79f604c8ad4f5caae83ab4d5380c38ddf"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 14 11:47:34 2022 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Sep 14 16:07:28 2022 +0100"
      },
      "message": "Separate hidden API flag generation from encoding\n\nPreviously, the rules for encoding hidden API flags into dex files were\ngenerated in the hiddenAPIRulesForBootclasspathFragment alongside the\nrules for creating the hidden API flag files.\n\nThis change separates the encoding from the generation of the flags.\nThis will allow a follow up change to generate API flags for the sdk\nsnapshot separately without affecting the encoded dex files.\n\nBug: 240406019\nTest: m nothing\nChange-Id: I3ab3ff5780e7b2e322665d3ea15f1438f2e403bd\n"
    },
    {
      "commit": "3f1ae0b55acd7e727c6227c3ab3e4f34e885e478",
      "tree": "3bc227c101b0939806f9b3a1ffd129b987bdd8a4",
      "parents": [
        "1149c2c185a53ef0d0f13dd8bdb52095a8ef4049"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 27 16:27:42 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Aug 19 16:45:38 2022 +0000"
      },
      "message": "Add hidden API properties to java_sdk_library modules\n\nPreviously, hidden API properties were only allowed on\nbootclasspath_fragment and platform_bootclasspath module types. This\nchange allows them to be specified on java_sdk_library modules too. It\ninvolves the following changes:\n\n1. Add the properties to the java.Module.\n2. Populate and provide a HiddenAPIPropertyInfo struct from\n   java_sdk_library modules.\n3. Modify bootclasspath_fragment to merge information gathered from its\n   content libraries as if it was specified on the fragment itself.\n\nBug: 240406019\nTest: m nothing\n      packages/modules/common/build/mainline_modules_sdks.sh\n      # Ran the previous command with and without this change to make\n      # sure that this change does not change the sdk snapshot\n      # contents.\nChange-Id: I64eb71c2039ddc14cf380689d0cec7ec221f5b88\n"
    },
    {
      "commit": "9b61abbd840503dd9bd2eebf7fee8be627be4eb5",
      "tree": "3c12810cb7409447a226219cdd145445ef2dde04",
      "parents": [
        "1e9e9388d8dd6838c3cf1244257c43815840c790"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 27 16:16:54 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Aug 19 13:29:47 2022 +0000"
      },
      "message": "Push Hidden_api inside HiddenAPIFlagFileProperties\n\nAll usages of HiddenAPIFlagFileProperties use it as the type of a\nHidden_api field. This change pushes the field inside the struct and\njust embeds the struct inside the structs that need it making it\nsimpler and more consistent with how the HiddenApiPackageProperties\nstruct is used.\n\nThis is extracted as a separate change as while the change is simple\nit does affect a lot of lines. Keeping it separate makes it easier to\nreview the changes.\n\nBug: 240406019\nTest: packages/modules/common/build/mainline_modules_sdks.sh\n      # Ran the previous command with and without this change to make\n      # sure that this change does not change the sdk snapshot\n      # contents.\nChange-Id: I664453029574ef68dc5712f7bf137a1a6e78e864\n"
    },
    {
      "commit": "1e9e9388d8dd6838c3cf1244257c43815840c790",
      "tree": "fbeb1575045a6a705c767ddf384f7255173281f2",
      "parents": [
        "29d16678469e3d24dbbd05f184e5c4e21ae859b0"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 27 15:55:06 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Aug 19 13:28:47 2022 +0000"
      },
      "message": "Refactor handling of hidden API property provided information\n\nIn preparation for adding hidden API properties to individual\njava_sdk_library modules this change refactors the handling of that\ninformation.\n\n1. Renames HiddenApiPackageProperties to HiddenAPIPackageProperties\n   to be consistent with other similar structs.\n\n2. Creates a new HiddenAPIPropertyInfo struct to be used to provide\n   property derived information from one module to another. It includes\n   both flag files as well as the information about which packages are\n   used.\n\n3. The HiddenAPIPropertyInfo is embedded within the existing\n   HiddenAPIFlagInput in place of the existing flag files field.\n\n4. The fields in the HiddenAPIPropertyInfo struct are populated from\n   the HiddenAPI*Properties structs.\n\n5. Access to package information is retrieved from the info struct\n   instead of directly from the properties. That means that no changes\n   will be needed to this code when info from other modules is merged\n   into the struct in a follow up change.\n\nBug: 240406019\nTest: packages/modules/common/build/mainline_modules_sdks.sh\n      # Ran the previous command with and without this change to make\n      # sure that this change does not change the sdk snapshot\n      # contents.\nChange-Id: I773279a4b621bcc3c40e3bfe193f2c7b0caeccd6\n"
    },
    {
      "commit": "4057d6455ad4508d550596c70c1fa160f6db844d",
      "tree": "ee1a9e9e6b8cd5f826f347ee87948ec17849344d",
      "parents": [
        "306061072da8bcad4ea00abec628be3212b7effa",
        "0d89b3dc27b683aa2687f0f24e6643e199ae2d0c"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 07 10:59:52 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 07 10:59:52 2022 +0000"
      },
      "message": "Merge \"Add apexes property to sdk\" am: 0d89b3dc27\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/2096447\n\nChange-Id: Ib57f709febd0827967afcd301825d7dae568b67a\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "4e7d1c43e27cc484cf598a7d683b0a41363d6f97",
      "tree": "f68370057030155619dfd77f34c9ace1154409f3",
      "parents": [
        "014fded49d365a5700a28c1080590f2004c763cb"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri May 13 13:12:19 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 06 15:58:43 2022 +0000"
      },
      "message": "Add apexes property to sdk\n\nSpecifying an apex in the apexes propety will cause all the\n*classpath_fragments that are contents of the APEX to be automatically\nadded as members of the sdk and appear in the snapshot.\n\nThe purpose of this change is to dedup the APEX and sdk definitions and\ntry and avoid some of the issues that we have been finding while\nattempting to build against the prebuilts.\n\nTwo tests, one each for bootclasspath_fragment and\nsystemserverclasspath_fragment, have been refactored to compare the\noutput when adding the *fragment to the sdk directly of via the APEX.\nThat ensures switching to use the APEX will not change the sdk snapshot\nunless it was previously missing a *fragment.\n\nThere was also a slight difference in where the hidden API flags were\ncopied from. That should have no impact on the output as the flags are\nidentical.\n\nThe sdk snapshot generation needed some tweaks to avoid generating a\nprebuilt for the APEX.\n\nBug: 232401814\nTest: m nothing\nChange-Id: I7aaf16a3a0ab4bebf97765d1484215cc008dc4b8\n"
    },
    {
      "commit": "2ab17c04912920745e7681eac38b532d9bf6b443",
      "tree": "bd2b09db930744020059b3df199d181c4db2862c",
      "parents": [
        "45f09a5eedcf5232ec300134cedb13cfec4a78ad",
        "811d444ce194bfb80802337bd04d37264cfa5fcd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 06 18:33:18 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Jun 06 18:33:18 2022 +0000"
      },
      "message": "Merge \"bootclasspath_fragment: Require at least one hidden_api package property\" am: 4a737a2d8b am: 811d444ce1\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/2062450\n\nChange-Id: I0e4673a5d702427d752e3e413bae96454b601207\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "4c6b51a1d5690ba775887020c057074936bf4cd7",
      "tree": "2de7362e1a902dfec98f7b8772fb1865c26ffdf0",
      "parents": [
        "b1848aa05f89551b42f37ce97df16571a1a4c398",
        "7d40722b8f34bb1f6c4017d28f4f3be163cf366f"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon May 30 10:14:03 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon May 30 10:14:03 2022 +0000"
      },
      "message": "Merge changes I093fbec4,Iee5c09d5 am: 1db9d96d6a am: 7d40722b8f\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/2062449\n\nChange-Id: Iee15dd53c385454ef8dd1e3f59c813dbf8a68d0c\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\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": "ff9b6faba2b9a949289c70657db87c0b1790cc07",
      "tree": "6bd0c1d9c830fffef7fb2c26df5aad186ccb8675",
      "parents": [
        "c15b9e99e5e208410a1f1c3766c97125e63c22b3"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Apr 12 18:20:14 2022 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri May 27 16:17:44 2022 +0100"
      },
      "message": "bootclasspath_fragment: Treat some specific modules as test\n\nTreats bootclasspath_fragment modules that have not yet been converted\nto test modules as if they were test modules. This is a temporary work\naround to ease the migration to bootclasspath_fragment_test modules and\nis expected to be reverted.\n\nBug: 194063708\nTest: m nothing\nChange-Id: I093fbec4e926719b644c64ebfc63f9e3070e28db\n"
    },
    {
      "commit": "c15b9e99e5e208410a1f1c3766c97125e63c22b3",
      "tree": "d18dea6fe0ace1b08c6057843cd3681ad320aa19",
      "parents": [
        "0e3d36c58291c6b71fd5523624687bbf3394fa8b"
      ],
      "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:17:44 2022 +0100"
      },
      "message": "bootclasspath_fragment: Add test specific module type\n\nThis is needed to allow the behavior of the bootclasspath_fragment to\nbe tweaked for test fragments.\n\nBug: 194063708\nTest: m nothing\nChange-Id: Iee5c09d5b580d088ba081d95a788dbde883078ed\n"
    },
    {
      "commit": "904e8d18f0b62afbc02558bd8fa1d82e2519691a",
      "tree": "1f9db709b16b9ec06c859de4ba236959ee8c165a",
      "parents": [
        "da3b642bf54e562f320f327bda8523e5c46c96de",
        "9bc494bc085a80cc1a2c3e35d57aa600ef57ee25"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 11 20:49:39 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 11 20:49:39 2022 +0000"
      },
      "message": "Merge \"Ensure that *bootclasspath* module types depend on device variants\" am: 1a6305f9e0 am: 9bc494bc08\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/2095251\n\nChange-Id: Ia0a25286a2d5d3b4861f3a91d529fe52655fc68e\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\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": "e3b56cb45f9724e521bde086ef47bca99338e0bd",
      "tree": "5fcca56e30c0b7de34d5ad320a3bc36cf7422ea3",
      "parents": [
        "c219c500308f0a222e44489e46959a1cc01e60ec",
        "50ed6e64a5bac659c7d6df6741181b9d58234435"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Mar 18 19:30:46 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Mar 18 19:30:46 2022 +0000"
      },
      "message": "Merge \"Make bootclasspath_fragment hidden API package checks exhaustive\" am: 2cb89166df am: bbf4ec6965 am: 50ed6e64a5\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/2028212\n\nChange-Id: I125679a87a40deedc1f5435b8459bf8c8d96a419\n"
    },
    {
      "commit": "846beb7f5442041d7e47cdfeceb65d3f1fd7329c",
      "tree": "819e2c7fae72b7dbe4f7f66bf69d3b96626b5f2d",
      "parents": [
        "2d6e6a13380284c94122b97ded26c0d80a31ac47"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Mar 15 17:45:57 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Mar 18 10:54:51 2022 +0000"
      },
      "message": "Make bootclasspath_fragment hidden API package checks exhaustive\n\nPreviously, the bootclasspath_fragment\u0027s hidden_api.split_packages and\nhidden_api.package_prefixes properties did not specify an exhaustive\nset of packages that were provided by the fragment. They excluded\npackages which were either not split or which could not be used as a\npackage prefix because it would match sub-packages provided by other\nbootclasspath modules.\n\nThis change adds the hidden_api.single_packages list to specify those\nadditional packages and then uses that information to verify that any\nbootclasspath_fragment that specifies at least one of split_packages,\nsingle_packages or package_prefixes properties only contains classes\nfrom a package that matches one of those properties. That will\nprevent a module from accidentally including unexpected classes, such\nas might happen when statically including a common utility library.\n\nIt also adds coverage specific versions of the properties as additional\npackages are added to the art-bootclasspath-fragment when building\ncoverage builds.\n\nBug: 194063708\nTest: atest signature_patterns_test\n      m out/soong/hiddenapi/hiddenapi-flags.csv\n      m EMMA_INSTRUMENT\u003dtrue EMMA_INSTRUMENT_FRAMEWORK\u003dtrue out/soong/hiddenapi/hiddenapi-flags.csv\n      # Breaks without corresponding change to add android.system to\n      # the art-bootclasspath-fragment.\n      /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc scripts/hiddenapi/signature_patterns*.py\n      pyformat -s 4 --force_quote_type single -i scripts/hiddenapi/signature_patterns*.py\nChange-Id: Iddf6c59cd4dc8c36dde7943a9840ccef5794b320\n"
    },
    {
      "commit": "f9c70add3b823da210c5ad297a0c803e3cfe7ac3",
      "tree": "b6849d52a83f33c35849c272e51f5d265f70ed7c",
      "parents": [
        "7d1ead7347b9eb152ef9c57ad9d710094701b4ff",
        "1482bcdc7cd22790e9672ae105261e2e24d5b176"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Mar 09 10:48:28 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 09 10:48:28 2022 +0000"
      },
      "message": "Merge \"List bootclasspath_fragments in module-info.json\" am: d94e4f5554 am: efa9bd7422 am: 1482bcdc7c\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/2007227\n\nChange-Id: I4095dcb27137b70090a23214cfdc2242df1cecb9\n"
    },
    {
      "commit": "ea465fbd3b53c2a7c9b4e90e385db9791ce2dc44",
      "tree": "6aebc893ac9157829e9f1f3d829d09f66e330d45",
      "parents": [
        "d508a638c398d023bb2b9795b44060b20bfd587f"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Mar 04 18:39:29 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Mar 04 18:44:47 2022 +0000"
      },
      "message": "List bootclasspath_fragments in module-info.json\n\nBug: 202154151\nTest: lunch aosp_cf_x86_64_phone-userdebug\n      m out/target/product/vsoc_x86_64/module-info.json\nChange-Id: I2bdb6783f7570d89f5c3150b39f1be920c2a8989\n"
    },
    {
      "commit": "49c83cf6f5a93919e6e1af9a035e8452223e3cc4",
      "tree": "74fa14f9c7b25f138ff40d4de874495a35e3e436",
      "parents": [
        "c8a8ffb1f0241b496762049496efeca5d3027c4c",
        "b45e3d7b1ae2c749e7532ecfe7b108b4e3d2b049"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 10 17:14:57 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Feb 10 17:14:57 2022 +0000"
      },
      "message": "Merge \"Use Tiramisu instead of T in supported_build_releases\" am: 52aad81d45 am: fcb871ac39 am: 5bf9b0691e am: b45e3d7b1a\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/1979466\n\nChange-Id: Ie9a5421b8e38f0643c5ea78ce75cf38ae85c02a5\n"
    },
    {
      "commit": "e7babdbfe14abb57aacd36f8d92a8af9efaa7a97",
      "tree": "4f696f53fc3115237499e88ad6d0bb842bc7a367",
      "parents": [
        "db07f002b8dae61878ed34b62c039da52df6f346"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 10 13:06:54 2022 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 10 13:06:54 2022 +0000"
      },
      "message": "Use Tiramisu instead of T in supported_build_releases\n\nMake this consistent with how code names are used in the rest of Soong.\n\nBug: 204763318\nTest: m nothing\nChange-Id: I1f2f40310df9d619db6aaaad3ed7339bb5e79194\n"
    },
    {
      "commit": "cd814286bc2d6d54309863faacf93cb7663e3599",
      "tree": "8585ca9f344ea1f0f40d89d2742b801471424b4b",
      "parents": [
        "41ab49899492b778e18cbfb0c5b897dc69eddd24",
        "cbe9579d1364082bae2df821e3def60b725e2700"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 07 16:47:29 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Feb 07 16:47:29 2022 +0000"
      },
      "message": "Merge \"Allow installing boot images outside of APEX for prebuilt.\" am: 210957500c am: fd08d7e9a5 am: 941eaf9fa1 am: cbe9579d13\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/1964908\n\nChange-Id: I85428312f74919580a4c177d637f917cf6211639\n"
    },
    {
      "commit": "210957500c9565740a3ec09d18444de59275f700",
      "tree": "33d751478cefd36d75e1b3da9b9d5c109fc963a5",
      "parents": [
        "2d299822653b1af7c9eaf141cf673b6db782f45b",
        "e6e90db00a6923de7f446e08625989bb0bc20ea0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 07 15:58:36 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 07 15:58:36 2022 +0000"
      },
      "message": "Merge \"Allow installing boot images outside of APEX for prebuilt.\""
    },
    {
      "commit": "e6e90db00a6923de7f446e08625989bb0bc20ea0",
      "tree": "621e443f8cb05a48d8a2fea4186a789f6604b125",
      "parents": [
        "620dc3f4f9893196036257844b8727e0043d50e5"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Fri Jan 28 14:58:56 2022 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Fri Jan 28 15:08:06 2022 +0000"
      },
      "message": "Allow installing boot images outside of APEX for prebuilt.\n\nThis change is similar to aosp/1947127, but for prebuilts.\n\nAfter this change, if `bootImageConfig.installDirOnDevice` is set to a\npath outside of the APEX, the build system will build a boot image from\nthe dex files and the profile extracted from the prebuilt APEX.\nOtherwise, it keeps the current behavior: extracting the boot image from\nthe prebuilt APEX.\n\nThis is a no-op change. Current behavior is not affected.\n\nBug: 211973309\nTest: m nothing\nTest: -\n  On internal master:\n  1. Patch aosp/1947128.\n  2. Patch ag/16743847 and ag/16746804.\n  3. m SOONG_CONFIG_art_module_source_build\u003dfalse com.google.android.art\n  4. See the boot image being installed in `/system/framework/\u003carch\u003e`.\nChange-Id: I24ca525309fecaf3ab7a67960fbf118cd00ecd1d\n"
    },
    {
      "commit": "029d01c1588a5da87d22f7c04b75e13db12e51e6",
      "tree": "fdeea6a8f26a592eea07bb77c13d23b7321ee1d5",
      "parents": [
        "11ac9cb6e62a1a0b36ec06d4ace20e5fb312ab63",
        "c85877030d629f21b52dfdfc26aa859d89e28f5b"
      ],
      "author": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Fri Jan 28 10:51:31 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jan 28 10:51:31 2022 +0000"
      },
      "message": "Merge \"Add special case for test-only module in configuredJars method\" am: e4c255cb04 am: f4ddb097e5 am: b30ad5c950 am: c85877030d\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/1960850\n\nChange-Id: If0bfc07720e517139f93f0e59d34847e77cd4f8b\n"
    },
    {
      "commit": "561c7765ded4a5e52420c2f07863e83b4f0bf984",
      "tree": "2b50cde0fc9420afc335d5273e51ee1d9704dffe",
      "parents": [
        "2d305010af8f36a6b5d45560f5304094a3e0a765"
      ],
      "author": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Thu Jan 13 14:05:15 2022 +0000"
      },
      "committer": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Wed Jan 26 18:48:07 2022 +0000"
      },
      "message": "Add special case for test-only module in configuredJars method\n\nSame pattern used for com.android.sdkext / test_framework-sdkextensions\n\nTest: m nothing\nTest: also tried this with related CLs that make use of this\nfunctionality\n\nBug: 195732042\nChange-Id: I5adfb0e8650e2e262bf646e56b29965798d0a42f\n"
    },
    {
      "commit": "594ed5022a1a6cb53d06b2940546cd1ff6b5f61f",
      "tree": "661141ee97d0c7a51e79262b87ccd43e1dc10eed",
      "parents": [
        "437507cd19fd65e217406e73eedaca9cf03eed40",
        "91c7d554897b8106e26d189a27d27976ec16fb15"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Fri Jan 14 18:51:40 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jan 14 18:51:40 2022 +0000"
      },
      "message": "Merge \"Allow installing boot images outside of APEX.\" am: 0cd2a0e2bf am: c1744ee0a0 am: d437de134a am: 91c7d55489\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/1947127\n\nChange-Id: Id50d66720662cf5e06b2a8441feab2c5300aaf60\n"
    },
    {
      "commit": "6decef916c4a40855b506582620351a729ad76ea",
      "tree": "6eb5815015ba8b16c7a045dbf5cc8920752dc710",
      "parents": [
        "9ab9437b40564c25a0f4dfc71acfd117dc1d34dc"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Jan 12 17:56:19 2022 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Jan 13 14:50:05 2022 +0000"
      },
      "message": "Allow installing boot images outside of APEX.\n\nAfter this change, `bootImageConfig.installDirOnDevice` can be set to a\npath outside of the APEX, in which case, the boot image will not be\ninstalled in the APEX. Instead, it will be installed to the given path\nby Make.\n\nThis is a no-op change. Current behavior is not affected.\n\nBug: 211973309\nTest: m nothing\nTest: -\n  1. m com.android.art\n  2. See the boot image still being installed in the ART APEX.\nTest: -\n  1. Change `installDirOnDevice` of the ART boot image config to\n     `system/framework`.\n  2. See the boot image being installed in `/system/framework/\u003carch\u003e`.\nChange-Id: Ib13b17cc9e94dc5754c9b51b04df3307323b8783\n"
    },
    {
      "commit": "f297422758dced33e9c10ebc1f11595552ddc2c5",
      "tree": "a1f840431c9f9fe4ee92e32b38960e0fba7e8c6e",
      "parents": [
        "db945439c91147b0a311634bfbd0c4ca9019a802",
        "aa08d0e888584b48a98036ee6810101ef95c09c9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 08 16:43:07 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 08 16:43:07 2021 +0000"
      },
      "message": "Merge \"Stop installing a profile into an APEX if profiles are disabled.\" am: edd6fde587 am: 7e556310b9 am: 1643216aff am: aa08d0e888\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/1913479\n\nChange-Id: I3fbbd5032990f1646d242d8ee364daca65394571\n"
    },
    {
      "commit": "29e35e115d70423635661f3b2387301f3ce1df62",
      "tree": "1ffd881289065ce789ed0dd7ec9dbda661f2d581",
      "parents": [
        "939cb7b028aaa8e8e142293a40213feb31e4d567"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Dec 08 10:48:35 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Dec 08 11:05:19 2021 +0000"
      },
      "message": "Stop installing a profile into an APEX if profiles are disabled.\n\nBug: 209630530\nTest: art/tools/golem/build-target.sh\nChange-Id: I0ac4e1860a47da20626b423b9b1f62dd49259deb\n"
    },
    {
      "commit": "204d1118650c2a11cf6ab21e08941a5604d3e9c2",
      "tree": "bf89988385a6a00d0de617ef2adc7376041df8a8",
      "parents": [
        "cd2b012291b50dea8908e2dd23dcf008c57d8c61",
        "5195a30de94d9434ecbb943e2662b211715c19a4"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Dec 07 16:29:34 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Dec 07 16:29:34 2021 +0000"
      },
      "message": "Merge \"Add ART boot image profile to the ART APEX.\" am: e6f63be764 am: 255734a03a am: c0adf3ba1c am: 5195a30de9\n\nOriginal change: https://android-review.googlesource.com/c/platform/build/soong/+/1904290\n\nChange-Id: I9ceaeca0de9f290a41ba416eb862b7be147cb874\n"
    },
    {
      "commit": "49b1eb6b045156c6481df584fdd21348a9df3383",
      "tree": "5d06908972d9bc95bcc587bd658351ae11d2c860",
      "parents": [
        "7c721018bba97bd2134b35ca8b851478530f2953"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Fri Nov 26 18:09:27 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Fri Dec 03 20:02:10 2021 +0000"
      },
      "message": "Add ART boot image profile to the ART APEX.\n\nWe will need the profile when we generate the primary boot image on\ndevice.\n\nBug: 203492478\nTest: Run `banchan com.android.art x86_64 \u0026\u0026 m` and see\n  `$ANDROID_PRODUCT_OUT/apex/com.android.art/etc/boot-image.prof`.\nTest: Run `lunch aosp_cf_x86_64_phone-userdebug \u0026\u0026 m` and see both\n  `$ANDROID_PRODUCT_OUT/apex/com.android.art/etc/boot-image.prof` and\n  `$ANDROID_PRODUCT_OUT/system/etc/boot-image.prof`, in different\n  sizes.\nTest: Start Cuttlefish with the built image and see both\n  `/apex/com.android.art/etc/boot-image.prof` and\n  `/system/etc/boot-image.prof` on device.\nChange-Id: Id879dc49b234133dfbb9563814328661a1f4a6c0\n"
    },
    {
      "commit": "46679cdbf32cf07dd93fd48fd1de9b74d3d2bdce",
      "tree": "df73a3c800ca327d4f0ddf3e9a2eacec2f7a8e98",
      "parents": [
        "09ac01aa9db182eadfa4f8a97015bddf7202e3f5",
        "5979996e64e37d6fa1aa24a1602627042c8e82be"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 02 17:33:20 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 02 17:33:20 2021 +0000"
      },
      "message": "Merge \"Allow skipping android.car-module library in PRODUCT_APEX_BOOT_JARS\""
    },
    {
      "commit": "7b385c567714837acf457360111c4e7300d9d8bb",
      "tree": "ef7609e1729954d9b36d3ed918d2a9a75a835870",
      "parents": [
        "d64ab233e45cf4267b3aea5f29869a858a53c48b"
      ],
      "author": {
        "name": "Samiul Islam",
        "email": "samiul@google.com",
        "time": "Mon Oct 11 22:47:13 2021 +0100"
      },
      "committer": {
        "name": "Samiul Islam",
        "email": "samiul@google.com",
        "time": "Thu Oct 28 06:12:48 2021 +0100"
      },
      "message": "Add exemption for test_framework-apexd and test_service-apexd jars\n\nFor testing purpose, we need to add java libraries to bootclasspath and\nsystemserverclasspath that are not present in PRODUCT_APEX_BOOT_JARS and\nPRODUCT_APEX_SYSTEM_SERVER_JARS.\n\nCurrently, we can\u0027t unconditionally add all the contents to the config\nfor test APEXs. Until a formal way is introduced, hardcoding the\nartifact in the build system like how it\u0027s done for\ntest_framework-sdkextensions.\n\nBug: 187444679\nTest: atest ApexTestCases\nTest: atest StagedInstallInternalTest\nChange-Id: I1f7b01a57bc9c46163e025de2ab00e671a42b202\n"
    },
    {
      "commit": "5979996e64e37d6fa1aa24a1602627042c8e82be",
      "tree": "411207a9ad31868ba16944134f1200b2fe5a861a",
      "parents": [
        "e4723cdbf9ab984c46723710c365891e564b7505"
      ],
      "author": {
        "name": "Keun young Park",
        "email": "keunyoung@google.com",
        "time": "Thu Oct 14 15:42:04 2021 -0700"
      },
      "committer": {
        "name": "Keun-young Park",
        "email": "keunyoung@google.com",
        "time": "Tue Oct 19 13:13:28 2021 +0000"
      },
      "message": "Allow skipping android.car-module library in PRODUCT_APEX_BOOT_JARS\n\n- The library is added to bootclass path only for car product\n  through com.android.car.framework apex module\n- Ignore it even if it is not in PRODUCT_APEX_BOOT_JARS for\n  non-car builds\n\nBug: 202345178\nBug: 202896428\nTest: test boot up for non-car build\nChange-Id: I4ba86b4c7f4d4005add9bb5c415aed39f119af0c\n"
    },
    {
      "commit": "1e18e98b14855689b972a027d3ee8d175c5f0fcf",
      "tree": "1dd725ba561033fe818acbf01a6219683c449f1a",
      "parents": [
        "191be3a186a0face85909b92b28e3dc8a27940be"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Aug 03 15:42:27 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Oct 05 15:47:05 2021 +0100"
      },
      "message": "Allow implementation details to be excluded from signature patterns file\n\nPreviously, the signature-patterns.csv file (which was output in an sdk\nsnapshot) included implementation details, e.g. the names of classes\nthat are not part of any API, including the hidden API. This change\nallows a bootclasspath_fragment module owner to customize the generated\nsignature patterns file to remove as many implementation details as\npossible from the sdk snapshot. That means that implementation only\nchanges would not require that sdk snapshots be updated in sync with\nthe corresponding APEX.\n\nModule owners can remove implementation in the following ways:\n1) Limit the number of packages that are treated as split packages by\n   explicitly specifying the split packages in the split_packages\n   property. A split package is one whose classes are provided by\n   separate bootclasspath_fragment modules and so the signature\n   patterns has to include every class in that package provided by a\n   specific bootclasspath_fragment module, including implementation\n   classes, instead of just listing the package.\n\n   The default is to treat all packages as being split, so if no\n   split_packages is specified then it defaults to [\"*\"] which matches\n   all packages. Assuming that no package was split unless specifically\n   stated would require that all the modules that had split packages\n   explicitly list them before this change could be submitted as\n   without them this change would break the build.\n\n   Once all existing modules with split packages have been updated to\n   include them then the default may be changed.\n\n2) Adding package prefixes for any hierarchy of packages that are\n   owned solely by that bootclasspath_fragment. This removes the need\n   to list the packages in that hierarchy, including implementation\n   specific packages.\n\nBug: 194063708\nTest: atest --host verify_overlaps_test signature_patterns_test\n      m out/soong/hiddenapi/hiddenapi-flags.csv\n      - manually change files to cause difference in flags to check\n        that it detects the differences.\nChange-Id: If2f90cfc41b6fff9fa4ac8b9d4973110938b9392\n"
    },
    {
      "commit": "191be3a186a0face85909b92b28e3dc8a27940be",
      "tree": "6842811bfc3f15132fd1e73203b6acfd949af34a",
      "parents": [
        "6e06f911a573c61b6dd529fdbc1d9fafe4bfa50a"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Aug 10 16:14:16 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Oct 05 15:27:42 2021 +0100"
      },
      "message": "Retry: Separate hidden API flags needed in sdk snapshots for S and T\n\nPrevious change that was reverted: https://r.android.com/1835222\nAn additional test was added that revealed a bug in the previous change\nwhich has been fixed here.\n\nPreviously, the behavior of the stub_flags and all_flags properties\nwas different between S and T. In S they contained paths for the\ncomplete set of stub flags and all the encoded flags. However, in T\nthey contained filtered sets of flags which if used in S would prevent\nbuild checks from detecting possible inconsistencies. Also, a new\nsignature_patterns property was added in T that is not supported in S.\n\nThis change creates separate properties/files for T and reverts the\nbehavior of the properties/files that were added in S back to how they\nbehaved in S. The new properties are called filtered_stub_flags and\nfiltered_flags.\n\nThe S and T properties are tagged with the appropriate\nsupported_build_releases tag to ensure that they are only output when\nspecifically targeted.\n\nBug: 197842263\nTest: m nothing\nChange-Id: I1ce0a3d6623dabf73e32af1a7457b9b444fc3b7c\n"
    },
    {
      "commit": "8194d61ae00bee17f9a7f3b42b4db5717005a006",
      "tree": "63eb24a5ec64b8c7ca2c1f90d24571ae675d8a2d",
      "parents": [
        "ba68c936305eeec354ad62192173a147eb3e6348"
      ],
      "author": {
        "name": "Salmax Chang",
        "email": "salmaxchang@google.com",
        "time": "Mon Oct 04 05:28:58 2021 +0000"
      },
      "committer": {
        "name": "Salmax Chang",
        "email": "salmaxchang@google.com",
        "time": "Mon Oct 04 05:28:58 2021 +0000"
      },
      "message": "Revert \"Separate hidden API flags needed in sdk snapshots for S and T\"\n\nThis reverts commit ba68c936305eeec354ad62192173a147eb3e6348.\n\nReason for revert: suspect to cause build break in b/201948713\n\nChange-Id: Ide3693ac1f8e24bd2f7c12857361885cb6b787ef\n"
    },
    {
      "commit": "ba68c936305eeec354ad62192173a147eb3e6348",
      "tree": "75bcb68dd8e2a9bdd965ab74a53b7cc70b6a9cef",
      "parents": [
        "ef2df587be53a1a58fc35f195a4226170df17dbb"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Aug 10 16:14:16 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Oct 01 17:28:13 2021 +0100"
      },
      "message": "Separate hidden API flags needed in sdk snapshots for S and T\n\nPreviously, the behavior of the stub_flags and all_flags properties\nwas different between S and T. In S they contained paths for the\ncomplete set of stub flags and all the encoded flags. However, in T\nthey contained filtered sets of flags which if used in S would prevent\nbuild checks from detecting possible inconsistencies. Also, a new\nsignature_patterns property was added in T that is not supported in S.\n\nThis change creates separate properties/files for T and reverts the\nbehavior of the properties/files that were added in S back to how they\nbehaved in S. The new properties are called filtered_stub_flags and\nfiltered_flags.\n\nThe S and T properties are tagged with the appropriate\nsupported_build_releases tag to ensure that they are only output when\nspecifically targeted.\n\nBug: 197842263\nTest: m nothing\nChange-Id: Iec8b9c539796c507245b69c0aed980fde6d8694f\n"
    },
    {
      "commit": "4482560cc73f16f09eecda42751cf2f8dc72e7de",
      "tree": "21b3906c4fa5b2844bc9bb7527e26a4d0d6df17e",
      "parents": [
        "8be1e6db1640d51ca4478fec2c4f20d71b115734"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Sep 17 01:44:12 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Sep 23 17:19:55 2021 +0100"
      },
      "message": "Consolidate the code to resolve a deapexer module dependency.\n\nIt will get more logic in upcoming CLs.\n\nAdd a property to DeapexerInfo for the APEX name, for use in error\nmessages.\n\nTest: m nothing\nBug: 192006406\nChange-Id: I957f3df8b34543a38cde38768dac93e78132d672\n"
    },
    {
      "commit": "f7b3d0d317a974f3135312eb03e978f83b024f9e",
      "tree": "bbb014fa630440e48def4ff0d35e0fb3b8246f5e",
      "parents": [
        "b89663b7d9212b79686235b5f80976aec35668c5"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Sep 02 14:29:21 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Sep 14 17:26:14 2021 +0100"
      },
      "message": "Rename SdkMemberTypeDependencyTag to SdkMemberDependencyTag\n\nBug: 195754365\nTest: m nothing\nChange-Id: Id4ef6f8be54c60a1f269d7e7c46a8dcb715fcca4\n"
    },
    {
      "commit": "296701e35b96c232bc4c0af69cfe0e367fd54ef4",
      "tree": "8315ccc4bc1ffad392779a4efc2b08336f31cd9c",
      "parents": [
        "45de13f93dc9c859fd763b320a80fb6d740c0a62"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 14 10:29:36 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Aug 31 17:07:07 2021 +0100"
      },
      "message": "Refactor SdkMemberType.AddDependencies()\n\nReplaces the BottomUpMutatorContext parameter with a new\nSdkDependencyContext type that extends BottomUpMutatorContext. This is\nto allow the sdk to pass additional information to the implementations\nof that method to allow the behavior to be more finely tuned.\n\nBug: 195754365\nTest: m nothing\nChange-Id: I69c6d2c523934eb67d7a7e6c55c241e9b8a81773\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": "8d007e9919b02e73fa2613d6c18b980dcf5431e3",
      "tree": "c1a8ca9723d6ada90702740a20cab22b49aad114",
      "parents": [
        "67b9d61ac22cec5bb44c32fe483459144257943c"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 22 12:00:49 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Aug 06 14:11:14 2021 +0100"
      },
      "message": "Export signature patterns to sdk snapshot\n\nBug: 194063708\nTest: atest --host verify_overlaps_test signature_patterns_test\n      m out/soong/hiddenapi/hiddenapi-flags.csv\n      - manually change files to cause difference in flags to check\n        that it detects the differences.\nChange-Id: Ic819def9b0c41e3b22fb98582cd39f6d27080a32\n"
    },
    {
      "commit": "67b9d61ac22cec5bb44c32fe483459144257943c",
      "tree": "e0fc9af7c4d3fccddfb5d9d3199d1c6c1c968814",
      "parents": [
        "47c456228c7f79bccea810db1e5f8fda0a77610c"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 21 17:38:47 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Aug 06 13:40:34 2021 +0100"
      },
      "message": "Separate creation of signature patterns from overlap checking\n\nPreviously, the signatures used to select the subset of the monolithic\nflags were simply the signatures read from the modular flags file. This\nchange moves the creation of the signature list into a separate script\nthat outputs the signatures to a file and then passes the path through\nSoong from the bootclasspath_fragment modules that create it to the\nplatform_bootclasspath module that uses it to compare the modular\nflags against the monolithic flags.\n\nCurrently, the signatures are the full signatures but follow up changes\nwill replace them with patterns (hence the name) that avoids having to\ninclude implementation details in the hidden API flags that are output\nas part of a bootclasspath_fragment\u0027s snapshot.\n\nThis change moves the stub flags related code next to the all flags\nrelated code as they are treated in a similar way.\n\nBug: 194063708\nTest: atest --host verify_overlaps_test signature_patterns_test\n      m out/soong/hiddenapi/hiddenapi-flags.csv\n      - manually change files to cause difference in flags to check\n        that it detects the differences.\nChange-Id: I2855bf6d05c91b8a09591664185750361c7e644f\n"
    },
    {
      "commit": "4102c0cc47f58c5278852641ab1636920a59ab48",
      "tree": "075b77d44e1a389c5305277c2dfae7806fe6a344",
      "parents": [
        "b643c7a085de5b03c4f746812a2455fb98d88161",
        "d604b210c40772a72d6533804a4da53a480c6373"
      ],
      "author": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Mon Jul 26 17:59:36 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 26 17:59:36 2021 +0000"
      },
      "message": "Merge \"Rename UpdatableBootJars to ApexBootJars.\""
    },
    {
      "commit": "d604b210c40772a72d6533804a4da53a480c6373",
      "tree": "bfca2c5f410c2c040f90b979aaa6877de3c80b59",
      "parents": [
        "ae86338676084cf5966adf99f34e7086f9687edc"
      ],
      "author": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Wed Jul 21 14:23:52 2021 +0100"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Thu Jul 22 17:35:42 2021 +0100"
      },
      "message": "Rename UpdatableBootJars to ApexBootJars.\n\nNote that ART apex boot jars and core-icu4j are exceptions here as they\nare not part of ApexBootJars. ART apex boot jars are defined in their\nown variable, while core-icu4j is treated as a regular non-updatable\nboot jar.\n\nBug: 191127295\nTest: atest CtsClasspathsTestCases\nChange-Id: I3cea3d82ef521655a1a5ffa8cae2258ab9d08bfc\n"
    },
    {
      "commit": "54e4197da1ce6a3f04e414c8ec8552d97ac1a65e",
      "tree": "346bd56ce4e8bdadd8542d2282a77ce930006371",
      "parents": [
        "40a3f65430df6de8df63522dd07fa827b41fde69"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jul 19 13:23:40 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jul 20 19:18:13 2021 +0100"
      },
      "message": "Require prebuilt_bootclasspath_fragment to provide hidden API files\n\nPreviously, the prebuilt_bootclasspath_fragment was not required to\nprovide hidden API files as not all usages of that module provided\nthem. That should no longer be the case so this change makes the\nprebuilt_bootclasspath_fragment stricter and so now always require\nthem.\n\nBug: 194063708\nTest: m out/soong/hiddenapi/hiddenapi-flags.csv\n      - check that this does not change the contents.\nChange-Id: I3f19a1b4246f09a927c0f6b0f41b8678150d6cc2\n"
    },
    {
      "commit": "da286f4615f7e609aa3994fcb5b573b1a2435807",
      "tree": "2d926dbfd133e31c459f1ae456303e7c2e3a694c",
      "parents": [
        "f87aae535687604e102bb9da30f5da2080271ba5"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 29 11:59:23 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Jul 16 15:09:59 2021 +0100"
      },
      "message": "Make bootclasspath_fragments always perform hidden API processing\n\nPreviously, bootclasspath_fragment modules would only perform hidden\nAPI processing if they provided some stub libraries and fragments. That\nwas needed because the bootclasspath_fragment modules were added before\nSoong supported hidden API processing on all the different modules and\nbefore they all provided the necessary information that hidden API\nprocessing required.\n\nThis change stops hidden API being conditional as it is no longer\nrequired as it has been enabled on all existing bootclasspath_fragment\nmodules.\n\nBug: 179354495\nTest: m nothing\nChange-Id: I0cbf11986adff1f2f967b96f86e6bfe0e9b8b1ef\n"
    },
    {
      "commit": "a56be7d7815ad164cdd854f8fc6b1cbc3bbf1918",
      "tree": "73b1f0d822e51a23ce42c2b554657ddb1e7ae9ab",
      "parents": [
        "8fc51a8eb6ca20dbb4b65822123201568bb297f1"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Jul 02 13:00:43 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jul 06 13:45:46 2021 +0100"
      },
      "message": "Generate boot images for host from prebuilts\n\nPreviously, when building from prebuilts boot no rules were created to\nproduce the boot image files for the host, i.e. the OS on which the\nbuild was running. That caused problems with checkbuilds. No rules were\nproduced as there was no host variant of a prebuilt apex to provide\nthem.\n\nThis change restructures the code to allow the prebuilt bootclasspath\nfragment to build the host variants of the files from the dex files\nprovided by the prebuilt APEX. The generated files will not be the same\nas they would be if built from source as there is no boot image profile\nto use but it should be sufficient to satisfy the checkbuild target and\nallow for host side testing.\n\nBug: 192575099\nTest: m SOONG_CONFIG_art_module_source_build\u003dfalse droid dist checkbuild\nChange-Id: I6af00f19bb71aa18dd462f5eac6aa38e3e721023\n"
    },
    {
      "commit": "8fc51a8eb6ca20dbb4b65822123201568bb297f1",
      "tree": "58f49db4c5d0457c73870b2a3aad7e2f7d0e607b",
      "parents": [
        "452decbd88bdabe25523b3b877fcac8be2b40524"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jul 06 10:55:35 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jul 06 12:51:04 2021 +0100"
      },
      "message": "Switch boot image generation to use GetGlobalSoongConfig(ctx)\n\nPreviously, boot image generation used GetCachedGlobalSoongConfig(ctx)\nin order to get access to the GlobalSoongConfig. That required that\nsome other part of the code had called GetGlobalSoongConfig(ctx) to\ninitialize the cached value. That was left over from when the boot\nimage generation was done in a singleton which could not call\nGetGlobalSoongConfig(ctx) directly. That is no longer true.\n\nThis change switches the uses of GetCachedGlobalSoongConfig(ctx) to\nGetGlobalSoongConfig(ctx) and removes the now unnecessary call to\nGetGlobalSoongConfig(ctx) from outside the functions.\n\nBug: 192575099\nTest: m nothing\nChange-Id: I34b7b1526d072d8b09fda7caa96e381695888e16\n"
    },
    {
      "commit": "452decbd88bdabe25523b3b877fcac8be2b40524",
      "tree": "2b98fb211b0f844e6118f7e3869fe35bc7f32452",
      "parents": [
        "276fd424ad57303c951b45b2d9e6efde14af58d5",
        "56afb27fb099cb79c1537c661628db1776f1fcc3"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jul 05 12:01:46 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 05 12:01:46 2021 +0000"
      },
      "message": "Merge \"Generate boot zip file from prebuilt_bootclasspath_fragment\""
    },
    {
      "commit": "56afb27fb099cb79c1537c661628db1776f1fcc3",
      "tree": "0657fbe85bc30c503c35a0db21906c71f9c4a1de",
      "parents": [
        "4b51e27046c4cb5e2d3024d329ff1ccd13d7b767"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 01 22:04:22 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 01 22:17:49 2021 +0100"
      },
      "message": "Generate boot zip file from prebuilt_bootclasspath_fragment\n\nPreviously, the boot zip file, containing all the boot image files for\nall the supported architectures, was only created from source. It was\nnot created when building from a prebuilt_bootclasspath_fragment. That\nlead to build failures when building from ART prebuilts.\n\nThis change pulls the boot zip file creation out so that it can be done\nfor both source and prebuilt bootclasspath_fragment modules as well as\nfor the platform_bootclasspath module.\n\nBug: 192575099\nTest: m out/target/product/generic_arm64/boot.zip\n      m SOONG_CONFIG_art_module_source_build\u003dfalse out/target/product/generic_arm64/boot.zip\n      - Compare the output of the first command from before the change\n        with the output from them both after and confirm that when the\n        ART prebuilts are up to date with the source that there are no\n        differences.\nChange-Id: Ie7dd5e2ca4a865d06fd9ebf87320cf68c4d05bc3\n"
    },
    {
      "commit": "56c93e899a355311463d41e988c9ba511af14278",
      "tree": "c70289352d3461653e156a185daa0937a2a4ccb4",
      "parents": [
        "22fd032ccbe6b8352964fc01d961f0d71b20c949"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 29 20:04:45 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 29 23:35:25 2021 +0100"
      },
      "message": "Use both module name and stem name to filter updatable boot jars\n\nSometimes the stem property is set to change both the installed file\nname and the name use to filter the configured module list, e.g. when\nadding a test library to replace the standard library, e.g. test_foo\ninstead of foo.\n\nSometimes it is used just to change the installed file name.\n\nThis change uses both to filter the updatable boot jars and not just\nthe stem.\n\nBug: 180105615\nTest: m nothing\nChange-Id: I6c459fc3597b1e4f062bc9a4e52843305b538c5f\n"
    },
    {
      "commit": "280a31aac39697a069f2f2f2ee471ffafb52d2a3",
      "tree": "c10855a548f98d04703e72a296f9ccc8b03a61a8",
      "parents": [
        "d2b1e0ca92cb3f2c4b98efffd5968057af4e4320"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Sun Jun 27 20:28:29 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jun 28 10:56:43 2021 +0100"
      },
      "message": "Calculate widest stub dex jars per module\n\nPreviously, the stub dex jars for each HiddenAPIScope was created by\nmerging the stub dex jars provided by each module for that scope. Then\nthe widest stub dex jars were chosen. So, if module A provided public,\nsystem and test stub dex jars and module B provided only public then\nthe stub dex jars for each scope would be:\n* public -\u003e A,B\n* system -\u003e A\n* test -\u003e A\n\nSo, the widest API scope for which there are stub dex jars is \"test\"\nand so the widest stub dex jars would just come from module A and not\nmodule B. So, when \"hiddenapi list\" is run for module C which depends\non modules A and B it only gets given stub dex jars for module A which\nmeans that it cannot resolve all the types that C may use which can\nlead to incorrect flags being generated.\n\nThis change does not merge the stub dex jars from each module together\nand instead keeps them separate by module. The widest stub dex jars\nlist is constructed by asking each module in turn for their widest stub\ndex jars. e.g. Given the above example we would have:\n\nModule A:\n* public\n* system\n* test \u003c- widest\n\nModule B:\n* public \u003c- widest\n\nSo, the widest stub dex jars will be A\u0027s test and B\u0027s public stub dex\njars.\n\nBug: 179354495\nTest: m out/soong/hiddenapi-flags.csv\n      - make sure that this does not change the file.\nChange-Id: Ib137825ebffe94b2bf220732bae6077f7b7ac6db\n"
    },
    {
      "commit": "5cca7c44e51d0d08a5ea842d0f9870a772529dec",
      "tree": "90249308272ae014f7b0f7a4f434cb5f2ffbc1ef",
      "parents": [
        "136fd5554d64d525fb1af9e72e76b854900173f6"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed May 26 10:16:01 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Jun 25 16:20:19 2021 +0100"
      },
      "message": "Support hidden API processing for modules that use platform APIs\n\nPreviously, hidden API processing could only be done by those\nbootclasspath_fragment modules that either did not depend on any other\nfragments (e.g. art-bootclasspath-fragment) or only depended on APIs\nprovided by other fragments (e.g. i18n-bootclasspath-fragment). That\nmeant that modules like com.android.os.statsd-bootclasspath-fragment\nthat depended on APIs provided by parts of the platform which are not\nyet part of another bootclasspath_fragment could not perform hidden\nAPI processing.\n\nThis change adds support for a bootclasspath_fragment to specify the\nadditional stubs needed to perform hidden API processing. It adds a new\nadditional_stubs property that can be used to specify the additional\nstub libraries.\n\nMost bootclasspath_fragments that need to use the property will need\naccess to the APIs provided by the android-non-updatable.* libraries.\nRather than have each fragment explicitly specify the correct module\nfor each scope it treats \"android-non-updatable\" as if it was a\njava_sdk_library that can provide different jars for each scope.\nSoong will handle mapping that to the correct android-non-updatable.*\nmodule.\n\nBug: 179354495\nTest: m out/soong/hiddenapi/hiddenapi-flags.csv \\\n        out/soong/hiddenapi/hiddenapi-index.csv \\\n        out/soong/hiddenapi/hiddenapi-stub-flags.txt \\\n        out/soong/hiddenapi/hiddenapi-unsupported.csv\n      - make sure that this change does not change the contents.\n      m TARGET_BUILD_APPS\u003dCalendar nothing\nChange-Id: Ia8b79830ed0e6d42100de03d76b0c51b7f6c8ade\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": "b30905019f3e5839411fe119edcf001c1505d118",
      "tree": "43260a3f771bdf5faad3e1807275791e7eca3bf5",
      "parents": [
        "f93d38835cb1e52034a1da83067bd3622418aa03"
      ],
      "author": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Tue Jun 15 17:49:10 2021 +0100"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Tue Jun 22 20:03:54 2021 +0100"
      },
      "message": "Append platform classpath proto configs with missing apex jars.\n\nAny apex classpath fragment that doesn\u0027t generate its own classpaths\nproto, must still propagate it\u0027s boot jars for the platform classpath\nfragment to include for complete CLASSPATH variables on device.\n\nBug: 191127295\nTest: atest CtsClasspathsTestCases derive_classpath_test\nChange-Id: I93687f69006741fcd66eb6e04891a4b4bbcc3b47\n"
    },
    {
      "commit": "348f20be0e57756043d453fbb673f91e43e8a645",
      "tree": "2e88d736bbf4a3b0fd8da9904dd8978c851e0768",
      "parents": [
        "9e2dcbd08000ffc5d28a9f7d3681eeae66072818",
        "b0c1f0c45a2d105fdcd6cda3f3f841c2a7addf2c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 21 07:17:28 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 21 07:17:28 2021 +0000"
      },
      "message": "Merge \"AIDEGen: Collect dependencies info from APEX module.\""
    },
    {
      "commit": "b4bbf2ca10cc8509e3ae0ab104e9e3b55861831b",
      "tree": "fdc943b8b60fee40016d31a2eae6f847fc619a3c",
      "parents": [
        "fef5500a766d1f515ff19038e8e0e8f606e07287"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 15:59:07 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 15:59:07 2021 +0100"
      },
      "message": "Simplify deapexer support\n\nUses the apex relative path to the file as the identifier that is used\nto obtain the path to the corresponding file extracted from the apex.\nThat is instead of a special constructed string id.\n\nBug: 177892522\nTest: m nothing\nChange-Id: I5dc77c8fb272bac289b8891d1eac801e541af1f5\n"
    },
    {
      "commit": "fef5500a766d1f515ff19038e8e0e8f606e07287",
      "tree": "7b26aea6ab65d764773299871c257aa50934531f",
      "parents": [
        "f45966f35b10be5e53111d9f5f29fdb4cdf140fd"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 14:56:05 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 14:56:05 2021 +0100"
      },
      "message": "Remove javalib special case in createDeapexerModuleIfNeeded\n\nRemoves the special case in createDeapexerModuleIfNeeded for handling\njava libraries and just get the Import and SdkLibraryImport module\ntypes to implement RequiredFilesFromPrebuiltApex instead.\n\nBug: 177892522\nTest: m nothing\nChange-Id: I5cc341b5b4168b8eb196f72273a00d498de6856f\n"
    },
    {
      "commit": "5466a3699c550d1fa67066db48951b765156be4f",
      "tree": "30cde9fc53d492831bd50bc6659ddc1e83543297",
      "parents": [
        "ce918b0278628afe4de73b09f73bac777d545b7e"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jun 07 10:25:31 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 23:05:43 2021 +0100"
      },
      "message": "Export boot image files from prebuilt_apex/apex_set\n\nPreviously, the prebuilt art-bootclasspath-fragment did not provide any\nboot image files. That meant it was impossible to build any module that\nrequires access to those files from prebuilts, e.g. any module that\nneeds to be dexpreopt-ed.\n\nThis change enables that module to retrieve those files from the\nprebuilt_apex.\n\nBug: 177892522\nBug: 189298093\nTest: m nothing\n      m droid SOONG_CONFIG_art_module_source_build\u003dfalse SKIP_BOOT_JARS_CHECK\u003dtrue\n      - the previous command does not work but this change does fix one\n        of the issues reported.\nChange-Id: I1d4d9545172d79282918130df6b9aa55471bffc1\n"
    },
    {
      "commit": "ce918b0278628afe4de73b09f73bac777d545b7e",
      "tree": "d465ff4dfb5b35ce2b398cff288901d064ca72fa",
      "parents": [
        "94b2e705d1d09a4a8f5a58b6aba5024bdbae075b"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jun 07 14:33:47 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 23:05:43 2021 +0100"
      },
      "message": "Copy boot dex jars from prebuilt art-bootclasspath-fragment if preferred\n\nPreviously, the boot dex jars were only copied to the predefined\nlocations used by the build from the source art-bootclasspath-fragment\nif it was preferred, otherwise no files were copied. That caused build\nfailures when attempting to build with ART prebuilts. This change\ncopies the files from prebuilts too.\n\nBug: 177892522\nBug: 189298093\nTest: m nothing\n      m droid SOONG_CONFIG_art_module_source_build\u003dfalse SKIP_BOOT_JARS_CHECK\u003dtrue\n      - the previous command does not work but this change does fix one\n        of the issues reported.\nChange-Id: I35b37355170546daf6ecac2134d1ca9a73d0e3bc\n"
    },
    {
      "commit": "909a2fd055d0f1185d91ca7b2243745981f0e78e",
      "tree": "94903cdab5f8ac799c6aeb3c5ca15960cf3c57c8",
      "parents": [
        "975e7572328d58264bf512f5ceb51cd62a5e8811",
        "58e7586b3d8fffa63b869c421a36c69fdd30a264"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 16:03:51 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 17 16:03:51 2021 +0000"
      },
      "message": "Merge \"Cleanup bootclasspathFragmentInitContentsFromImage\""
    },
    {
      "commit": "975e7572328d58264bf512f5ceb51cd62a5e8811",
      "tree": "1a42171bc860bef020bd8427d835e9bcea526dca",
      "parents": [
        "419117ee89ae5cfaddf4d99b3fd5700a2c87c0da",
        "e521881bd45de0306bc2e80d5c746ae361d6ffe2"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 16:03:22 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 17 16:03:22 2021 +0000"
      },
      "message": "Merge \"Combine hidden API encoding with flag generation\""
    },
    {
      "commit": "58e7586b3d8fffa63b869c421a36c69fdd30a264",
      "tree": "bafd9a35c6ecae8d1575657b8825746f86a83b35",
      "parents": [
        "e521881bd45de0306bc2e80d5c746ae361d6ffe2"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jun 07 19:34:01 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 10:54:27 2021 +0100"
      },
      "message": "Cleanup bootclasspathFragmentInitContentsFromImage\n\nRemoves some unnecessary logic left over from previous changes.\n\nBug: 177892522\nTest: m nothing\nChange-Id: Id11e2ea8a647283af1b152b33757132e44dcd6c3\n"
    },
    {
      "commit": "e521881bd45de0306bc2e80d5c746ae361d6ffe2",
      "tree": "c5246344e27954afa2a0dd4c9e439d04e5a0eebc",
      "parents": [
        "2c891873d64171ed93b86e81b703ed913068a0fe"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jun 07 13:28:19 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 17 10:20:33 2021 +0100"
      },
      "message": "Combine hidden API encoding with flag generation\n\nPreviously, the rules to perform hidden API encoding were generated\nseparately to the rules to perform hidden API flag generation. This\nchange combines them within the (renamed) produceHiddenAPIOutput()\nmethod and makes the paths to the encoded dex files an output of the\ngenerateHiddenAPIBuildActions method alongside the paths to the\ngenerated flag files.\n\nAs encoded dex jars are now an output of the produceHiddenAPIOutput()\nmethod which is implemented for both prebuilts and source\nbootclasspath_fragment modules that necessitated the prebuilt also\nproviding paths to encoded dex files. That in turn required updates to\nsome of the tests to provide dex files from prebuilt_apex modules.\n\nSimilarly, as the produceHiddenAPIOutput() method may not be called\nfor some bootclasspath_fragment modules as they do not yet provide all\nthe information needed to perform hidden API encoding then it is\nnecessary to extract the encoded dex files produced by the modules\nthemselves. That also required a few changes to tests that did not\npreviously provide dex files.\n\nBug: 177892522\nTest: m com.android.art\n      - check that this change does not change the contents of the apex\n        file, i.e. is byte-for-byte identical.\nChange-Id: I60996a34d06ed1c87ed244ab3509621999ad86ec\n"
    },
    {
      "commit": "142ed27e32dd59db9afec59a13d49a230657f662",
      "tree": "6bde63ab8118c32cb5ae9ae50515547ccecc2e58",
      "parents": [
        "c4dc9b4f08226ff66830fcd8ec644ab82b66ca02"
      ],
      "author": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Tue Jun 15 16:21:17 2021 +0100"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Wed Jun 16 10:13:55 2021 +0100"
      },
      "message": "Rename ClasspathFragmentToConfiguredJarList methods to configuredJars.\n\nThey are internal implementation details of individual fragments.\n\nBug: 191127295\nTest: m\nChange-Id: Ib350135f5f6720741492f362f7b3203e5107772e\n"
    },
    {
      "commit": "b0c1f0c45a2d105fdcd6cda3f3f841c2a7addf2c",
      "tree": "78a6e76f17f1fec944335f79b06a29c8536255ed",
      "parents": [
        "1af9316e0a2911cea0791fbea5ff38411aabc366"
      ],
      "author": {
        "name": "bralee",
        "email": "bralee@google.com",
        "time": "Mon Jun 07 22:49:13 2021 +0800"
      },
      "committer": {
        "name": "bralee",
        "email": "bralee@google.com",
        "time": "Tue Jun 15 08:35:13 2021 +0800"
      },
      "message": "AIDEGen: Collect dependencies info from APEX module.\n\nAdd apex dependencies.\n\nBug: 188004865\nTest: 1. aidegen frameworks/base/apex/appsearch frameworks/base/apex/appsearch/testing   frameworks/base/services/tests/servicestests   frameworks/base/core/tests/coretests   cts/tests/appsearch   external/icing   vendor/google_testing/integration/tests/scenarios\n      2. The dependency graph shows it is workable to provide the result to let IDE\u0027s [Project structure] to include the service-appsearch as source directory.\nChange-Id: Ifd1548f0a86c1c73f8279e8ecea67756aeb1281e\n"
    },
    {
      "commit": "dd5993f6d41efa932c06afef71c40af446c85b4e",
      "tree": "5da286883878a9ca5fe9540c67ffc879c82d25a0",
      "parents": [
        "4dbf6cfbaec8b6ce7c6638cd455da89879d61d40"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 10 10:18:22 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jun 14 17:23:52 2021 +0100"
      },
      "message": "Avoid passing around []hiddenAPIModule\n\nPreviously, an []android.Module was converted to an []hiddenAPIModule\nthat was then used to retrieve boot dex jars. That was ok when\nobtaining the dex jar files from source modules for\nbootclasspath_fragment but does not work well for other use cases as\nit would require doing that conversion in multiple places.\n\nThis change pushes the use of hiddenAPIModule down to the methods that\nretrieve information from it which makes the methods more flexible and\neasier to reuse.\n\nBug: 177892522\nTest: m nothing\nChange-Id: Ib84aaf03d8f5a63b48232036fe4589646fc23352\n"
    },
    {
      "commit": "5f148ca7cf2e9a9478922577b7ed70b1caacb55e",
      "tree": "78ccb6689bac65eec7f8d08bc2329d9092512de9",
      "parents": [
        "bff50e2b803ede32c9b17b6b7bf3054424703bf5"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jun 02 17:24:22 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 10 14:28:10 2021 +0100"
      },
      "message": "Make copyBootJarsToPredefinedLocations simpler and less fragile\n\nPreviously, copyBootJarsToPredefinedLocations relied on all its\nparameters having the same length and the same order. That made it\nquite fragile as changes to one of the parameters without corresponding\nchanges to the other would cause failures. It also combined the\nretrieval of the boot dex jars from the modules, handling of missing\nboot dex jar files and the generation of the rules to copy the files.\n\nThis change separates the retrieval of boot dex jars and handling of\nmissing files from the copying of those files while at the same time\nmaking the function less fragile by replacing the three ordered\nparameters with two maps that shared common keys.\n\nBug: 179354495\nTest: m nothing\nChange-Id: Idbcd24a7e8af89f7895a20aeddc58502dcbaad03\n"
    }
  ],
  "next": "524c82c01acbd1f45a401d3444354cd69dd342e3"
}
