)]}'
{
  "log": [
    {
      "commit": "d7a4da1f357e089c5d150559d8d2f2ddb7c4958a",
      "tree": "bde88500eac9eda86031cfe8536241dfc79e12d2",
      "parents": [
        "2cb2527d4136f681b8e79352c546e65431ceb10c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 15:05:49 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 14:16:27 2021 +0000"
      },
      "message": "Revert \"Support pass BCP art/vdex/oat files by FD\"\n\nThis reverts commit b1adfc2a0570f52d74b8a4acdd578efc1790995b.\n\nReason: reports from Realtime Stability Insights (RTSI) infra.\n\nBug: 193720426\nFix: 194481664\nFix: 194475273\nFix: 194478073\nTest: TH\nChange-Id: I421d0b4a613de5ac8fb2830fa27206edb5428374\n"
    },
    {
      "commit": "b1adfc2a0570f52d74b8a4acdd578efc1790995b",
      "tree": "c5058390901f2abbb0e281d8403be2b8db02c337",
      "parents": [
        "71f763399e95676d665e071623bccb714acf88b4"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jul 21 10:44:06 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 23 01:47:27 2021 +0000"
      },
      "message": "Support pass BCP art/vdex/oat files by FD\n\nThis is currently used by odrefresh.\n\nMain runtime changes are:\n\n1. When reading the image header, also tries to read from the FD if\n   provided.\n\n2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.\n   This allows them to be opened (in case if the file is not accessible\n   by path) in LoadComponents.\n\n3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file\n   is not accessible by path.\n\n4. The new FDs are passed from new runtime args,\n   -Xbootclasspath{art,vdex,oat}fds.\n\nIt is used in odrefresh to pass the previous output of BCP extensions to\nbe used in the next phase, system server compilation.\n\nBug: 193720426\nTest: odrefresh --use-compilation-os\u003d10 --force-compile # exit 80\n      odrefresh --verify # exit 0 (was 79 previosly)\nTest: Verify the checksum of output files are the same, with\n      --use-compilation-os or not, i.e. regardless where the compilation\n      happens\nTest: mma in art/\nChange-Id: I209085f047c42823ff20415804f65a9b32378b40\n"
    },
    {
      "commit": "d61b021fffc641906d1c531a233b62a8f66c184a",
      "tree": "2e81f49ce6986fbc069286d28b48f41b19dce0c6",
      "parents": [
        "9e050ab1a061d9660eb0c1daa01a823ad75b0f05"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Jul 08 10:20:26 2021 +0800"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Jul 14 23:37:32 2021 +0000"
      },
      "message": "Trigger on-device AOT compilation for system_server on mainline update.\n\nBefore this change, AOT compilation for system_server are triggered only\non ART mainline update, and only the system_server components in /system are compiled.\n\nAfter this change, AOT compilation for system_server are triggered on\nany mainline update that touches $BOOTCLASSPATH or\n$SYSTEMSERVERCLASSPATH, and the system_server components in mainline\nmodules are also compiled.\n\nTest: manual - 1. Modify a mainline module (such as com.android.wifi).\n    2. Install the modified module on a device and reboot the device.\n    3. See if system_server components are recompiled (while boot\n    classpath components are not).\nTest: atest odsign_e2e_tests\nTest: art/tools/run-gtests.sh -j8 apex/com.android.art/bin/art/x86_64/art_libartbase_tests\nTest: atest art_odrefresh_tests\nBug: 189467174\nChange-Id: Icaba5471e9f62fd035f0a24d662ecfaf2e064cab\n"
    },
    {
      "commit": "20b3c57170206febd53a20287bf6b7d5e620b62d",
      "tree": "b00ce13aa9fd9069dcf922f23901a6e70e9cb539",
      "parents": [
        "2ec38232c632a2c7f3069f02d5c4d7036f14575b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 08 20:41:48 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 09 14:00:00 2021 +0000"
      },
      "message": "odrefresh: add test for samegrade ART APEX install\n\nAdds a test that a samegrade ART APEX installation triggers\nrecompilation of AOT artifacts.\n\nThe test exposed situation where the first log entry is incorrectly\nlogged as zero which is also fixed here.\n\nBug: 192647837\nTest: atest odsign_e2e_tests\nTest: atest art_odrefresh_tests\nChange-Id: Iefb0fbbca119ed3e47bc17caa2ef8467b241b26c\n"
    },
    {
      "commit": "79f874d287cb314dcf3fb8a78122d4296e91bd42",
      "tree": "7f2c9bd81b107e4acda51dcd7a133153980961de",
      "parents": [
        "4f623272bdf76d0308af4e45a71fb5a728d4f0f1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 07 08:28:31 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 08 14:37:36 2021 +0000"
      },
      "message": "odrefresh: add support for lastUpdateMillis as part of version check\n\nThis is to support samegrade updates for module evaluation.\n\nBug: 192647837\nTest: atest art_standalone_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: Ied43ebdcc4b2ec57e337e709970fab948cf5f992\n"
    },
    {
      "commit": "2c9667363ba0f8178a077332a8ec1c74426fdc70",
      "tree": "b3b8f5c32c423e10f1419cd3fd4d35fdd0e4ac94",
      "parents": [
        "ea936c02701dc7ac773f5c2272dafde5e1967ea0"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Fri Jul 02 12:04:15 2021 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Jul 05 09:41:08 2021 +0100"
      },
      "message": "Don\u0027t delete everything in apexdata/com.android.art.\n\nRather than deleting everything we now specifically delete the\nartifacts directory when validation fails or forcing compilation. This\nallows the pending directory, with CompOS artifacts, to be preserved\nand used as an alternative.\n\nAs a slightly gratuitous bonus, delete the staging directory when\nwe\u0027re done with it, rather than just its contents.\n\nTest: Manual, create pending directory, see it preserved.\nTest: atest --host art_odrefresh_tests\nTest: Presubmits\nBug: 190166662\nChange-Id: Ic6f0cb15eb22b3a235d9df90653c6e6d63ea80bc\n"
    },
    {
      "commit": "156a8618372cda12eaff321c545d9126df225c0d",
      "tree": "c68e18a57ec9496abb2b5146a9b6965f04a36b9c",
      "parents": [
        "ac97f3e110eb57824a2560888406e31cb157bd7b"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 17 12:47:17 2021 -0700"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Jun 22 08:13:48 2021 +0000"
      },
      "message": "odrefresh: don\u0027t stage profile if not exists\n\nThe code staged the file even if the open failed. This causes a null\npointer dereference later in JoinFilesAsFDs (only used in the\nCompilaiton OS case).\n\nBug: 186132447\nTest: odrefresh --use-compilation-os\u003d10 --force-compile\n      # complete successfully with other changes\nChange-Id: I8227d863ea56e2a7071816130f6b354ac80d03ce\n"
    },
    {
      "commit": "71b2cb54099218952385c8c295dbff8be81263ce",
      "tree": "eb63230d86e92b12af34fc2ea3d3290352855bf0",
      "parents": [
        "885929fda9e1247910aa1f68f982d098fb84c843"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 16 20:08:16 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 17 08:47:26 2021 +0000"
      },
      "message": "odrefresh: fix instruction set selection.\n\nRefactoring led to the instruction-set argument being dropped in\nodrefresh. This manifested itself as failures in the odsign_e2e_tests\nas the secondary zygote was running in jit-zygote mode.\n\nRe-enables the verifyGeneratedArtifactsLoaded test and enforces a\ndeterministic order for the odsign_e2e_tests.\n\nBug: 191113888\nTest: atest odsign_e2e_tests\nChange-Id: I5308a6cf9ddf16e2991bfaf9c6f27bd7e8ff0aff\n"
    },
    {
      "commit": "885929fda9e1247910aa1f68f982d098fb84c843",
      "tree": "1cee9495c84311c4acc9bfd3e01cb71c1b6f23bf",
      "parents": [
        "869746ef31936f09a93717ee1ef3960f8fb6dd69"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jun 16 15:11:16 2021 -0700"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 17 08:45:28 2021 +0000"
      },
      "message": "odrefresh: Fix mis-placed delimiter when joining FDs\n\nBroken example: [3,4,5] -\u003e \"34,5,\"\n\nBug: 187327262\nTest: Start a VM; odrefresh --use-compilation-os\u003d10 --force-compile\nChange-Id: I32d6289889645f68b4e82fdca1a770713225c357\n"
    },
    {
      "commit": "b3a4e01448a32b2dc53cad8a981ed7c75d12d2cc",
      "tree": "6bf28066ed85e965d1bc141abcdac5c3a5a72a7f",
      "parents": [
        "0be3da60fa382ded4a3f9b714d9da4e22667e15a"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 12:48:10 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 16 16:52:52 2021 +0000"
      },
      "message": "odrefresh: Support option to run dex2oat in PVM\n\npvm_exec is an executable to run a command remotely, assuming the code\nis also in the VM. Since the input files may not be available in the VM,\npvm_exec internally takes over the FDs and becomes a file server. In the\nremote execution setup, dex2oat receives the same FD numbers, and relies\non \"authfs\", a FUSE client that talkes to the file server, to translate\nthe read/write.\n\nBy wrapping dex2oat with pvm_exec, this change makes it possible run\ndex2oat remotely, though not necessarily securely. For example, a\ncommand is not a secure interface since it allows unlimited numbers of\ncombination of input paramters (or even allow manipulating the\ncompilation, e.g. by adjusting Java property).\n\nWe\u0027ll need to change the interface later. But in the meantime, this\nchange will allow us to iterate more easily.\n\nBug: 187346876\nTest: 1. Start a PVM with ART and CompOS apex mounted\n      2. /apex/com.android.art/bin/odrefresh --use-compos\u003d$CID \\\n         --force-compile\n      # odrefresh returns successfully (though much slower right now)\nChange-Id: I722e5290246e180a89f6d42d9a6bc10c79dc0d1a\n"
    },
    {
      "commit": "0be3da60fa382ded4a3f9b714d9da4e22667e15a",
      "tree": "3e46c14034576a30f3ddfc586bf4a0f8f5758c73",
      "parents": [
        "f667c33fc88356aa80d455430752719aaae57717"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 12:37:03 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 16 16:52:52 2021 +0000"
      },
      "message": "odrefresh: pass BCP JARs as FDs to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile  # succeed\nTest: strace  # observed less openat(2) of JARs\n\nChange-Id: I8eec85374bcf3135ec2be3f542bb82dd62fd010d\n"
    },
    {
      "commit": "4ab592315e766876d2ae96f28f05bab9ae46c160",
      "tree": "70434b91f12a6fe7d52581446ce879732ea07900",
      "parents": [
        "b10668cb6a34398eb720f9a6305ff9a51b3ebfd4"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 10 12:24:02 2021 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 15:08:21 2021 +0000"
      },
      "message": "Add --dirty-image-objects-fd and --updatable-bcp-packages-fd\n\nAlso, let odrefresh pass the files as FD to dex2oat.\n\nReadCommentedInputFromZip is removed since it\u0027s not used at all.\n\nBug: 187327262\nTest: odrefresh --force-compile\nChange-Id: Ie9247362eebaf46ef473f84effeb6e66830d077e\n"
    },
    {
      "commit": "f761f5887918375b842e4cc62ed9cbe7521c8444",
      "tree": "5cc23ca0310d55ac2f9a1dcd8959351f1376745b",
      "parents": [
        "890f2eb950930b9054bca6a77fd19f0e6c1a9c9b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 09 10:50:57 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 10 08:00:22 2021 +0000"
      },
      "message": "Revert^2 \"odrefresh: compilation backoff\"\n\nAdds backoff logic to limit attempts odrefresh tries to compile. It\nwill always recompile if the APEX is updated or the input JARs change,\nbut if compilation fails for any reason then odrefresh backs off\nexponentially in days.\n\nRelands commit 6859ffca5ffd15128459293046590488008221ff. The\nodsign_e2e tests required updating to remove the compilation log whose\npurpose is to backoff compilation attempts in the wild.\n\nBug: 187494247\nTest: atest art_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: Id41ee875cf1ca376f8e2ae05a43d0f6f74a9995f\n"
    },
    {
      "commit": "2835c29a338bbf3c85052cfa157561d0a42043f6",
      "tree": "a0e21b1d1e8b8d37ca8678d935f13feac4415c77",
      "parents": [
        "9faf7c77ac6974e34a644d75ceddd1d5f4268bfb"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu May 27 15:32:18 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 02 19:26:31 2021 +0000"
      },
      "message": "Pass classpath loader FDs to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile  # success\nTest: strace  # no more open for such case\nChange-Id: I3e4a892663420f725b83610b21537f9443d35657\n"
    },
    {
      "commit": "ae553e0e1b26d95006aa27df4675104bfb55d49d",
      "tree": "cff192c4ec487a77f6b2564870a9338fd8b0d371",
      "parents": [
        "bdf1737bd17132525bcfdc778663123b61e97fa3"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 27 12:39:49 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 27 15:47:13 2021 +0000"
      },
      "message": "Revert \"odrefresh: compilation backoff\"\n\nThis reverts commit 6859ffca5ffd15128459293046590488008221ff.\n\nReason for revert: Break presubmits (b/189316064)\nFix: 189316064\nBug: 187494247\n\nChange-Id: I146480c01e401e5e0de8f7e0dcf1dbc9d68850f4\n"
    },
    {
      "commit": "6859ffca5ffd15128459293046590488008221ff",
      "tree": "cb43cbcd94b20208ad704a9b094de170e7f837fc",
      "parents": [
        "d196f661fae8473dedfd4b544c6873144202bc78"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 17 15:09:06 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed May 26 08:42:34 2021 +0000"
      },
      "message": "odrefresh: compilation backoff\n\nAdd backoff logic to limit attempts odrefresh tries to compile. It\nwill always recompile if the APEX is updated or the input JARs change,\nbut if compilation fails for any reason then odrefresh backs off\nexponentially in days.\n\nBug: 187494247\nTest: atest art_odrefresh_tests\nTest: manual\nChange-Id: I11fe5549038680d03df663135ed087161428f392\n"
    },
    {
      "commit": "a9f80fcd2e2aca477eab7c0e9a6fce1f9537633a",
      "tree": "fedda7c1cd0fe5e0629de5606e2d5601b3d7ea05",
      "parents": [
        "3d05e61a420e499bfc9221445237c964e0a8aa63"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 17 17:28:26 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 21 16:06:45 2021 +0000"
      },
      "message": "odrefresh: pass profile file as fd to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile # succeeded; saw expected strace\nTest: atest art_odrefresh_tests\n\nChange-Id: Ie30f70ca9740b703d5ff5ac8efb3c14cdf48bce8\n"
    },
    {
      "commit": "826e6667c4d543c5c75a4a87d7cceb43f72078d0",
      "tree": "8ae4e9c93339c61fc1c30525a448b5c8ee61f77e",
      "parents": [
        "b3bc892bfae8267c3b82bbbd4263cb368f7a3be3"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 17 15:40:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 18 22:41:46 2021 +0000"
      },
      "message": "Add --dex-fd to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile\n      (also, no longer seeing openat(2) BCP extension jars via strace)\nTest: atest art_odrefresh_tests\n\nChange-Id: Icac9ed522eae307e8e4391ba9cc59927c57c0d68\n"
    },
    {
      "commit": "8ba64c2143564063ff04fbd519e5695138ab3dd8",
      "tree": "193df95c82534e6675a299417756e5daf0d01745",
      "parents": [
        "0108f0d5c1e820d3a4bb0d90aad989b89e28784a"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon May 10 07:16:09 2021 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon May 10 07:16:09 2021 -0700"
      },
      "message": "odrefresh: Avoid string copy\n\nGetFreeSpace() takes a const std::string\u0026, so we don\u0027t need to\nuse c_str().\n\nTest: TreeHugger\nChange-Id: I8d7fd3841481d7aee2caa59ce775c8fe380aeb3d\n"
    },
    {
      "commit": "816cab342a8db032b660018d4c933032a326b5c8",
      "tree": "dff85eeb5a05c1cca9cc281751489d138175ded0",
      "parents": [
        "263c39eaef07d56a34f853320dae76ab5693c377"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 07 14:14:42 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 10 08:39:02 2021 +0000"
      },
      "message": "odrefresh: log an error if updatable_bcp_packages file is missing\n\nCompilation of system_server JARs will fail if\nupdatable_bcp_packages file is missing.\n\nBug: 187494247\nTest: manual ART APEX update\nChange-Id: I9e8ead0d42ff889bdcb99042c5c83fd581be4f75\n"
    },
    {
      "commit": "263c39eaef07d56a34f853320dae76ab5693c377",
      "tree": "e33364abe27f58f0b508131844dfc7bfbdb24aeb",
      "parents": [
        "053e1383c721b0a1c4f87b2d391ab392c64caf84"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 07 10:17:14 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 10 08:39:02 2021 +0000"
      },
      "message": "odrefresh: add compilation space checks\n\nBug: 160683548\nTest: manual\nChange-Id: Ic640da41855477bf3b6524e82efb15f384127d9e\n"
    },
    {
      "commit": "d4edf4fc8a25a1fb21a9b8e4e73303458652dbce",
      "tree": "34fbac3de4f15a2afcad9f428cca93e2f3bea770",
      "parents": [
        "61c624239ced1203d1c77cbeb5a57f9ad2c5c73d"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Apr 26 06:31:28 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 28 13:00:29 2021 +0000"
      },
      "message": "odrefresh: Avoid a couple string copies\n\nWith the new utility versions of these functions changing their\narguments from \"const char *\" to \"const std::string\u0026\", we want\nto avoid using c_str(), so we don\u0027t end up making an extra\ncopy of the string.\n\nBug: 160683548\nTest: TreeHugger\n\n(cherry picked from commit 648fefa36c37ec40060b975b893ccc57b7f6ef89)\n\nMerged-In: If547052e8292bb4d9b26ceaa27b4e5e5ca627ea3\nChange-Id: Id38387b40b0f7a4f29402fc05e5affab835c7d69\n"
    },
    {
      "commit": "957fb15e70533874f1e60da2ef89fdd0f1469a6d",
      "tree": "b288f41d4a075a3ddacbd898b240c07a2eca36f5",
      "parents": [
        "f96c9163a7dc68d750234b66cbada0b2c70c28bf"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 08 07:52:15 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 07:34:37 2021 +0000"
      },
      "message": "odrefresh: add metrics support\n\nAdds metrics to stages of odrefresh.\n\nBug: 169925964\nTest: atest art_odrefresh_tests\nTest: atest --host art_odrefresh_tests\n\n(cherry picked from commit 3d877f082636f26ad57c92e3aae1525faacff51b)\nMerged-In: I768ce5f122b0c1b839f4cdf55aa6dafb68708eb2\nChange-Id: I8355fd38c28e41b04f0ea52384061b686cb1e362\n"
    },
    {
      "commit": "f96c9163a7dc68d750234b66cbada0b2c70c28bf",
      "tree": "d6c8f98643e2280f7c52b534d7e00ca299e3d0eb",
      "parents": [
        "c182a17abb1857b6edaa7fb1fcda00595051775d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 07 10:43:01 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 07:34:37 2021 +0000"
      },
      "message": "odrefresh: move file-system utilities into odr_fs_utils.{h,cc}\n\nPreparation for metrics support which will use the same functionality.\n\nAdd tests for odrefresh file-system utilities too.\n\nBug: 160683548\nTest: atest art_odrefresh_tests\n\n(cherry picked from commit dda82d2ed4d073866f3c3da3d88ad178261c62f4)\nMerged-In: I1da2f477f51b1d445bbee3b22a9c1fb268d25e80\nChange-Id: If4b8cfdb9c68167aae07268b29140e1162af2293\n"
    },
    {
      "commit": "4b3f4d33fb9edcc35af39ec283b915cd8fac24f2",
      "tree": "aebed8d1f1b44033b2599dc89730e7eb81bc3f10",
      "parents": [
        "e1d170683b7f61f0c86c45b110889a999725c7a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 15:17:28 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 21 08:56:28 2021 +0000"
      },
      "message": "Limit odrefresh progress percent to 90.\n\nThe boot animation will handle the finish to a 100.\n\nTest: boot after an ART update\nChange-Id: I5e7691ebcc506ba971a28b546c934aab818d522f\n"
    },
    {
      "commit": "5db2fd0e535b056ccb11e137f195b311627b48ff",
      "tree": "e998887ca55772dc43a0238dff373758472e646c",
      "parents": [
        "40e53f8c4ce22196b817dddb5aa795d8bc63288a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 15:07:56 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 08:11:18 2021 +0000"
      },
      "message": "odrefresh: update progress bar when compiling.\n\nTest: update ART, visually see progress bar\nBug: 160683548\nChange-Id: Id5edb2655434d3f04fd6952f8ce892e01d2bbbb0\n"
    },
    {
      "commit": "84ebf3ca3a71cbde2607d30581c8bed7a24277ab",
      "tree": "f3834f2c8b2e4c9b2544426316bef1c87a6c9d74",
      "parents": [
        "fcbbdd4f364969afac7fc5862d0899460fba3e33"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 22 17:03:42 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 23 11:21:19 2021 +0000"
      },
      "message": "odrefresh: ensure dalvik-cache exists for cache-info.xml file\n\nEnsure ART module apexdata/dalvik-cache directory exist before writing\ncache-info.xml.\n\nMinor comment clarifications.\n\nBug: 160683548\nTest: manual, observe updated module only recompiles on initial reboot.\nChange-Id: I51e5f0bc35bc6de5ae3bfb4ce7a6ab5e0dd4fe29\n"
    },
    {
      "commit": "fcbbdd4f364969afac7fc5862d0899460fba3e33",
      "tree": "ac3642c448ccf8998c350fd2be2c8e07d7cbd4e3",
      "parents": [
        "3b2629b90106b027ed5bcb7a9c1bf98be22b5d10"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 22 17:02:05 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 23 11:21:19 2021 +0000"
      },
      "message": "odrefresh: make --compile single pass\n\nEnable single pass use of odrefresh. Using --compile now checks\nartifacts (performing any necessary cleaning) and compiles them.\n\nBug: 160683548\nTest: manual\nChange-Id: I6293a2d0709e11e475bf20e1b7971e7fbf14b779\n"
    },
    {
      "commit": "3407fb2590756bd571020e175e607c8b8c988ede",
      "tree": "dd3059ff51b2a568cd41cc36ff52ada05b359647",
      "parents": [
        "c4b9ae96c20f1c86695c1774ed77cd0acac1c543"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Mar 17 14:40:51 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 19 13:01:52 2021 +0000"
      },
      "message": "odrefresh: failure handling improvements\n\nAdd ExitCode::kCleanupFailed to report issues when removing files and\ndirectories.\n\nAdd WARN_UNUSED to important methods to ensure their return values are\nchecked.\n\nRemove LOG(FATAL) use in target code paths.\n\nRemove TEMP_FAILURE_RETRY for calls that are not interruptable\naccording to their man page documentation (fchmod, unlink).\n\nBug: 160683548\nTest: manual\nChange-Id: I9681c83d048f4dd7988e9ff7ec1caf25ed02fbec\n"
    },
    {
      "commit": "35363cf978d4d0b452cb8849041ff7dd6a6718bc",
      "tree": "7e478f10afc9cb582687d1f061f329e5a6a29be7",
      "parents": [
        "c9f4a3762b6c59714393aeca3662d96117e3b72f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 18 14:23:13 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 18 14:23:13 2021 +0000"
      },
      "message": "odrefresh: clean error message if env var missing\n\nMissing DEX2OATBOOTCLASSPATH and SYSTEMSERVERCLASSPATH environment\nvariables are non-recoverable, but fail with a clear error message.\n\nTest: TH\nChange-Id: I3c493eb75b62030c2b87f6a9a6215e9d0135caab\n"
    },
    {
      "commit": "a2e2eb187e0355314e59608dc204f68571e14069",
      "tree": "ee93a77cfbc5c756177710a9654ca5d47895b8b5",
      "parents": [
        "7c5e5c61e7c319ec88dc037f30b2ab357ec4db9a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 16 18:05:42 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Mar 17 09:26:09 2021 +0000"
      },
      "message": "odrefresh: update flags to dex2oat\n\nUpdates following performance investigation.\n\nAdds: --no-abort-on-soft-verifier-error --force-determinism\nChanges: --image-format\u003dlz4hc to --image-format\u003dlz4\nRemoves: --generate-debug-info\n\nBug: 160683548\nBug: 181943478\nTest: adb install com.android.art.apex \u0026\u0026 adb reboot \u0026\u0026 check artifacts\nChange-Id: I79f171760c25858c629fb07004246a5bd5eb4874\n"
    },
    {
      "commit": "947a8504f0ccce5e8adff2a2c96c33b0aa93c8fc",
      "tree": "ae0042bab1333da6864594e23c6dc41fc5c224a4",
      "parents": [
        "3f64940d7c6ce4d3f06ea5dbe195c244ca7a8fbc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 08 15:40:09 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 12 17:27:34 2021 +0000"
      },
      "message": "odrefresh: check artifacts using cache and filesystem metadata\n\nRenables checking of artifacts when invoked with \"--check\".\n\nReplaces the former \"--check\" code with a lightweight method based on\nartifact cache metadata and filesystem metadata. The worst case checks\ntake 60ms on aosp_blueline-userdebug.\n\nThe old \"--check code\" is now invoked with \"--verify\". This remains\nfor testing purposes and as an option for post-compilation checking.\n\nBug: 160683548\nBug: 181689036\nTest: manual module installs, reboots, deleting artifacts.\n\nChange-Id: I2a75e0fde032a8e3a29d105d8b52e1ede6cb764d\n"
    },
    {
      "commit": "8059bdb5ab41ef0beb18eabf00fee877292d8a33",
      "tree": "ad15674ff4a9bcc1b0e49c32d20b0b664bd0fb29",
      "parents": [
        "eb7882bd913fe3224bb144b943816376753f491b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 05 12:07:14 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 05 17:44:41 2021 +0000"
      },
      "message": "odrefresh: temporarily disable check\n\nTemporary measure for boot time regression whilst an alternative\napproach is underway.\n\nBug: 160683548\nBug: 181689036\nTest: manual\nChange-Id: I0e7d9df5de056f89e489fe8f075f2e1355f8da36\n"
    },
    {
      "commit": "8f19867228345de08e8c224a3743c3f24926f834",
      "tree": "d4980670134504a92eb0a85649b9bfc09e26a089",
      "parents": [
        "e5276da1c7179e768ef25d2a65702816261cab59"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sat Feb 27 22:23:18 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 02 12:03:20 2021 +0000"
      },
      "message": "odrefresh: fixes for launching from init\n\nWhen launched from init, the umask() of odrefresh is 0077 which means\nonly the owner can read files and directories created by\nodrefresh. This prevents loading system_server compilation artifacts.\n\nThis change unsets the umask when creating installation directories\nand files. It also ensures they have the expected permissions.\n\nFix: 181397437\nTest: trigger recompilation, observe system_server odexes mapped\nChange-Id: I7086421d4a2281c563dc1fdb3ec74e31da9da978\n"
    },
    {
      "commit": "4c3ade67c470543562a0029e39b576954a807321",
      "tree": "21f56e9c9dae7868ee5d68c18457fd0ea3a271fe",
      "parents": [
        "3a8d7c2de4392ff4c40858803447efe14c3c9fa8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 10 14:07:10 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 25 08:44:32 2021 +0000"
      },
      "message": "odrefresh: regenerate artifacts after ART APEX update\n\nReplaces compile_bcp.sh to check and compile boot class path\nextensions and system server jars.\n\nEnable ART to load those artifacts when present in the ART APEX data\ndirectory.\n\nBug: 160683548\nTest: art_libartbase_tests\nTest: adb root \u0026\u0026 adb odrefresh {--force-check,--force-compile}\nTest: adb install com.android.art \u0026\u0026 adb reboot \u0026\u0026 adb root \u0026\u0026 \\\n      adb shell odrefresh {--check,--compile} \u0026\u0026 adb reboot \u0026\u0026 \\\n      adb shell cat /proc/\u003czygote\u003e/maps | grep apexdata\nChange-Id: I81bf520d38f9dc0109c91f192bc6e728099049fd\n"
    }
  ]
}
