)]}'
{
  "log": [
    {
      "commit": "02df21bb4570a57dfa9e41f31d4785bdf4a7b76a",
      "tree": "d629d50892260108898aefb4ea114815922ec9aa",
      "parents": [
        "7cfc94ac3bfdff4d826effab4dda3ec6ea11b78c"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 07 14:55:18 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Jul 21 19:42:44 2021 -0400"
      },
      "message": "Emit XOR ops at OTA generation time\n\n1. Add a new merge operation type: COW_XOR\n2. When running bsdiff, extract similar blocks and record them in\nannotated operations\n3. During merge sequence generation, include COW_XOR ops as well\n\nTest: treehugger\nBug: 177104308\n\nChange-Id: If894736859b572e761e83be5a9498235caa68866\n"
    },
    {
      "commit": "0de22fc8656c9a028637f591e33b260a2179cacd",
      "tree": "a710ed2a8de51250d64498fb1c72168fedce8837",
      "parents": [
        "cb419e6ffd41992a12be064c37d2df9f4f04cf30"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Jun 14 13:24:39 2021 -0400"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 13 23:30:09 2021 +0000"
      },
      "message": "Add proto field to store xor operation in update manifest\n\nWhen generating OTA, we pre-compute which blocks inside a BSDIFF\ncan be represented by XOR operation, and store these blocks in\nthe merge sequence. When installing OTA, delta_performer\nlooks at the merge sequence, and convert blocks to specified\nCOW op type. If a block does not show up in the merge sequence,\nit is assumed to be COW_REPLACE type.\n\nTest: th\nBug: 177104308\n\nChange-Id: If04ca9cae036f2d3a365dcf92ba2447f7b08005a\n"
    },
    {
      "commit": "3a327e619a5a3e3064a4e26255d32ee852778caf",
      "tree": "5fe2298b8da9f7abff2b43d28c05dc053efe4810",
      "parents": [
        "bb6822564ce5a77cfd2bc2f5679951524b697518"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Wed Jun 30 16:05:09 2021 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Fri Jul 02 17:32:07 2021 +0000"
      },
      "message": "Log how much time running update_device.py took\n\nMight be useful to quickly check how OTA optimization\n(e.g. reducing time for otapreopt postinstall) are performing.\n\nBug: 190817237\nTest: python3 system/update_engine/scripts/update_device.py --file out/dist/aosp_coral-ota-eng.ioffe.zip\nChange-Id: I750fb959f1ed6d25b15c2ca05898e9415e276a8c\n"
    },
    {
      "commit": "faddb7ee9adf67e3eb8de5746598fb38ae545113",
      "tree": "5beaa851b77f639cad5507cc22c28b2a9cc52602",
      "parents": [
        "e52b6cdc0b6982ccd523e72aa29314d65bc7af76"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Jun 23 15:53:48 2021 -0400"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 25 18:14:18 2021 +0000"
      },
      "message": "Read payload signature if they exist\n\nTest: th\nChange-Id: I7f509b96ffcece746f0155e26b8bd88a7c0ed7ee\n"
    },
    {
      "commit": "f708ddadd2be246dbdef831e7e87eeac50f7c6a2",
      "tree": "ec55ad5b0b9095e305362b0131c46d3b1b3c0ea3",
      "parents": [
        "88f3c8c78d8a59a60fd14f9e02ad66e93164c555"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Apr 13 10:26:30 2021 -0400"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 22 22:08:08 2021 +0000"
      },
      "message": "Add OTA stress test script\n\nTest: python3 ota_stress_test.py ota.zip\nChange-Id: I313768945e2c2f98c950f283c7c860d334b99f08\n"
    },
    {
      "commit": "0c71550bf36a8d1590486e480fe2deb7253664cb",
      "tree": "c430371aba8ca26aa32eb7e06111d28ad587552b",
      "parents": [
        "265a8e37cf04749645c535d8292b7bccba6ef0cf"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 19 13:48:21 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 19 22:42:30 2021 +0000"
      },
      "message": "Update shebang line for update_device.py.\n\nIt is no longer python2 compatible.\n\nTest: pass\nChange-Id: Ibb0b7aa33ba1be3e2f40893da70f81c858479f7e\n"
    },
    {
      "commit": "ffd2144ccd4378a76bc797a113f4eb36ca275634",
      "tree": "e98628d1faae581371ce6ce7d486e20007dec674",
      "parents": [
        "3a18895c6facd86b97d8cd0b955a2ab61f02cde4"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Apr 14 09:09:41 2021 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Apr 15 16:13:12 2021 -0400"
      },
      "message": "Rename no-care-map flag\n\nSince other flags use - instead of _, keep no-care-map flag consistent\n\nTest: th\nChange-Id: Ibf981ecbf7b3804e20c52ef1de8f55732cbe6295\n"
    },
    {
      "commit": "3a18895c6facd86b97d8cd0b955a2ab61f02cde4",
      "tree": "ea2b4f737e86082dcd589814929bc4b7c4b46217",
      "parents": [
        "b7e6ce5f6acf3fb1b7bd6aae735e548acf61f07f"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Apr 13 12:44:45 2021 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Apr 15 12:44:22 2021 -0400"
      },
      "message": "Add 5s timeout to cleanup commands\n\nSometimes shutdown takes a while due to adb issues, gracefully terminate\nwith a timeout. This will throw an exception if timeout occured, telling\nthe developer that something went wrong.\n\nTest: python3 update_device.py ota.zip\nChange-Id: I44edc6a291fc682b9439ab97f2880d47dc4e457b\n"
    },
    {
      "commit": "bec0f07516656d2964df26a59ae67a4aa97097c9",
      "tree": "f9d2237c19475cb902b08c33f940990370294892",
      "parents": [
        "9a5e3683a45d8ba10e9e90d08cd0799f5d6fdd97"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Mar 31 16:09:00 2021 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Apr 01 16:59:40 2021 -0400"
      },
      "message": "Add no postinstall option\n\nTest: th\nChange-Id: I63904fae1a6900a6fd7a079667332102f2bede55\n"
    },
    {
      "commit": "797756460a058c597aaabde6a8a69470c4fb2ad2",
      "tree": "7c39bf1be45641c06cfb4c66d1700212b5611805",
      "parents": [
        "1c21eb8364f4d4468ac1f9aa562e402901f39bad"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Feb 19 16:05:08 2021 -0500"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 11 20:58:50 2021 +0000"
      },
      "message": "Improve load speed for python payload script\n\nWhen using update_payload module to read a full OTA, it will attempt to\nload the entire payload into memory first, which is slow. Use mmap\ninstead, as parsing manifest doesn\u0027t require the entire payload to be in\nmemory, only the first couple of MB.\nIn case of opening a zipfile, use zfp.open(), which returns a streaming\ninterface.\n\nTest: import update_payload, load an OTA\nChange-Id: I3f7c7515dbf5576ccfda8d844fe22e9be34fdaed\n"
    },
    {
      "commit": "413982e4450453ed458e525f47df2c43a1855aca",
      "tree": "67ae300574d4ec08380dd5e170da1e659a587a6e",
      "parents": [
        "0e1c7fd2729c9de9ae10abe96eb41a35285eada5"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Mar 02 15:34:50 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Mar 10 13:43:03 2021 +0000"
      },
      "message": "Allow disable_vabc flag in full OTA\n\nPreviously, brillo_update_payload only honors --disable_vabc flag for\nincremental OTA. Respect this flag for full OTA as well.\n\nTest: Generate a full OTA with --disable_vabc\nChange-Id: Ic18dfdffd3e43ab139d1ea0704679ea38dd082c2\n"
    },
    {
      "commit": "c612f2025ae631e274f9c29c24009b6b4f36ac22",
      "tree": "40488cac18de1e074a21f1a4d77e699cba190495",
      "parents": [
        "4430ea57a7e53e6b3556c2e8591931131e2e8812"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Feb 26 14:22:10 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Mar 08 22:52:46 2021 -0500"
      },
      "message": "Add a python wrapper for cow conversion tool\n\nHow to use this tool:\n1. `mm -j cow_converter`\n2. `python3 scripts/cow_converter.py your_ota.zip your_target_file.zip output_dir`\n\nTest: python3 scripts/cow_converter.py ~/aosp/bramble_ota.zip\n~/aosp/bramble-target_files-7153567.zip cow\n\nChange-Id: I0ed19a9914f92d0b054faa7d19aa8ea9ae97ddd3\n"
    },
    {
      "commit": "63b39110c12d9f12ade12f543a23d323d457a8f2",
      "tree": "5123ef2d4b8f36bfe43eed1ed80dc84e67074f47",
      "parents": [
        "472d561934b997d9b8d6cdba41f5c2c493bb0bf1"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Mar 05 12:31:38 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Mar 08 10:44:17 2021 -0500"
      },
      "message": "Add a --verify_only flag, which verifies the payload\n\nTest: update_device.py --verify_only some_ota.zip\nChange-Id: I4d07dfe138064fd8747699a92b98a17090533179\n"
    },
    {
      "commit": "472d561934b997d9b8d6cdba41f5c2c493bb0bf1",
      "tree": "2a4966c91f0c099e16adc58583567dd2f073952e",
      "parents": [
        "5bd4622bd6e91e97355c5cc0a4c9dc439cc29779"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Mar 05 12:32:19 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Mar 05 13:24:14 2021 -0500"
      },
      "message": "Fix python3 compatibility issues\n\nPython3 expects write() to accept bytes or str, depending on file type(w\nor wb). Since zipfile returns bytes, we must open output file with \"wb\",\nwhich is the default.\n\nTest: python3 update_device.py some_ota.zip\nChange-Id: I9f163341921d7681988ee1eb01e98f0ecd5e98c9\n"
    },
    {
      "commit": "5bd4622bd6e91e97355c5cc0a4c9dc439cc29779",
      "tree": "aa8de11085f1e90a141d0acba4ee188be049cd68",
      "parents": [
        "a314d2b875965dda7c41a3677a4348f678c6b1b0"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Mar 02 12:36:14 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Mar 04 09:15:19 2021 -0500"
      },
      "message": "Push care_map.pb to device when serving an OTA\n\nWhen rebooting, device will skip update_verifier if care_map.pb isn\u0027t\nfound. For better testing, push care_map.pb to device by default\n\nTest: python2 update_device.py some_ota.zip\nBug: 181499957\nChange-Id: Ic47735be7dd7b1c1541613a88cab69ef57394b5a\n"
    },
    {
      "commit": "4ca06c192db57c1c066bd03c783da7db06bcda10",
      "tree": "35a4105d3e1567cb4758fb2370ef8b2331ad9ccd",
      "parents": [
        "51aad993ddbf5acef3d4d95ac76fe938678af24b"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Feb 04 17:16:40 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Feb 22 16:16:18 2021 -0500"
      },
      "message": "Add vabc_compression parameter to update_metadata\n\nTest: treehugger\nChange-Id: Icc65db9a7c4fbdf22376f9900016ae1b7058c611\n"
    },
    {
      "commit": "51aad993ddbf5acef3d4d95ac76fe938678af24b",
      "tree": "43e07116f22a93f16c5793e009034d736f2242c8",
      "parents": [
        "b00089bc16462298d655382b445f9590c89d2da0"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Feb 19 14:46:28 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Sat Feb 20 21:11:05 2021 -0500"
      },
      "message": "Add option to invoke AllocateSpaceForPayload from update_device.py\n\nNow AllocateSpaceForPayload() API does non-trivial work, it would be\nnice if we have an easy way to invoke it from CLI for testing purposes.\n\nTest: update_device.py --allocate ota.zip\nChange-Id: I497fea33e8935a5481d7d831d35dac881e42262e\n"
    },
    {
      "commit": "deb34459c3a14a30b1824c267daadc02812255dc",
      "tree": "6331c202ac5be21091b2ec05bf8d5ebc3279ce85",
      "parents": [
        "bab11c59e6f894022ef87aacbd89baca4556ee8e"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 21 11:54:36 2021 -0500"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 11 05:02:06 2021 +0000"
      },
      "message": "Reland: Pass apex_info.pb file to delta_generator\n\ntarget_files contain META/apex_info.pb, which contains metadata about\ncompressed apexes. Extract this file from target_file.zip, and pass it\nto delta_generator. delta_generator will then copy these data to\nupdate_metadata\n\nTest: generate an OTA, make sure a device running an older build can\ninstall the OTA\nBug: 172911822\n\nChange-Id: If0e185a32262a849d533c3316ffdf205cb6628b6\n"
    },
    {
      "commit": "9101ff33e2140575ef390fc9bf7b9dd84d5b1298",
      "tree": "aa6242bad18527d8fb7875f0565e5a57fbeb7f41",
      "parents": [
        "6a4d1ec1d024c37dffe0a0db293a337f8c1fd851"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Jan 19 15:48:53 2021 -0500"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 09 01:14:48 2021 +0000"
      },
      "message": "Add a flag to manually override VABC\n\nTest: generate an OTA with --disable_vabc\nChange-Id: I4a42319584dc1388d097dba343fe3ace82479bec\n"
    },
    {
      "commit": "9dd2d4f8ae130aa54cdbec78c16cada7fba9de69",
      "tree": "68e5f2b9bbfa689e53ee60b2fd674380b3f2162a",
      "parents": [
        "0a52f1b9a9d99424a63105aa7ae09114f24e56ac"
      ],
      "author": {
        "name": "Mohammad Samiul Islam",
        "email": "samiul@google.com",
        "time": "Wed Jan 20 21:33:54 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 04 00:21:31 2021 +0000"
      },
      "message": "Reland: Add ApexInfo field to update_metadata.proto\n\nApexInfo defination has been duplicated from ota_metadata.proto\n\nBug: 172911822\nTest: m\nTest: atest update_engine_unittests:PayloadPropertiesTest\nChange-Id: I25b11fdeff4a9ad927f5bcb866660f4b66e563fe\n"
    },
    {
      "commit": "e34db34d58985bfdf1131037f4585ad0bf600de0",
      "tree": "b5839c5bcff612ab2772a18d333d3e9da57e8f6b",
      "parents": [
        "195d0a9e38a6f53ab2756b91f5cdda2ec466a356"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:00:56 2021 +0000"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:01:29 2021 +0000"
      },
      "message": "Revert \"Add ApexInfo field to update_metadata.proto\"\n\nThis reverts commit 8e2dce0ccc2699a0df9d8473fa586811f4b1b69c.\n\nReason for revert:  b/178908708\n\nChange-Id: I76f09bdb467b4f9f13fe7a0ae28c55e08fea197a\n"
    },
    {
      "commit": "195d0a9e38a6f53ab2756b91f5cdda2ec466a356",
      "tree": "1173db93bffda2cf3bdbdeedc759548c003d1163",
      "parents": [
        "2e3cdae869b4bc6ca5070b9dcd11fb737016ceb9"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:00:45 2021 +0000"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:01:19 2021 +0000"
      },
      "message": "Revert \"Pass apex_info.pb file to delta_generator\"\n\nThis reverts commit 4e5da3e9d7459e3d983db943ebf3cb4c36af9c60.\n\nReason for revert:  b/178908708\n\nChange-Id: I616da64ffda5b94044f3493861d6d01aebfaad61\n"
    },
    {
      "commit": "2e3cdae869b4bc6ca5070b9dcd11fb737016ceb9",
      "tree": "cfea34ac39f02a7b9823a2903a6067e94bcfdd71",
      "parents": [
        "f650fa41940c0792b72f5c7299d952537bf6f3db"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:00:24 2021 +0000"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Jan 30 22:00:24 2021 +0000"
      },
      "message": "Revert \"Regenerate checked-in update_metadata_pb2.py with aprotoc\"\n\nThis reverts commit f650fa41940c0792b72f5c7299d952537bf6f3db.\n\nReason for revert: b/178908708\n\nChange-Id: I7ff38e1b6e776862777c42259ecbe84000cfdbb0\n"
    },
    {
      "commit": "f650fa41940c0792b72f5c7299d952537bf6f3db",
      "tree": "31a390ee798a1dee4da085933bd5f614bc53dc5f",
      "parents": [
        "4e5da3e9d7459e3d983db943ebf3cb4c36af9c60"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Jan 29 17:23:27 2021 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Jan 29 17:25:45 2021 -0800"
      },
      "message": "Regenerate checked-in update_metadata_pb2.py with aprotoc\n\nFixes this error:\nAttributeError: \u0027module\u0027 object has no attribute \u0027_internal_create_key\u0027\n\nTest: run it\nChange-Id: I2621090c87e614bbc5ba6c9be22e60d7ed066173\n"
    },
    {
      "commit": "4e5da3e9d7459e3d983db943ebf3cb4c36af9c60",
      "tree": "cfea34ac39f02a7b9823a2903a6067e94bcfdd71",
      "parents": [
        "838793dc39746fd0eba99daaa0f62f8a402777e5"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 21 11:54:36 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 28 16:56:59 2021 -0500"
      },
      "message": "Pass apex_info.pb file to delta_generator\n\ntarget_files contain META/apex_info.pb, which contains metadata about\ncompressed apexes. Extract this file from target_file.zip, and pass it\nto delta_generator. delta_generator will then copy these data to\nupdate_metadata\n\nTest: generate an OTA\nBug: 172911822\nChange-Id: Ia4babb9e711a92f2b78ef8e1dd6ad35d0a2bb5a8\n"
    },
    {
      "commit": "8e2dce0ccc2699a0df9d8473fa586811f4b1b69c",
      "tree": "9c5375920912b062968fd99d933f9d338efcd37a",
      "parents": [
        "95f89e9add8c6ab12d70935d3327f2576d4aa1df"
      ],
      "author": {
        "name": "Mohammad Samiul Islam",
        "email": "samiul@google.com",
        "time": "Wed Jan 20 21:33:54 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 27 07:11:01 2021 +0000"
      },
      "message": "Add ApexInfo field to update_metadata.proto\n\nApexInfo defination has been duplicated from ota_metadata.proto\n\nBug: 172911822\nTest: m\nTest: atest update_engine_unittests:PayloadPropertiesTest\nChange-Id: Ife95e27977be1e32999d9777b226e0eeb644f3fc\n"
    },
    {
      "commit": "ad8ea1059bf8a68d25fc3883b7c20f8f41207de7",
      "tree": "311aa495b00070720498c2e468f6e4b4c5dbc485",
      "parents": [
        "22b62e4133bd7ea028f04409e9cb0ec09d45e8db"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Jan 14 10:14:44 2021 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Jan 20 09:42:40 2021 -0500"
      },
      "message": "Add a \"vabc_enabled\" flag to update_metadata\n\nWhen doing a downgrade build, the target build might not support vabc.\nSo disable vabc in this case.\n\nTest: treehugger\nChange-Id: Ie5a56adf99b495a40d1caafbda6466181da1bc10\n"
    },
    {
      "commit": "576efc53d5499558c911dbe476487016f9490592",
      "tree": "3a0174c617b10f0dfe70f336ebe2878b672819aa",
      "parents": [
        "eb8703b9f6db3fb386507b71f180c98ca3137638"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Dec 01 12:06:40 2020 -0500"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 14 19:28:58 2020 +0000"
      },
      "message": "Add host side simulation python script\n\nThis enables host side simulation of partial updates with the original\ncomplete target file\n\nBug: 171519321\nTest: run this script with a partial update\n\n     python3 simulate_ota.py --source\n     ~/aosp/aosp_cf_x86_phone-target_files-6949164.zip --target\n     ~/aosp/aosp_cf_x86_phone-target_files-6937553.zip\n     ~/aosp/cf_x86_downgrade.zip\n\nChange-Id: Iec52d8ac585b499d50bdb0c89d203ea353f2e94f\n"
    },
    {
      "commit": "07676f5c38f146c5242c0a30edba57224b540e8e",
      "tree": "b358adcd61e0ce9480b1871e492ff670ab656fa4",
      "parents": [
        "e4235b0ae49ec069c056653dd3764793f2f8a82f"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Dec 01 10:45:09 2020 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Dec 02 10:55:04 2020 -0500"
      },
      "message": "Fix English typo in update_device.py\n\nTest: treehugger\nChange-Id: I748be77b7d8fe4bbc63f1edc672e5c32be6e8c91\n"
    },
    {
      "commit": "098e79a0c348d2636fd102db081b4e03cb30ef9d",
      "tree": "c968214af0a4060c3b1b27f20283937081881089",
      "parents": [
        "52cb1d75b6992f880058c56d43428b97bb4ed107"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Nov 19 17:40:56 2020 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Nov 23 19:43:28 2020 +0000"
      },
      "message": "Add --disable_verity_computation flag to delta_generator\n\nVABC doesn\u0027t support writing hash tree yet, provide an option to disable\nfor now\n\nTest: treehugger\nBug: 168554689\nChange-Id: I7bbb76b33b46b44101fc3ca6cee2c9ee85e2e82d\n"
    },
    {
      "commit": "dde2ef4d525af1076b9ccd1a4f736b4de961b2e6",
      "tree": "e2226e2776de36a6afd3eefda912a46395a15c7d",
      "parents": [
        "8212f53f9d05472ce6f25b2cb5c9f4537a5e71a3"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Nov 20 12:26:19 2020 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Nov 20 12:27:23 2020 -0500"
      },
      "message": "define full_boot flag in brillo_update_payload\n\nTest: ota_from_target_files.py --full_boot\nChange-Id: Id910b373f40d6c5eb814904383615f621e3f86d1\n"
    },
    {
      "commit": "8212f53f9d05472ce6f25b2cb5c9f4537a5e71a3",
      "tree": "8adbbf5e85ac55c887898c544b87b69a5847e383",
      "parents": [
        "3f60d53253c609715c490f8cfe7a083d8727fc12"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Nov 13 16:00:00 2020 -0500"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Nov 17 16:27:43 2020 -0500"
      },
      "message": "Add no_slot_switch flag to update_device script\n\nTest: treehugger\nChange-Id: I996e8ece01d5a68e9093460f24c84031f8419c53\n"
    },
    {
      "commit": "999705e45c71fedfffb08eb5b1ead4817c4d3c8b",
      "tree": "eb61c87fc8a2c22c90cf378a521fb30ca87ad5c8",
      "parents": [
        "877ddbe3a71705c5bb0aa248b5a58f0239137a07"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Nov 03 10:07:09 2020 -0500"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 16 18:04:43 2020 +0000"
      },
      "message": "Add `full_boot` option to brillo_update_payload\n\nTest: generate \u0026\u0026 apply an OTA with --full_boot\nBug: 171906589\nChange-Id: I773e808ba5914e5fcc1c7be9095fdbee7d7ebd54\n"
    },
    {
      "commit": "7a2657510c0ff24afe282d8e061916ebac78cf27",
      "tree": "baef92d6829b2f174ff8ea53b31dfb2052c48a37",
      "parents": [
        "24599af599acf74b71a555a8eeb827bedcd672b5"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Oct 29 15:51:35 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Nov 09 09:27:29 2020 -0500"
      },
      "message": "Estimate COW image size during OTA generation\n\nEstimate COW image size and put the estimation in OTA metadata. Then VAB\ncould use this to allocate disk space and prompt the user if more space\nrequired.\n\nTest: create an OTA package\nChange-Id: Iaedafcf39af2d1a4d9cae9cd1a642a3cd3a4815c\n"
    },
    {
      "commit": "42c2f98c87de3fb9342df74881c1e992ad81bee3",
      "tree": "2f18f05a8d42990ce8d1744f27208de43760f88d",
      "parents": [
        "b05e4e2705ea06a2f7772ec2ab2c5353a696226c",
        "2fe84323164a95ce83c7936ef8f6c14483f38049"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Oct 29 12:10:05 2020 -0700"
      },
      "committer": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Oct 29 12:15:42 2020 -0700"
      },
      "message": "Merge remote-tracking branch \u0027remotes/aosp/upstream-master\u0027 into merge-cros\n\nMerge back the recent update_engine changes back to Android.\n\nCreated by:\n$ git merge remotes/aosp/upstream-master --commit -s recursive\n\nNo special conflict to resolve.\n\nBug: 163153182\nTest: None\nChange-Id: I4c65eb9c57448847857e2339935a5d47c8cb690a\n"
    },
    {
      "commit": "7d64e28e6ddd726cefb050727f94c64185573991",
      "tree": "1cb6b7856cd80caf7dca396c2d057653ab093c5c",
      "parents": [
        "94f51cc3ffe2e20d7ef523531aa147f9a2cda3a3"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Sep 02 15:27:34 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Mon Oct 12 11:49:30 2020 -0400"
      },
      "message": "Add estimate_cow_size field to update metadata\n\nPart of VAB project. When installing update through Virtual AB it is\nnice to have an estimate of COW image size. When generating an OTA\nupdate, delta_generator will fill in this field. Later on libsnapshot\nwill use this as an hint when creating snapshots.\n\nTest: mm -j\nChange-Id: I56aa9dfa5e9d955f971a6464aea433b569cd9307\n"
    },
    {
      "commit": "4b883ea0aceed443fc790e4459af61c27cd162e0",
      "tree": "0b2280f951a73330920991d4c8c2105922d064ea",
      "parents": [
        "309c8a883eeca072bd30c563c22c001fa6e41e2a"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Oct 08 13:26:44 2020 -0400"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 08 20:06:56 2020 +0000"
      },
      "message": "Make update_device.py script compatible with python3\n\nTest: serve an OTA\n\nChange-Id: I2e787db375b8dd4b24bc51dff6fef1002c4b4c5e\n"
    },
    {
      "commit": "582d8fec6c5fbb8b65c1f37579f5f71b88694a7e",
      "tree": "be06874506a2397688b85713b44e0b3790e4579f",
      "parents": [
        "aff72001751f046d17209a1679d496923716b71d"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Mon Sep 28 22:15:18 2020 -0700"
      },
      "committer": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Tue Sep 29 05:27:40 2020 +0000"
      },
      "message": "update_payload: Add support for minor version 7\n\nAlthough, we have not upreved to minor version 7, some of the current\ncanary images have been moved to minor version 7. So temporarily add\nsupport for minor version 7.\n\nBUG\u003db:169526824\nTEST\u003dsudo FEATURES\u003dtest emerge update_payload\nTEST\u003dcros_generate_update_payload --debug --tgt-image chromiumos_test_image.bin --src-image chromiumos_test_image.bin --output delta.bin   --check --work-dir workdir\n\nChange-Id: Ifb32307ecee7814190028f5ee7033f67fc5c40db\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2437004\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "c0840c469b96456405d1ac2b44f5113e28b58f1d",
      "tree": "9f302e70aadbd8638b74664d4d3971a8337e77ad",
      "parents": [
        "213e2be8e290c757bc25647b2963ddc9b8f087b1"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Sun Sep 27 18:17:33 2020 -0700"
      },
      "committer": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Mon Sep 28 16:58:34 2020 +0000"
      },
      "message": "update_payload: Remove signature version checking\n\naosp/1130669 deprecated the \u0027version\u0027 field from the Signatures\nmessage. But the update_payload code wasn\u0027t updated, so this CL removes\nthat check.\n\nBUG\u003db:169526824\nTEST\u003dcros_generate_update_payload --debug --tgt-image dlc.img --src-image dlc.img --output delta.bin --private-key ~/.ssh/testing_rsa  --check\n\nChange-Id: I20aca13eeb33c5c1d2aa72513649198868ab00be\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2434552\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nAuto-Submit: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Jae Hoon Kim \u003ckimjae@chromium.org\u003e\nCommit-Queue: Jae Hoon Kim \u003ckimjae@chromium.org\u003e\n"
    },
    {
      "commit": "ffa4c66aa7b4d91d55ef90194ca620bf9356556c",
      "tree": "c19c41e13803b6f022cb78325e677cdd27a661ba",
      "parents": [
        "a81598b5c2d7b74ba46c2daac1558cdcb959cc1b",
        "e53b39b8b9c5c0871841bbbb86f23657c0b7f91b"
      ],
      "author": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Sat Sep 26 00:51:26 2020 +0000"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Sat Sep 26 00:51:26 2020 +0000"
      },
      "message": "Merge \"update_engine: Merge remote-tracking branch \u0027cros/upstream\u0027 into cros/master\""
    },
    {
      "commit": "a81598b5c2d7b74ba46c2daac1558cdcb959cc1b",
      "tree": "ca3c1f3af73001e7d217541eded575db1ea32c14",
      "parents": [
        "fbc57355f863b5476ae1739375bb8ce026c8a629"
      ],
      "author": {
        "name": "Vyshu",
        "email": "vyshu@google.com",
        "time": "Thu Sep 17 21:37:21 2020 +0000"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Thu Sep 24 20:37:32 2020 +0000"
      },
      "message": "payload_generator: Remove unused attributes\n\nSome attributes are not used by the client. Removed all instances of\nof \"ignored\" and option ttributes from delta generation. Removed\nall instances of ImageInfo and moved target and source version\nto paygen_payload.\n\nBUG\u003db:163048638\nTEST\u003dFEATURES\u003dtest emerge-hatch update_engine\nTEST\u003dFEATURES\u003dtest emerge update_payload\nTEST\u003d./run_pytest lib/paygen/paygen_payload_lib_unittest.py\n\nChange-Id: I9102d37fcf054f2cbeb79e54113925a684de1cfb\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2388163\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Vyshu Khota \u003cvyshu@google.com\u003e\nCommit-Queue: Vyshu Khota \u003cvyshu@google.com\u003e\n"
    },
    {
      "commit": "fbc57355f863b5476ae1739375bb8ce026c8a629",
      "tree": "337a84512cf770e1fb7e0d32bd99ec138d2ea4c4",
      "parents": [
        "8055010b2c0379c7f5a34c1c96f6b4988d3878a2"
      ],
      "author": {
        "name": "Vyshu",
        "email": "vyshu@google.com",
        "time": "Wed Sep 09 20:50:02 2020 +0000"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Thu Sep 17 12:56:42 2020 +0000"
      },
      "message": "update payload : Add unittest for paycheck.py\n\nUse generated sample payloads to verify and apply each payload.\n\nBUG\u003dchromium:1028646\nTEST\u003dsudo FEATURES\u003dtest emerge update_payload\nTEST\u003d./generate_payloads\n\nCq-Depend: chromium:2401388\nChange-Id: I2b817c4b71edf4cc6bd36d9ee021366818a42ebb\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2401389\nTested-by: Vyshu Khota \u003cvyshu@google.com\u003e\nCommit-Queue: Vyshu Khota \u003cvyshu@google.com\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Jae Hoon Kim \u003ckimjae@chromium.org\u003e\n"
    },
    {
      "commit": "f2e7ee5a3dfdeee1ecce9111d02e7538a7576eb9",
      "tree": "0ae26544e6f329114a550bb361ee9313d892af12",
      "parents": [
        "e9156ec8de400e24602bd08a06a02b4a47c76c7f"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Aug 13 14:58:43 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Fri Aug 28 01:31:42 2020 +0000"
      },
      "message": "Display per-partition timestamp in payload_info.py\n\nTest: python3 payload_info.py some_ota.zip\nChange-Id: I129d032948a4e962efda38c6d78991c23113f97f\n"
    },
    {
      "commit": "1f4964213f67ae682af8cd332cd37b3d9afdbace",
      "tree": "b55ef474bc950f01551ba011612b33917153c3ea",
      "parents": [
        "5ef2d8ae7bc8ccd03ea8fc19e3e0b9a11f1dfeaf"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Aug 11 17:18:23 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Aug 27 18:18:02 2020 +0000"
      },
      "message": "Set per-partition timestamps in OTA generation\n\nupdate_engine can also accept payload with per-partition timestamps.\nThis CL updates OTA generation script to emit per-partition timestamps\nwhen writing an OTA package.\n\nTest: Generate \u0026\u0026 serve an ota\nChange-Id: I17529a004b8e0bbcb7d69dde93fb0fd7124b3b17\n"
    },
    {
      "commit": "d719103441dcd39bcd0fa6fd1795e3783267b7bb",
      "tree": "9966d000d704764d27a672781e30187435a153e4",
      "parents": [
        "76eff4d8d722ecd511bbe6c04d5479263f4a6965"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Aug 11 10:48:16 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Aug 25 14:27:21 2020 +0000"
      },
      "message": "Support per-partition timestamps\n\nupdate_engine is heading toward supporting partial updates, which an OTA\nupdate can update just a subset of all partitions. In this context, a\nsingle max_timestamp in OTA manifest is insufficient for checking\npotential downgrades, as different partitions can have different\ntimestamps. This CL adds per-partition timestamp support on\nupdate_engine side. update_engine will accept a payload with\nper-partition timestamps and reject the update if any partition has an\nolder timestamp.\n\nChanges made:\n  1. Add new version field to PartitionUpdate protobuf message.\n  2. Add new methods to HardwareInterface for fetching/checking\n  timestamp of each partition.\n  3. Update delta_performer to invoke new APIs in 2 properly.\n  4. Add relevant testcases.\n\nTest: unittest\nBug: 162553432\nChange-Id: I767343e003fd35ce0d22197b15040488cf30be30\n"
    },
    {
      "commit": "9e7a6db36721dc14a17da32394e8c0e5b234e159",
      "tree": "a06ae775338a1aa5d07d95ae3c77be2cef14df55",
      "parents": [
        "8d6df9ac7a70f4b07ebb86f50fb3548b693acad5"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Aug 13 14:55:58 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Aug 19 21:46:05 2020 +0000"
      },
      "message": "Update payload.py to work with OTA packages directly\n\nTest: python3 payload_info.py some_ota.zip\nChange-Id: Id688e87d4712f2f750320eb0cd86c6a2cc263313\n"
    },
    {
      "commit": "aba70abe81618542044dc20907f281a56b8b500e",
      "tree": "dc310775f553d2e7b78a72f84ee1472f015451c9",
      "parents": [
        "f6f75c208f3fa34d5cd38bdaf473dc36ef95ac8b"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Aug 04 10:32:59 2020 -0400"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Thu Aug 06 20:07:47 2020 +0000"
      },
      "message": "Improve payload magic header handling\n\nCurrently, we use central directory\u0027s extra fields and filenames to\ndetermine starting position of a zipentry\u0027s file data. However, central\ndirectory\u0027s extra field might differ from extra field in local file\nheader. For example, the Extended-Timestamp field has different formats\ndepending on whether it\u0027s in local file header or central directory. We\nshould use local file header for computing offsets.\n\nTest: Serve an OTA by update_device.py\nChange-Id: I00d150d874b9c874bb713569ea14938e036f854e\n"
    },
    {
      "commit": "e283ce414e749e599d0ffad31897bc5e25450cad",
      "tree": "3b27bfdcc814d2c3a070b1472e4ee234ea2938a8",
      "parents": [
        "d60dc3929d21050730bb8a4ae16e3bb3f3a7e36e"
      ],
      "author": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Wed Jul 29 11:37:51 2020 -0700"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Wed Jul 29 21:23:47 2020 +0000"
      },
      "message": "Update language to comply with Android\u0027s inclusive language guidance\n\nMore details in: https://source.android.com/setup/contribute/respectful-code\n\nBug: 161896447\nTest: build, run unittests\nChange-Id: I6a7136b01ecce948a3997c60b7dcec848331e8ef\n"
    },
    {
      "commit": "3756c3e54fd61d2a27737020928b2b079f356caf",
      "tree": "4184826b7d6875c4dc0756aeb15f2a94f6305817",
      "parents": [
        "c3806663263ba01c35c66f8185402bbbd456380f"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Jul 24 20:25:51 2020 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Jul 27 20:27:35 2020 +0000"
      },
      "message": "brillo_update_payload: allow specifying delta_generator from env\n\nHelp solve the following error when using brillo_update_payload\ninside sandboxes:\n\n\"delta_generator\" is not allowed to be used. See\nhttps://android.googlesource.com/platform/build/+/master/Changes.md#PATH_Tools\nfor more information.\"\n\n... by specifying GENERATOR\u003dpath/to/delta_generator in the environment.\n\nTest: build GKI\nBug: 162116212\nChange-Id: I8e3444539e3692738b0309ab7b1f829d0e840ac2\n"
    },
    {
      "commit": "f5baff4655a9b0c13510d7f2dc222f5e66bed505",
      "tree": "3afa62e39e7e7e80948a613fa5099322f945522b",
      "parents": [
        "cc011d3b0ad7f359415a63399e94b62752572a28"
      ],
      "author": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Fri Jul 17 21:43:22 2020 -0700"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Mon Jul 20 17:28:28 2020 +0000"
      },
      "message": "Support generation of partial updates\n\nAdd a new minor version kPartialUpdateMinorPayloadVersion for\npartial updates. Also, we always treat the partial update as a\ndelta update in payload consumer, so new update_engine can\nperform minor version check correctly.\n\nConceptually, partial update is indeed a delta update; because we\nneed to copy | use the untouched partitions. Since the payload for\nthe partial update doesn\u0027t carry old partition info, old update\nengines will treat them as full update. So old UE will also fail\nthe minor version check correctly; because we always expect\nkFullPayloadMinorVersion for full updates.\n\nBug: 157778739\nTest: generate \u0026 apply partial full|incremental updates, generate\nregular updates, unittests pass\n\nChange-Id: I7f8365cf99098269150dd08e028120354944f3c6\n"
    },
    {
      "commit": "55abd3cbae6bd150b3534728a63befd1cadd6c5e",
      "tree": "0077b57b1ef96c194380908311ce2a993fb1a89c",
      "parents": [
        "99d570d67bd5dab11de321068c4002ab76ae774a",
        "694eeb0dece40f88e11ece3a776d995d855be79b"
      ],
      "author": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Fri Jun 19 00:22:59 2020 -0700"
      },
      "committer": {
        "name": "Tianjie",
        "email": "xunchang@google.com",
        "time": "Mon Jul 06 11:24:36 2020 -0700"
      },
      "message": "Merge remote-tracking branch \u0027aosp/upstream-master\u0027 into merge\n\nIt\u0027s a merge from chrome OS with some reverts.\n1. the fd watcher change, because the libbrillo version isn\u0027t\ncompatible in aosp.\ncommit 6955bcc4ffe4cc9d62a88186b9a7e75d095a7897\ncommit 493fecb3f48c8478fd3ef244d631d857730dd14d\n2. two libcurl unittest. Because the RunOnce() of the fake message\nloop seems to have different behavior in aosp.\ncommit d3d84218cafbc1a95e7d6bbb775b495d1bebf4d2\n\nPut preprocessor guards to use the old code in aosp. And we can\nswitch to the new code in the other path after adopting the new\nlibbrillo \u0026 libchrome.\n\nTest: unit tests pass, apply an OTA\nChange-Id: Id613599834b0f44f92841dbeae6303601db5490d\n"
    },
    {
      "commit": "3dfd8031a9d48a88bd0b16a03520082061d893ff",
      "tree": "b31fbd473b1ec0805361b174611731941a277a14",
      "parents": [
        "4b00ae16c992f7913bc026d3027b41d8b271f436"
      ],
      "author": {
        "name": "Andrew",
        "email": "andrewlassalle@chromium.org",
        "time": "Tue Nov 26 12:50:57 2019 -0800"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Wed Nov 27 09:04:15 2019 +0000"
      },
      "message": "update_payload: Adapt subprocess.check_call to py3\n\nIn python3, file descriptors(fd) are not passed to child processes, so\nthe call to \u0027puffin\u0027 fails because puffin cannot receive the file\ndescriptors passed by applier.py. In python3, there is an option to set\na fd inheritable so the subprocess can access the fd.\n\nBUG\u003dchromium:1027199\nTEST\u003dcros_generate_update_payload --src_image ~/trunk/src/build/images/eve/R80-12705.0.2019_11_23_1521-a1/dlc/dummy-dlc/dummy-package/dlc.img --image ~/trunk/src/build/images/eve/R80-12713.0.2019_11_26_0806-a1/dlc/dummy-dlc/dummy-package/dlc.img --output ~/delete/ttt3 --check\nTEST\u003dcros_generate_update_payload --src_image  ~/trunk/src/build/images/eve/R80-12697.0.2019_11_21_1601-a1/chromiumos_test_image.bin --image ~/trunk/src/build/images/eve/R80-12713.0.2019_11_26_0806-a1/chromiumos_image.bin --check --output ~/delete/ttt5\n\nChange-Id: I5d68d5a7ce0a128f2438b0d9f2e32167463661c2\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1938007\nTested-by: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nCommit-Queue: Mike Frysinger \u003cvapier@chromium.org\u003e\n"
    },
    {
      "commit": "4b00ae16c992f7913bc026d3027b41d8b271f436",
      "tree": "3f40541fc81a02b0264f4e34db746389f57ea776",
      "parents": [
        "8a1de4b6b8e368d7bd2b92f015a83f49764f7b79"
      ],
      "author": {
        "name": "Andrew",
        "email": "andrewlassalle@chromium.org",
        "time": "Mon Nov 25 09:37:27 2019 -0800"
      },
      "committer": {
        "name": "Nicolas Boichat",
        "email": "drinkcat@chromium.org",
        "time": "Tue Nov 26 02:00:34 2019 +0000"
      },
      "message": "update_payload: Remove \u0027buffer\u0027 in applier.py\n\n\u0027memoryview\u0027 replaces \u0027buffer\u0027 in python3, but not all the signatures are the\nsame in both functions. The output of memoryview has to be converted to bytes,\nbut buffer\u0027s doesn\u0027t. This difference could cause the script to fail when\nusing python2.\nSet the type of multiple strings to byte.\n\nBUG\u003dchromium:1027199\nTEST\u003dcros_generate_update_payload --image ~/trunk/src/build/images/eve/R80-12705.0.2019_11_23_1521-a1/chromiumos_image.bin --src_image ~/trunk/src/build/images/eve/R80-12705.0.2019_11_23_1521-a1/chromiumos_image.bin  --output ~/delete/ttt2 --check\nTEST\u003dcros_workon_make update_payload --test\nTEST\u003dtryjob. Note: tryjob fails because tryjob runs without the updates to the sdk from this CL. see chromium:1028178\n\nChange-Id: Ic05892d1e26f12e33a661b590039821329379042\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1933128\nTested-by: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nAuto-Submit: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\n"
    },
    {
      "commit": "8a1de4b6b8e368d7bd2b92f015a83f49764f7b79",
      "tree": "0c1dc401270e8eee6462f923ffb34fc6e1389fd9",
      "parents": [
        "6955bcc4ffe4cc9d62a88186b9a7e75d095a7897"
      ],
      "author": {
        "name": "Andrew",
        "email": "andrewlassalle@chromium.org",
        "time": "Sat Nov 23 20:32:35 2019 -0800"
      },
      "committer": {
        "name": "Nicolas Boichat",
        "email": "drinkcat@chromium.org",
        "time": "Mon Nov 25 13:25:55 2019 +0000"
      },
      "message": "update_payload: Fix array type in applier.py\n\nIn python3, the array type \u0027c\u0027 is no longer supported. Type \u0027c\u0027 arrays\nare replaced by type \u0027b\u0027(signed char) and \u0027B\u0027(unsigned char). \u0027B\u0027 is\nsupported by python 2 and python3.\nReplaced deprecate function \u0027buffer\u0027 by memoryview in python3.\n\nBUG\u003dchromium:1027199\nTEST\u003dunittest, cros_generate_update_payload, tryjob\n\nChange-Id: Id77ba2d1aac0005d31516da4e6ac4617027ca345\nExempt-From-Owner-Approval: -release builders are on fire\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1932226\nTested-by: Nicolas Boichat \u003cdrinkcat@chromium.org\u003e\nCommit-Queue: Nicolas Boichat \u003cdrinkcat@chromium.org\u003e\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\n"
    },
    {
      "commit": "1f6bcab058b94446e25d9a55356d0398bee9aa60",
      "tree": "1a99eb5e8d875811cac34c0cb329437858ce9daa",
      "parents": [
        "165843ca10908d7bd79582829a5ee51b098685e6"
      ],
      "author": {
        "name": "Andrew",
        "email": "andrewlassalle@chromium.org",
        "time": "Thu Nov 21 11:34:22 2019 -0800"
      },
      "committer": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Fri Nov 22 17:38:18 2019 +0000"
      },
      "message": "update_engine: Fix paycheck script\n\nThe paycheck script was broken when migrating from python2 to python3.\n\nBUG\u003dchromium:1027199\nTEST\u003dtryjob, unittests\n\nChange-Id: Ie40799138edbe6bdd49fb0bd5ab91ae6369e007f\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1929453\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nCommit-Queue: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\n"
    },
    {
      "commit": "165843ca10908d7bd79582829a5ee51b098685e6",
      "tree": "c4c98899ca4d134af1b2655afbe17dc7cb843b40",
      "parents": [
        "d04ca0c5cc9e4507301be355fd3bd86b871b05c4"
      ],
      "author": {
        "name": "Andrew Lassalle",
        "email": "andrewlassalle@chromium.org",
        "time": "Tue Nov 05 13:30:34 2019 -0800"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Tue Nov 19 20:22:42 2019 +0000"
      },
      "message": "update_payload: Port scripts to python3\n\nUpdate the update_payload scripts to be compatible with\npython2 and python3. Python2 compatibility is needed since\nthe repo is shared with Android.\n\nBUG\u003dchromium:1011631\n\nTEST\u003dExecuted aosp/system/update_engine/scripts/run_unittests and\ncros_generate_update_payload\n\nCq-Depend: chromium:1904837, chromium:1911499\nChange-Id: Ie450b80b5f7550051b38d320173ccc0c915f65e7\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1904310\nCommit-Queue: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\nTested-by: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nAuto-Submit: Andrew Lassalle \u003candrewlassalle@chromium.org\u003e\n"
    },
    {
      "commit": "3f9be772bd1abcfe922fbebf78a846d38191bce9",
      "tree": "ed5d910646d0835a6cba743ef342b1944a896a82",
      "parents": [
        "4ad3af63309d9b9887723d6a0addf803186c9427"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Nov 02 18:31:50 2019 -0700"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Sat Nov 02 18:31:50 2019 -0700"
      },
      "message": "Allow update_device install the secondary payload\n\nAdd an option to support installation of the secondary payload. This is\nused to verify an android factory OTA, where it has one step to install the\nsecondary payload. The payload and its property file store under the\nsecondary/ directory of the update package.\n\nTest: install a secondary payload from a factory OTA package\nChange-Id: I1d2e1d6945f1daa9afaab6af8ce9aad0f7c2100f\n"
    },
    {
      "commit": "55c75417e22d5026971276997924a345d9973bbc",
      "tree": "b53adac63ebb81c3d113734e745f5fe197dc6a5c",
      "parents": [
        "816193f68604845ad3c66cafb71b68e05e310469"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Mon Oct 07 11:20:39 2019 -0700"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Tue Oct 29 21:28:24 2019 +0000"
      },
      "message": "update_engine: Deprecate major version 1\n\nWe have moved away from major version 1 in Chrome OS and already have a\nstepping stone for it in M53. So this cleanup makes the code much easier\nto understand.\n\nBUG\u003dchromium:1008553\nTEST\u003dFEATURES\u003d\"test\" sudo emerge update_engine update_payload\nTEST\u003dcros_generate_update_payload --image chromiumos_test_image.bin --check --output delta.bin\n\nChange-Id: I01815dfa5fdf395f8214ef162e01ecca2d42f7fc\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1857459\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\nCommit-Queue: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "1e2573f97f2b2aafcf44e539afab4466d17e1014",
      "tree": "7db9c174392a505dfead573dbf39870d977334dd",
      "parents": [
        "42132993563a200785df323460a886aae1af27ed"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Sep 27 13:40:53 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Oct 08 01:29:38 2019 +0000"
      },
      "message": "Update update_metadata_pb2.py\n\nGenerated with:\naprotoc --python_out scripts/update_payload update_metadata.proto\n\nTest: cd system/update_engine/scripts \u0026\u0026 ./run_unittests\n\nChange-Id: I68b0659e5de7545fb0143a930859c703ec50ae13\n"
    },
    {
      "commit": "c288d5ba2182a0b2742fa93d04db3e024b00e98e",
      "tree": "ddf16bf0c777a71e177b294ca15360d99250aec7",
      "parents": [
        "05b3b963888adb5b9bbe906fb09cdae7ce47836c"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Oct 03 13:47:06 2019 -0700"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Oct 03 14:06:03 2019 -0700"
      },
      "message": "Replace `look` with `grep`.\n\n`look` is an external host tool that\u0027s not coming from the Android repo.\nhttps://android.googlesource.com/platform/build/+/master/Changes.md#path_tools\n\nBug: 142073223\nTest: `m -j ota_from_target_files`; Generate incremental package.\nChange-Id: Idf5ee71846ea641387a36887a0ffc3d4a322743d\n"
    },
    {
      "commit": "0f59a9a41177186cf41b331e279d0b7804512654",
      "tree": "9da92573b1513e36c8e6ce819bfe2354edaeec64",
      "parents": [
        "051627abe8995741f996e3931d899c0b08e503eb"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Fri Sep 27 10:24:31 2019 -0700"
      },
      "committer": {
        "name": "Commit Bot",
        "email": "commit-bot@chromium.org",
        "time": "Thu Oct 03 00:48:24 2019 +0000"
      },
      "message": "update_engine: Deprecate minor version 1\n\nMinor version 1 was for the old days where we rewrite the signle\npartition with an update (no A/B partitions). But those days are long\nover and we don\u0027t think there is any device out that has this capability\nanymore. Even if there is, we can always serve full payloads along with\nthe stepping stone we have in M53. So this is safe to go.\n\nBUG\u003dchromium:1008553\nTEST\u003dsudo FEATURES\u003dtest emerge update_engine\nTEST\u003dran cros flash two times.\n\nChange-Id: Ib928ade36af5136cd4013a30dfb39ee7fd5b07b1\nReviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/1829160\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\nCommit-Queue: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "72d512c227264fcd7f5156dd64ec09316aa77f8b",
      "tree": "0d573579cffc62f55aa2e8f629884e9f9274278b",
      "parents": [
        "bb90dfb5de8e6f70083e4db5b289acdde21f8684"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Wed Aug 21 15:20:35 2019 -0700"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Thu Aug 22 14:23:52 2019 -0700"
      },
      "message": "Add a flag to disable the fec data computation\n\nThe write of fec data is currently mandatory in the update engine. This\nstep reduces the update package size but it\u0027s also time comsuming. So we\nadd a flag to allow partners make the trade off and disable the on device\nfec data computation.\n\nBug: 139723500\nTest: generate and apply incremental updates for verified boot 1.0 \u0026 2.0\nChange-Id: Ic7c63396bb4d4fbbc3c3b2e9ff3804c9ff941f2f\n"
    },
    {
      "commit": "14715ced5bbe551e06009afdd3712f84dc5b1818",
      "tree": "e1e7a694c32bbd9fe74c278cc84b8d98a060b1fb",
      "parents": [
        "30fa5f523f850cf425329642fcdfedbb2c47758f"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Tue Aug 06 17:24:43 2019 -0700"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Wed Aug 07 17:23:08 2019 -0700"
      },
      "message": "Stop using unzip -p when extracting images\n\nbrillo_update_payload uses `unzip -p` to extract images to a named temp\nfile. But the command doesn\u0027t generate an error when the disk is full.\nThis cl creates a helper function and switches to use `unzip -d` to extract\nthe image; and then move the extracted image to the intended name.\n\nBug: 138725843\nTest: generate and verify a payload, check the extract error when disk is full\nChange-Id: I71c2d07de3c1c826f2e07fcc6497437c4051944f\n"
    },
    {
      "commit": "9648990b5bd68fc0fb10ffd3193d108b1a056125",
      "tree": "5b27cc6323b75465bb5965378c6c4ec86d175d1a",
      "parents": [
        "cda3c034bc46a4040dcd31a3a512ffd56dfe28c2"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Tue Apr 02 16:25:03 2019 -0700"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Tue Apr 02 18:17:45 2019 -0700"
      },
      "message": "Abort the payload generation on extract_image errors.\n\nextract_image, in particular extract_image_brillo, spawns multiple\nprocesses to handle the unzipping and unsparsing works in parallel.\nHowever, `wait` doesn\u0027t abort the execution on child process errors.\n\nThis CL tracks the PIDs of the worker processes. It then waits for each\nindividual PID and aborts appropriately. No-op for the CrOS path.\n\nBug: 129773355\nTest: Inject error into simg2img. brillo_update_payload aborts.\nChange-Id: Id87aa5216fee7e9db132b7f7947742d2ac11b2bc\n"
    },
    {
      "commit": "6cf8e675a37c3b61cea0d313f8006068a1b3190a",
      "tree": "54a1a3b29cb4221454912fa6b1a420e30ee89d67",
      "parents": [
        "a7add991ca54d16462c189e05deba08615123786"
      ],
      "author": {
        "name": "Xiaochu Liu",
        "email": "xiaochu@chromium.org",
        "time": "Thu Mar 14 16:15:42 2019 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Wed Mar 20 19:51:25 2019 -0700"
      },
      "message": "update_payload: deprecate unused flags from paycheck.py\n\nSome temporary workaround are placed to hack the parameters to some\ndefault value that the rest of the code is happy with. This CL removes\nthem.\n\npart_sizes should be default None (it was default [None, None]).\nwhen part_sizes is None, part sizes are not checked (same behavior as\n[None, None]).\nsrc_part_paths should be default None (it was default [None, None]).\nwhen src_part_paths is None, we set args.assert_type\u003d_TYPE_FULL (same\nbehavior as [None, None]).\ndst_part_paths (out_dst_part_paths) should be default None (it was\ndefault [None, None]).\nwhen dst_part_paths (and out_dst_part_paths) is None, dargs is not set\n(same behavior as [None, None]).\nout_dst_part_paths is rarely used and we often chose to use\ndst_part_path.\n\nOld flags (deprecated) are removed as well.\n\nBUG\u003dchromium:926045\nTEST\u003dtest_paycheck.sh chromeos_11844.0.0_kevin-arcnext_canary-channel_full_kevin-mp.bin-6f7f58b3c9a1a84ea15ab67f84cd5387.signed chromeos_11844.0.0-11869.0.0_kevin-arcnext_canary-channel_delta_kevin-mp.bin-fc6014025415e0b5e780c0739a3b0461.signed chromeos_11869.0.0_kevin-arcnext_canary-channel_full_kevin-mp.bin-1be744e0723534e02084c762dea316c0.signed\n\nChange-Id: Ifdf872ddfa03d5759a8ee4021e296e4dc4571d9c\nReviewed-on: https://chromium-review.googlesource.com/1525289\nCommit-Ready: Xiaochu Liu \u003cxiaochu@chromium.org\u003e\nTested-by: Xiaochu Liu \u003cxiaochu@chromium.org\u003e\nReviewed-by: Nicolas Norvez \u003cnorvez@chromium.org\u003e\n"
    },
    {
      "commit": "ef1af2773e238de982d98490d8542668f6499ac5",
      "tree": "69ebd93f850546ffb82e09eb96f014e4150736db",
      "parents": [
        "2e4eda58d2dd747680cfb519b31072027190370a"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Thu Jan 10 14:04:27 2019 -0800"
      },
      "committer": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Thu Jan 10 14:13:46 2019 -0800"
      },
      "message": "update_payload: uprev to minor version 6\n\nBUG\u003dchromium:920699\nTEST\u003dunittest\nTEST\u003dcheck_update_payload --check # with a delta payload\n\nChange-Id: I40bc1e535ed241b74c6d889757a8dcf046bac0de\n"
    },
    {
      "commit": "3ce4e526eef90cec0d659f33e567d1fffa4373a0",
      "tree": "00080ced9a43323ec583cbeaa3d0f40c41851172",
      "parents": [
        "cf50e9dd45d93687282a8c0755d4b839136a0079",
        "58e01d6e42664015e22518ff5015b2348d7e7b03"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Jan 04 15:34:19 2019 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Jan 04 15:36:47 2019 -0800"
      },
      "message": "Merge aosp/upstream-master into aosp/master.\n\nAdded BinderUpdateEngineClient::AttemptInstall().\n\nTest: update_engine_unittests\nChange-Id: Id6911f49d763b0d572658acb7d66857016bf6969\n"
    },
    {
      "commit": "58e01d6e42664015e22518ff5015b2348d7e7b03",
      "tree": "729f4f07688ccdad0fd519c63ba1feab00af88fd",
      "parents": [
        "04d41629e027d0c98c91d3702de8b86527ef8224"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Wed Sep 19 14:56:15 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Wed Jan 02 18:14:01 2019 -0800"
      },
      "message": "update_engine: brillo_update_payload: Switch to major version 2\n\nPer this CL, we switch the payloads to major version 2 from servers.  For more\ninformation regarding this switch refer to the attached issue. We also change\nthe default major version to 2.\n\nBUG\u003dchromium:794404\nTEST\u003dbrillo_update_payload\n\nChange-Id: I8403805c07210c3d947100efce74dc184a022cdb\nReviewed-on: https://chromium-review.googlesource.com/1234590\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "72b80edb1ef2db08564929549eb8d7a1e0b24542",
      "tree": "56c720f34528c0169a11a51c1fb9f2af92469547",
      "parents": [
        "8ea1957b8bd6b58ffd7d04d2f0d2d6ff6823c368"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Wed Dec 12 23:15:30 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Sat Dec 15 12:39:13 2018 -0800"
      },
      "message": "update_payload: Fix problem with signature size on unsigned payloads\n\nIf the payload is unsigned (e.g. for test image), then the checker.sigs_file\nwould not exist. So check for that variable before using it.\n\nBUG\u003dchromium:794404\nBUG\u003dchromium:914705\nTEST\u003dmanually signing the payload ran update_payload_check with signed and\nunsigned image\nTEST\u003dunittests\n\nChange-Id: I871137eadef00d012ee926d12fd4eee36a454487\nReviewed-on: https://chromium-review.googlesource.com/1375023\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "8ea1957b8bd6b58ffd7d04d2f0d2d6ff6823c368",
      "tree": "a1c3dc138622616819f84545c847ae63f6780286",
      "parents": [
        "ac170d935176908876dc3a67ef565ed536e2d7c0"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Wed Dec 05 12:06:21 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Dec 10 00:08:51 2018 -0800"
      },
      "message": "update_payload: Add the remaining major version 2 signature supports\n\nThis patch fixes the issues with signatures (sizes) in major version 2 and a few\nminor issues with the payload and metadata sizes.\n\nBUG\u003dchromium:862679\nTEST\u003dmanually signing the payload and running update_payload_check\nTEST\u003dunittests\n\nChange-Id: I9b431379b0574a150474a913f1ec4a11e86288ae\nReviewed-on: https://chromium-review.googlesource.com/1363339\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "4b821d7d700085d3b81260c559392c5e5b59822a",
      "tree": "89622265b6cc4c785a21351dd143f879eac1db6d",
      "parents": [
        "09f6e0f8f5340e2e8f6bf14e08adf25798eab360"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Dec 07 17:26:04 2018 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Dec 07 17:28:37 2018 -0800"
      },
      "message": "Use xxd directly rather than head and hexdump\n\nTest: build OTA and manual apply\nChange-Id: I4ae6da33e1ea784c00e4fdf9893f3887950bab4c\nFixes: 120681840\n"
    },
    {
      "commit": "5df503c367251ad04260bd2f988541e7f2f0ae37",
      "tree": "1957323270327bb72a11b15641cec488a7252898",
      "parents": [
        "812e9d17022dd3231ec49eb4210bd7cd47644887"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 27 16:57:34 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 28 16:21:56 2018 +0000"
      },
      "message": "Use xxd directly rather than head and hexdump\n\nI hit this when trying to switch the AOSP build to toybox head (which\ndoesn\u0027t yet support --bytes). I\u0027ll add --bytes and --lines anyway, but\njust using xxd seems like a better way to do this?\n\nTest: builds\nChange-Id: I2bd2d3467b70c98534468d37da6794fe705652d3\n"
    },
    {
      "commit": "1b54e7034bad6190a71edd11c6b80d714584d3b0",
      "tree": "44ee82978489c3d07bc4159a2b026a783fd2a0e9",
      "parents": [
        "8cc1e9e5a398d054f8d99213f0cfa2b6a71e30e0"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Nov 14 16:20:58 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Nov 15 20:35:37 2018 +0000"
      },
      "message": "Update update_metadata_pb2.py\n\nGenerated with:\nprotoc --python_out scripts/update_payload update_metadata.proto\n\nBug: 119222724\nTest: None\nChange-Id: I384f370358a3e97e038b2350416f422d47fe999a\n"
    },
    {
      "commit": "398cb549ae896e92bafa3f113ebf54150ee5ecc2",
      "tree": "9e065f836c56407d2e74ba2b70863f79a56421af",
      "parents": [
        "549eb36af81d1d542efc80c1b79049a1fcea1380"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Thu Oct 18 11:29:40 2018 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Oct 26 18:23:52 2018 +0000"
      },
      "message": "Add dynamic_partition_metadata to update manifest\n\nAt build time, it will be filled with BOARD_SUPER_PARTITION_GROUPS,\nBOARD_*_SIZE, and BOARD_*_PARTITION_LIST.\n\nOnly the information from the new target_files package is used. The\nMETA/dynamic_partition_info.txt from old target_files is ignored.\n\nTest: builds and manual OTA\nBug: 117182932\nChange-Id: I02ce99caaf7d01cec1470f7262c45490c15dfcb7\n"
    },
    {
      "commit": "26bb865b2743a9767b42840278ac032db274d5f3",
      "tree": "fdbf56281b0e82f62e650ca4c74da67427ec7b65",
      "parents": [
        "88d90387e5964b05f9e30adb2648433e4a277ab9"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Oct 12 02:15:09 2018 -0400"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Sat Oct 13 05:12:12 2018 -0700"
      },
      "message": "brillo_update_payload: stop searching /usr/lib/crosutils\n\nIn the SDK \u0026 on boards, we have /usr/share/misc/shflags everywhere.\nSo we don\u0027t need this old /usr/lib/crosutils path at all.\n\nBUG\u003dNone\nTEST\u003dNone\n\nChange-Id: I89b1d96e5f28f7952175aff6ca9a6ccb462a17c5\nReviewed-on: https://chromium-review.googlesource.com/1278108\nCommit-Ready: Mike Frysinger \u003cvapier@chromium.org\u003e\nTested-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Alex Deymo \u003cdeymo@google.com\u003e\n"
    },
    {
      "commit": "3271186bc8d1e2d382725e7368d092a335e2aa14",
      "tree": "8070ced53ff1762694993080efd92420207d08a1",
      "parents": [
        "d63cb3ccd76d6df10c603152843881d719da26e3"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Oct 04 21:25:50 2018 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Oct 04 21:41:30 2018 -0700"
      },
      "message": "Convert perl usage to python\n\nWe\u0027re trying to remove the usage of perl during the build. Since this is\ncalled via python, it should hopefully be safe to use python (though\nusing whatever python in the path isn\u0027t a great option).\n\nTest: treehugger\nChange-Id: I0b37e7af7fe668a968f9d06a3db54e82dd58c76a\n"
    },
    {
      "commit": "3e5804d8ad22361c091c11ffe1183069612d56a9",
      "tree": "f2aaaef8d9b78abec82f32b54627ce1e285b4a07",
      "parents": [
        "6feb15c1e208d586b46f7d7540898cbef71f6366"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Sep 06 15:53:00 2018 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Sep 26 16:58:57 2018 -0700"
      },
      "message": "brillo_update_payload: Extract partition images in parallel.\n\nunzipping and converting sparse image to raw could take a while for\nlarge partitions like system and vendor, this CL move them into a\nseparate function and run them in background.\n\nBug: 77817425\nTest: brillo_update_payload generate\nTest: brillo_update_payload verify\nChange-Id: Ic55b9e35eb3c275533a7231d2b57722aa89c96a5\n"
    },
    {
      "commit": "6feb15c1e208d586b46f7d7540898cbef71f6366",
      "tree": "7092ff3c3255c187bb5a062022b0c2f098789860",
      "parents": [
        "d8be4b5f83ce6d907762fda1cfd229ab2ba8dab7"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Aug 31 15:45:17 2018 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Sep 26 16:58:52 2018 -0700"
      },
      "message": "payload_generator: Use actions to apply payload.\n\nVerity data is written by FilesystemVerifierAction(), so we need to\nuse the actions to apply payload correctly.\n\nBug: 28171891\nTest: brillo_update_payload verify\nChange-Id: I106053a6291282538008f7fbbaba0e6d14346770\n"
    },
    {
      "commit": "b1a9e080b446f09788d73645c42e2e78ae6f2d15",
      "tree": "b15de4bf8e7b1c689a4e0d469e1568c4381afa5e",
      "parents": [
        "2a0ea6321578d30be3caa806a65149bffd09672a"
      ],
      "author": {
        "name": "Shashikant Baviskar",
        "email": "shashikant.baviskar@sony.com",
        "time": "Thu Apr 12 12:37:21 2018 +0900"
      },
      "committer": {
        "name": "Satoshi Futenma",
        "email": "Satoshi.Futenma@sony.com",
        "time": "Tue Aug 21 22:15:27 2018 +0900"
      },
      "message": "A/B update: Replace the zip FileHeader mechanism for update package\n\nWhen the update package gets larger than 2 GiB, payload.bin offset\nmentioned in metadata file for ota-streaming-property-files gets\nshifted (CrAU of payload.bin) because ZipInfo FileHeader() returns\nincorrect value. To solve the issue, offset is re-calculated from\nfixed bytes of central directory file header, filename length and\nextra length.\n\nTest: manually create an A/B update package and run it using\n      update_device.py\nBug: 111198589\n\nChange-Id: Iadb2e8bbff478d9b006bb155d57fea35968d84b7\n"
    },
    {
      "commit": "456853f95df07a8b87985395e8ce192a23aaa02b",
      "tree": "d37bfe0df2dc3b79e6aad402c00f612ff25cd509",
      "parents": [
        "f6b0daf427de7a407406f58a73978e774d3d4260",
        "20262ad1d3f8d620b7227fd8d9e13938243ce32f"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Mon Aug 13 15:41:43 2018 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Mon Aug 13 16:21:46 2018 -0700"
      },
      "message": "Merge remote-tracking branch \u0027aosp/upstream-master\u0027 into aosp/master.\n\nThe following change is reverted because aosp has newer libchrome.\n71818c84 Partially Revert 2b9d241\n\nAdded stub override for ReportInternalErrorCode().\nFixed RunPosinstallAction typo.\n\nBug: 112326236\nTest: update_engine_unittests\nChange-Id: Ieaae0eef425cbb1278067a48aa19b14ed056317a\n"
    },
    {
      "commit": "fdc488d61200fd3445033c61b01c3d6ddfa46bb2",
      "tree": "340db5d650f8a069f742893652ede651c6cd0dab",
      "parents": [
        "50dd2f03b827509c6f78cc4379d7f6c893517f6b"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Thu Jul 19 19:28:51 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Jul 23 21:04:44 2018 -0700"
      },
      "message": "update_payload: Modify payload_info_unittest.py\n\nThis patch modifies payload_info_unittest.py to run in the unittests and actives\nit in the run_unittests script.\n\nThis removes the dependency to the chromite utils used for unit testing and\ncreates small similar tools to capture those behaviors.\n\nBUG\u003dchromium:865845\nTEST\u003dunitests\n\nChange-Id: Ib931831ce9c4b0ae3fc2f62972db82ec2ec5897f\nReviewed-on: https://chromium-review.googlesource.com/1144643\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Xiaochu Liu \u003cxiaochu@chromium.org\u003e\n"
    },
    {
      "commit": "50dd2f03b827509c6f78cc4379d7f6c893517f6b",
      "tree": "29174fa776d1796bb9c18e9e61bb32b3c3b48a4e",
      "parents": [
        "d3a1e35bdfd412311998135dc8536a314c1078e5"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Thu Jul 19 19:21:29 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Jul 23 21:04:44 2018 -0700"
      },
      "message": "update_payload: import cros_payload_unittest.py as is\n\nimport from chromite/cli/cros/cros_payload_unittest.py\n\nBUG\u003dchromium:865845\nTEST\u003dnone\n\nChange-Id: I4b1d0a65e1e0d19cd230e90651075afad26eded2\nReviewed-on: https://chromium-review.googlesource.com/1144642\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Xiaochu Liu \u003cxiaochu@chromium.org\u003e\n"
    },
    {
      "commit": "5ec5bd1fe2834ce417d335901d5eb7cc888bf1e3",
      "tree": "2cd129a24515ea27d38352791ca6bd71364eaaa2",
      "parents": [
        "b432db81adf13012d4f1292162691b87726679bd"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Wed Jul 11 11:02:44 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jul 17 21:52:51 2018 -0700"
      },
      "message": "brillo_update_payload: Clean up arguments in calls to delta_generator\n\nThis commit normalizes using -- instead of a mix of - and -- prefixes to\ndelta_generator invocations. delta_generator accepts both.\n\nBUG\u003dchromium:862679\nTEST\u003dran commands\n\nChange-Id: I5688e8dc11b6d120ae785ebab76dac9f306b845c\nReviewed-on: https://chromium-review.googlesource.com/1133706\nCommit-Ready: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\n"
    },
    {
      "commit": "b432db81adf13012d4f1292162691b87726679bd",
      "tree": "04fb76145778f9fb6bab41c03ac377a94f1c2101",
      "parents": [
        "5c8c627ba7e5f9e291cd9f060e04c9b4bb4e759c"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Fri Jun 29 13:13:27 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jul 17 21:52:51 2018 -0700"
      },
      "message": "brillo_update_payload: Add paycheck.py-based check command\n\nThis commit adds a `check` command to brillo_update_payload that is\nanalogous to the existing `verify` command, but uses paycheck.py as a\nverification tool instead of delta_generator.\n\nBUG\u003dchromium:794404\nTEST\u003dresults from `check` match results from `verify`\n\nChange-Id: Ia0f4ca8508b16abaf538e38c478655cd40cbfc19\nReviewed-on: https://chromium-review.googlesource.com/1121100\nCommit-Ready: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "5c8c627ba7e5f9e291cd9f060e04c9b4bb4e759c",
      "tree": "eed3c7b071091b726359f0fbe88437a299c26194",
      "parents": [
        "0ff621cf717cd3c98461d217c857352cb6dae88a"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Wed Jun 20 14:35:57 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jul 17 21:52:50 2018 -0700"
      },
      "message": "update_payload: Drop usage of deprecated paycheck.py args from test_paycheck.sh\n\nThis commit removes usage of paycheck.py\u0027s --out_dst_kern, --out_dst_root,\n--dst_kern, --dst_root, --src_kern, --src_root in favor of the new\n--part_names used alongside --out_dst_part_paths, --dst_part_paths,\n--src_part_paths.\n\nBUG\u003dchromium:794404\nTEST\u003dno errors during run_unittests or test_paycheck.sh with both\n  version 1 and version 2 payloads\n\nChange-Id: I1580404301b3460ba6d014cd2cee343d94b8cda3\nReviewed-on: https://chromium-review.googlesource.com/1108960\nCommit-Ready: ChromeOS CL Exonerator Bot \u003cchromiumos-cl-exonerator@appspot.gserviceaccount.com\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "b220d669d465377e2bb55a37a7028c72d93dcef3",
      "tree": "694cb5ca136a0d6908fc72d9c6faa24595a84494",
      "parents": [
        "50a74d68e8667b3b1ffc21756e0371306426cd8c"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Tue Jul 10 23:55:51 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Wed Jul 11 18:48:45 2018 -0700"
      },
      "message": "update_payload: Make paycheck take \"root\" instead of \"rootfs\"\n\nThis commit makes paycheck take \"root\" as the rootfs partition label\ninstead of \"rootfs\", which makes it consistent with other tooling like\ndelta_generator.\n\nBUG\u003dchromium:794404\nTEST\u003dtest_paycheck.sh and run_unittests\n\nChange-Id: I20835e93adbcde459bc86d832e695b38bca55e38\nReviewed-on: https://chromium-review.googlesource.com/1132843\nCommit-Ready: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "dda79e2d9b306c408172d8aacb2ff3459e3bac6a",
      "tree": "7a94691ff0b0b8ddcea03f0394610140d0fa8a20",
      "parents": [
        "acd20391ab989971725a8b25ca9a08e1d5a7a3c8"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Thu Jun 28 18:03:21 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Jul 09 17:59:25 2018 -0700"
      },
      "message": "delta_generator: Use \"kernel\" and \"root\" partition names internally\n\nThis commit abandons using \"boot\" and \"system\" names internally for\nmajor version 1 payloads in favor of \"kernel\" and \"root\", which is\nsymmetrical with what\u0027s used in major version 2 payloads.\n\nBUG\u003dchromium:794404\nTEST\u003dno errors running brillo_update_payload with FORCE_MAJOR_VERSION\n  set to either 1 or 2; paycheck.py \u003cgenerated payload\u003e --check and\n  printing partition names in protobuf confirms correct names are\n  generated\n\nChange-Id: I396274812d5586e19a021c05b8b7a415aac976bf\nReviewed-on: https://chromium-review.googlesource.com/1119573\nCommit-Ready: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "acd20391ab989971725a8b25ca9a08e1d5a7a3c8",
      "tree": "9d9ad3f15a35d0cd064a23a48d690343cfa8a388",
      "parents": [
        "40506cd2777ca05dd166192f3ef72fd23f9125fc"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Tue Jun 19 11:46:16 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jun 26 23:44:10 2018 -0700"
      },
      "message": "update_payload: Implement applying for major version 2 payloads\n\nThis commit adds payload major version 2 support to paycheck.py\napplying.\n\nBUG\u003db:794404\nTEST\u003dno errors during run_unittests and paycheck.py \u003cmajor version 2\n  payload\u003e --part_names boot system --out_dst_part_paths /tmp/boot_part\n  /tmp/system_part (./test_paycheck.sh does not pass for major version 2\n  payloads since it currently does not detect version 2 payloads, and\n  specifies rootfs/kernel as the partitions to paycheck.py instead of\n  system/boot; no regressions when running on major version 1 payloads)\n\nChange-Id: Ic411607cee6f032851d1fa9545bed68fe2d3da77\nReviewed-on: https://chromium-review.googlesource.com/1106656\nCommit-Ready: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "40506cd2777ca05dd166192f3ef72fd23f9125fc",
      "tree": "7dbd004733ac72fbe564cf035a61ba9f266c2788",
      "parents": [
        "2d22c1a70cf41462b7564c610823543f91b37eb2"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Mon Jun 18 20:18:17 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jun 26 16:59:35 2018 -0700"
      },
      "message": "update_payload: Implement checking for major version 2 payloads\n\nThis commit adds payload major version 2 support to paycheck.py --check.\n\nFor consistency, report messages for affected fields are kept the same across\nboth major version 1 and 2 checks, even if the particular field name does not\nexist in one version.\n\nBUG\u003db:794404\nTEST\u003dno errors during run_unittests and paycheck.py --check \u003cmajor version 2\n  payload\u003e (./test_paycheck.sh does not pass for major version 2 payloads\n  since applying is not implemented yet; no regressions when running on major\n  version 1 payloads)\n\nChange-Id: I3c5d0cbca3336c8136326ca52b19f659c7c741c9\nReviewed-on: https://chromium-review.googlesource.com/1105610\nCommit-Ready: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "2d22c1a70cf41462b7564c610823543f91b37eb2",
      "tree": "2097ee4a77e7b7ff26700a07a65ed7e6764d3b20",
      "parents": [
        "8d05a7e15bfcc4f551a0f59be6d0d1eb083887e9"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Fri Jun 15 13:07:13 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Jun 25 17:20:25 2018 -0700"
      },
      "message": "update_payload: Allow specifying partition options for major version 2\n\nThis commit adds the ability to specify partition options for more than just\nkernel/rootfs.\n\nThis supersedes -p/--root-part-size, -P/--kern-part-size, --dst_kern,\n--dst_root, --src_kern, --src_root, --out_dst_kern, and --out_dst_root.\n\nThey are replaced by --part_names used in conjunction with --part_sizes,\n--dst_part_paths, --src_part_paths, and --out_dst_part_paths.\n\nBackwards-compatibility with the old flags is kept, so long as they are\nnot used alongside the new flags.\n\nBUG\u003db:794404\nTEST\u003dno errors during run_unittests and test_paycheck.sh\n\nChange-Id: Icc1118abbf89dd268be3eafe41723657c5178197\nReviewed-on: https://chromium-review.googlesource.com/1103063\nCommit-Ready: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "8d05a7e15bfcc4f551a0f59be6d0d1eb083887e9",
      "tree": "58b34442de114857e332245ee8a8128b8e5fec15",
      "parents": [
        "8b936f277f447d53e1c578d22bc7171a939473c7"
      ],
      "author": {
        "name": "Tudor Brindus",
        "email": "tbrindus@chromium.org",
        "time": "Thu Jun 14 11:18:18 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Thu Jun 21 19:56:28 2018 -0700"
      },
      "message": "update_payload: De-duplicate paycheck partition handling for major version 2\n\nThis commit makes handling of major version 2 rootfs/kernel partitions more\ngeneric, with the goal of reusing the same code paths for major version 2\n(which has an arbitrary number of partitions per payload).\n\nBUG\u003db:794404\nTEST\u003dno errors during run_unittests and test_paycheck.sh\n\nChange-Id: Ic6e8cdaae557c10dfbd302dba0e52ff8b2870c9f\nReviewed-on: https://chromium-review.googlesource.com/1101500\nCommit-Ready: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nTested-by: Tudor Brindus \u003ctbrindus@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "2a14d41ca514eca784b7b065791eaf97685caad8",
      "tree": "0200589c3edcdbc311ca64ff801ccf9d00d3c09e",
      "parents": [
        "8af23dfa874cf98a5ebbfc86c7783431002949c4"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Thu May 31 13:01:09 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jun 12 21:50:52 2018 -0700"
      },
      "message": "update_payload: Remove instances to au-generator\n\nWe now do paygen in chroot. There is no need for au-generator anymore. So remove\nall references to it.\n\nBUG\u003dchromium:808495\nTEST\u003dtryjob payload\n\nChange-Id: I0d0e76cc1dd7a742abdd9b3b457709044af98862\nReviewed-on: https://chromium-review.googlesource.com/1085547\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Nicolas Norvez \u003cnorvez@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "8af23dfa874cf98a5ebbfc86c7783431002949c4",
      "tree": "c08ee47a1c7bd35b22b9882ed34f524cbb0c9d72",
      "parents": [
        "0eae427a1dac5d2896a388e5a94aad5b52079371",
        "3538a883700a86c8224bff075e1cc4bab552d2ed"
      ],
      "author": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jun 05 15:59:36 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jun 05 15:59:36 2018 -0700"
      },
      "message": "Merge commit \u00273538a883700a86c8224bff075e1cc4bab552d2ed\u0027 into patch_branch\n\nChange-Id: I48fa7c6e8d3977813623d05353bb3c005d19ba83\n"
    },
    {
      "commit": "b4778293c31e2e16f60c245e2a2cf3f63151d52d",
      "tree": "cc8d49d45d66be828180478aa792b8877ad76788",
      "parents": [
        "ffbfdfb05d3ce4e9fe03aa103b63532870981771"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Mon May 21 11:48:15 2018 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Jun 04 17:23:28 2018 -0700"
      },
      "message": "update_engine: Rename signing variables.\n\nRename \u0027signatures\u0027 to \u0027payload_signatures\u0027 so there is a clear distinction\nbetween metadata and payload signatures and their input files.\n\nBUG\u003dchromium:845614\nTEST\u003dpayload tryjobs\nCQ-DEPEND\u003dCL:1069530\n\nChange-Id: Ic2e924871611af1b1f0ee2f1dfd7c6b9f52decc8\nReviewed-on: https://chromium-review.googlesource.com/1069527\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Nicolas Norvez \u003cnorvez@chromium.org\u003e\nReviewed-by: Xiaochu Liu \u003cxiaochu@chromium.org\u003e\n"
    },
    {
      "commit": "3538a883700a86c8224bff075e1cc4bab552d2ed",
      "tree": "cdaaf1a7f17ea4dbd3e9fe132e2c3208b646de48",
      "parents": [
        "ffbfdfb05d3ce4e9fe03aa103b63532870981771",
        "77ab7bdf2dcf7fd4aa982e654f359958ad7ab0c3"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Thu May 31 14:11:30 2018 -0700"
      },
      "committer": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Mon Jun 04 11:44:12 2018 -0700"
      },
      "message": "Merge remote-tracking branch \u0027cros/upstream\u0027 into cros/master\n\nBUG\u003dchromium:815356\nTEST\u003dunittest\nTEST\u003dprecq\nTEST\u003dcros flash\n\nChange-Id: I8d9c37411708d0cae61613b285123a090ce6deb1\n"
    },
    {
      "commit": "f3d7ac93e30d955d85db0176c3a949134c4037c6",
      "tree": "fe570574be4e970ea60b97472bab05617c109e51",
      "parents": [
        "e6f8f61a3e9549e11e3808681d9d1c696ea968cf",
        "be0780fd1515c2e2b5969c2cb89b2914271a4667"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed May 30 15:52:39 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 30 15:52:39 2018 -0700"
      },
      "message": "Add update_engine/scripts/payload_info.py am: e6e0f046a3\nam: be0780fd15\n\nChange-Id: I2d5457ccf1a468eb1683c4407692cda134bbb169\n"
    },
    {
      "commit": "e6e0f046a33db685c1312cda3a1d2634fbf9db0f",
      "tree": "90e7aaf0d5781c883d054ebe1722476bfeae6661",
      "parents": [
        "dcaf7974410a2674c8f6b315402082c7564e14ec"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu May 24 15:40:41 2018 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue May 29 17:23:41 2018 -0700"
      },
      "message": "Add update_engine/scripts/payload_info.py\n\nCopied from cros_payload.py, renamed to payload_info.py, removed\ndependency on chromite, fixed pylint issues, changed to AOSP license.\n\nusage: payload_info.py [-h] [--list_ops] [--stats] [--signatures] payload_file\n\nShow information about an update payload.\n\npositional arguments:\n  payload_file  The update payload file.\n\noptional arguments:\n  -h, --help    show this help message and exit\n  --list_ops    List the install operations and their extents.\n  --stats       Show information about overall input/output.\n  --signatures  Show signatures stored in the payload.\n\nBug: 28797993\nTest: payload_info.py --list_ops --stats --signatures payload.bin\n\nChange-Id: Id67a939243fa6ff4a4e9683c7711f71884ee3d6d\n"
    },
    {
      "commit": "df3a65f1472c502b1ade00299f47dfa51d994cca",
      "tree": "6fe952cc741bef39398e9d3b7b8ce6dc57408a96",
      "parents": [
        "4a196bae587daf3f27c5a95d2f32821655f098db",
        "00751159dfe09c717c0922cabaa4cf2aa7def191"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Apr 19 21:56:36 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 19 21:56:36 2018 -0700"
      },
      "message": "Additionally look for partition files under RADIO/ in target_files zip. am: 07216d6fd7\nam: 00751159df\n\nChange-Id: I18d6a3f34c8436aec20fc557a35943adfc14ca83\n"
    },
    {
      "commit": "07216d6fd7a160130b0bd88b6f74db6a8c81883a",
      "tree": "d9e58cd1023cbf193befbf2495ea8c406ce6b17f",
      "parents": [
        "84f507bec3b596756e04134fd0e4ece8d53e358b"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Wed Apr 11 11:36:38 2018 -0700"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Apr 19 19:03:24 2018 -0700"
      },
      "message": "Additionally look for partition files under RADIO/ in target_files zip.\n\nWith this change, we will in turn look for partition image files under\nIMAGES/ and RADIO/ in a given Android/Brillo target_files zip file.\n\nWe used to request the caller (e.g. ota_from_target_files.py) to have\nall the updatable images ready under IMAGES/, by possibly copying some\nof them from RADIO/ to IMAGES/. This CL avoids that cost, and keeps\nworking with legacy target_files zip files.\n\nBug: 77218220\nTest: `m dist` produces the same full OTA package with the matching\n      change to ota_from_target_files.py.\nTest: It keeps working with legacy target_files zip that has everything\n      under IMAGES/.\nChange-Id: I9485508991115774ddbe70c1c235adf6806d91a4\n"
    },
    {
      "commit": "6d7c0a578b330a7d8b5af412c7f3f197bbd557c5",
      "tree": "983dd61a29c3fa8576ec7cc6797d61d95ded98a2",
      "parents": [
        "8905bd8bd617a9194f29eb44ff5d71262fcf4b7d",
        "5e67287bc19e37ab071a2c3aa8edb8cad511041a"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Apr 05 16:25:12 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 05 16:25:12 2018 -0700"
      },
      "message": "Correct some spellings. am: 771f6486a3\nam: 5e67287bc1\n\nChange-Id: I98a5bd68116da28a5bbcc61da6830e188d854be0\n"
    }
  ],
  "next": "771f6486a3b0333d43a2f8c743bfb945dca9db2c"
}
