)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "771f6486a3b0333d43a2f8c743bfb945dca9db2c",
      "tree": "c72aa56680550f17c2b60621a1ede140f550aec8",
      "parents": [
        "a57d53e3edbda255a938a7dc76a2f38faeb520d4"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Apr 04 17:59:10 2018 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Apr 04 18:07:19 2018 -0700"
      },
      "message": "Correct some spellings.\n\nTest: mma\nChange-Id: Icc49a4ee76f12d302ed18982d334f2f70b7263a8\n"
    },
    {
      "commit": "a86b108fc604d296edbd3f6c158a17175ef6f9fe",
      "tree": "676c8ff56725a680fecc47584223d1164d09f46d",
      "parents": [
        "89afe86b007d21d11f3d4b6e139d300b411d2e17"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Mar 08 15:48:59 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Fri Mar 23 14:51:11 2018 -0700"
      },
      "message": "update_payload: Allow check for given metadata size\n\nAllow passing metadata size to check_update_payload so we can verify the\nmetadata size in omaha equals to the one in the payload.\n\nBUG\u003dchromium:820243\nTEST\u003drun paycheck.py with both valid and invalid metadata sizes reports as expected\nTEST\u003dunittests\n\nChange-Id: Ib41ce77af77636fffec6752201c363e7fbbf868d\nReviewed-on: https://chromium-review.googlesource.com/955679\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "7bee1b437e04d2a6c1b29179fd99261b39316129",
      "tree": "a3d97e841a55362f667fb0261842ad9b9bf0cc7a",
      "parents": [
        "880e2be7471409e68de790fa9c20bc4348a9c694",
        "f7006be5079ed91c93223273f3ddb69d655ba858"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Mar 09 15:01:33 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Mar 09 15:01:33 2018 -0800"
      },
      "message": "Merge remote-tracking branch \u0027goog/upstream-master\u0027.\n\nBug: 30989362\nTest: update_engine_unittests\nChange-Id: I04417ac21508f4da3ead29b1dea34886f2fc84af\nMerged-In: I04417ac21508f4da3ead29b1dea34886f2fc84af\n"
    },
    {
      "commit": "84e0e31e0c55ca1cec966991f22fe9f494534afa",
      "tree": "4c17bdbc93e22a0904d50fac7cb8df423cae3b28",
      "parents": [
        "f87e5cd57a7d543c54327e342cea7f46fd819a90",
        "f7006be5079ed91c93223273f3ddb69d655ba858"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Mar 08 18:07:12 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Mar 09 14:32:19 2018 -0800"
      },
      "message": "Merge remote-tracking branch \u0027aosp/upstream-master\u0027.\n\nBug: 30989362\nTest: update_engine_unittests\nChange-Id: I04417ac21508f4da3ead29b1dea34886f2fc84af\nMerged-In: I04417ac21508f4da3ead29b1dea34886f2fc84af\n"
    },
    {
      "commit": "e20eb915eb1d9777bbcdcffb324ce92014cafa79",
      "tree": "8f026a68a3cd4d595cc8cb1b41ccdfe4a3aa1dd7",
      "parents": [
        "13ca39f04b9d9db5571a93944809af010a1feb2c"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Feb 21 12:39:42 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Mar 05 18:34:39 2018 -0800"
      },
      "message": "update_payload: Allow paycheck.py to compare apply results.\n\nCurrently paycheck.py only applies the payloads. The responsibility of checking\nif the final root and kernel partitions are what we wanted is out of\npaycheck.py. Currently when paycheck.py runs and applies a payload files passed\nby --dst_kern and --dst_root are populated with the newly generated partitions\nby applier.py. This patch adds two new flags --out_dst_kern and --out_dst_root\nso instead paychek.py outputs the new partitions into paths passed by these\nflags and --dst_kern and --dst_root is reserved for passing the actual original\npartitions that newly generated partitions need to be compared to. This allows\npaycheck.py to check the newly generated partitions against the given ones and\nmake sure they are equal.\n\nBUG\u003dchromium:808495\nTEST\u003dtest_paycheck.sh old.full delta.bin new.full\n\nChange-Id: I57a476de1477e3cba7557d0564b49ec03253c047\nReviewed-on: https://chromium-review.googlesource.com/929652\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "77d7cbcef1ca1afd36720ec7ec74039b5445101e",
      "tree": "6305cce22e391284bc5b06bce00928ba7fb8d69d",
      "parents": [
        "15de2fd0ff2d19a7ef36a0f28bb5df028163605c"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Feb 07 16:21:33 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Thu Feb 08 23:41:46 2018 -0800"
      },
      "message": "update_engine: Disable puffin in minor version 4\n\nThis patch disables puffin for minor version 4, but keeps BROTLI_BSDIFF in the\nsame minor version.  Also adds puffin for minor version 5, but it does not\nenable it.\n\nBUG\u003db:72815313\nBUG\u003dchromium:810184\nTEST\u003dupdate_engine unittests pass\nTEST\u003dupdate_payload unittests pass\nTEST\u003dtest_paycheck.sh on two images with minor version 4 pass\nTEST\u003dbrill_update_payload generate/verify pass\n\nChange-Id: I814fc126d67207501d419cff9c575cd13d877b48\nReviewed-on: https://chromium-review.googlesource.com/907223\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "f94b643ff1bb0f07204ec9f15289b55ac5fedacd",
      "tree": "4ea3f6f7d1afa56c9b48ddf3eee261d19cf32259",
      "parents": [
        "ddd335f36bb8496548f31b3c9bf923074c1a7452"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Fri Jan 26 17:39:47 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jan 30 14:54:19 2018 -0800"
      },
      "message": "update_payload: migrate the license headers to AOSP\n\nupdate_engine/scripts/* have CROS license but the rest of UE have android\nlicense. This cl just migrates all CROS licenses to AOSP.\n\nBUG\u003dNone\nTEST\u003drepo upload did not complain about the mismatched licenses.\n\nChange-Id: Id947be3e860baf7a523163965336f47d268c6808\nReviewed-on: https://chromium-review.googlesource.com/891688\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "ddd335f36bb8496548f31b3c9bf923074c1a7452",
      "tree": "4e4dc79b9560f1431d603ea5957818ed7e63a946",
      "parents": [
        "a548902f8e836b280439d69eaea16c85a3032237"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Jan 25 15:59:44 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jan 30 03:56:27 2018 -0800"
      },
      "message": "update_payload: fix an argument typo\n\nJust fix a problem in test_paycheck.py that wasn\u0027t caught in CL:834876\n\nBUG\u003dnone\nTEST\u003dtest_paycheck.py\n\nChange-Id: I54dd5bcc97d059f3977a97851204fd6c38507224\nReviewed-on: https://chromium-review.googlesource.com/887731\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "a548902f8e836b280439d69eaea16c85a3032237",
      "tree": "4de3962e21db83eb0781d0bb206440b53448c32b",
      "parents": [
        "cb2da0df4382f546efd4269851ce814842a4b7fd"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Fri Jan 26 11:23:26 2018 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Jan 29 16:38:32 2018 -0800"
      },
      "message": "update_payload: remove block tracer\n\nblock tracing was useful for minor version 1 with move operations (before having\nA/B updates). But, we do not create that operation anymore and we are in the\nprocess of moving to major version 2. So this needs to go\n\nBUG\u003dchromium:794404\nTEST\u003dunit tests\n\nChange-Id: I56d24ef81e8f37c481669d47e5878eb3a321131f\nReviewed-on: https://chromium-review.googlesource.com/888546\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "52b6039e9c79c20786793e2d1215e20b258f2284",
      "tree": "24ca54298fb7fb5da38123a73296571f331bacb6",
      "parents": [
        "0de7f7847ff2a101a905b75d2ed0867d5ac8fba7"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Tue Dec 19 10:53:24 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jan 23 17:41:54 2018 -0800"
      },
      "message": "update_payload: use argparse\n\noptparse is deprecated (or going to be). Change paycheck.py and\nblockdiff.py to use argparse instead. Both of these files are being used\nmanually and it would be a good time to fix these before major changes\nin update_payload.\n\npaycheck.sh -h:\n\nusage: paycheck.py [-h] [-c] [-D] [-r FILE] [-t {full,delta}] [-z NUM] [-u]\n                   [-d] [-k FILE] [-m FILE] [-p NUM] [-P NUM] [-x]\n                   [--bspatch-path FILE] [--puffpatch-path FILE]\n                   [--dst_kern FILE] [--dst_root FILE] [--src_kern FILE]\n                   [--src_root FILE] [-b BLOCK] [-B BLOCK] [-s NUM]\n                   PAYLOAD\n\nApplies a Chrome OS update PAYLOAD to src_kern and src_root emitting dst_kern and dst_root, respectively. src_kern and src_root are only needed for delta payloads. When no partitions are provided, verifies the payload integrity.\n\npositional arguments:\n  PAYLOAD               the payload file\n\noptional arguments:\n  -h, --help            show this help message and exit\n\nChecking payload integrity:\n  -c, --check           force payload integrity check (e.g. before applying)\n  -D, --describe        Print a friendly description of the payload.\n  -r FILE, --report FILE\n                        dump payload report (`-\u0027 for stdout)\n  -t {full,delta}, --type {full,delta}\n                        assert the payload type\n  -z NUM, --block-size NUM\n                        assert a non-default (4096) payload block size\n  -u, --allow-unhashed  allow unhashed operations\n  -d , --disabled_tests\n                        space separated list of tests to disable. allowed\n                        options include: dst-pseudo-extents, move-same-src-\n                        dst-block, payload-sig\n  -k FILE, --key FILE   override standard key used for signature validation\n  -m FILE, --meta-sig FILE\n                        verify metadata against its signature\n  -p NUM, --root-part-size NUM\n                        override rootfs partition size auto-inference\n  -P NUM, --kern-part-size NUM\n                        override kernel partition size auto-inference\n\nApplying payload:\n  -x, --extract-bsdiff  use temp input/output files with BSDIFF operations\n                        (not in-place)\n  --bspatch-path FILE   use the specified bspatch binary\n  --puffpatch-path FILE\n                        use the specified puffpatch binary\n  --dst_kern FILE       destination kernel partition file\n  --dst_root FILE       destination root partition file\n  --src_kern FILE       source kernel partition file\n  --src_root FILE       source root partition file\n\nBlock tracing:\n  -b BLOCK, --root-block BLOCK\n                        trace the origin for a rootfs block\n  -B BLOCK, --kern-block BLOCK\n                        trace the origin for a kernel block\n  -s NUM, --skip NUM    skip first NUM occurrences of traced block\n\nNote: a payload may verify correctly but fail to apply, and vice versa; this is by design and can be thought of as static vs dynamic correctness. A payload that both verifies and applies correctly should be safe for use by the Chrome OS Update Engine. Use --check to verify a payload prior to applying it.\n\nBUG\u003dchromium:796338\nTEST\u003dunitests\nTEST\u003dtest_paycheck.sh\nTEST\u003dblockdiff.py\n\nChange-Id: I794b5f61e6ba6f92939947c97c432f9fea0b6b3c\nReviewed-on: https://chromium-review.googlesource.com/834876\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "0de7f7847ff2a101a905b75d2ed0867d5ac8fba7",
      "tree": "3cd366603d173fa7ed9cb0d3ef1b7a71ce1407a0",
      "parents": [
        "840703a4cc77228e2606f45665ae3a4bd75ff7dd"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Dec 07 12:13:03 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jan 23 01:48:49 2018 -0800"
      },
      "message": "Relanding \u0027update_payload: Add XZ compression support\u0027\n\nThis patch adds support for checking a payload that has REPLACE_XZ\noperations. REPLACE_XZ was added in minor version 3.\n\nBUG\u003dchromium:758792\nTEST\u003dunittests pass; paycheck.py with a xz generated payload pass;\nCQ-DEPEND\u003dCL:823234\n\nChange-Id: I6ec8068e233f2d595fda93a985923d85c59f150e\nReviewed-on: https://chromium-review.googlesource.com/872124\nCommit-Ready: ChromeOS CL Exonerator Bot \u003cchromiumos-cl-exonerator@appspot.gserviceaccount.com\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "1841408827c93f8ba7bb44ba95a8fb3438762b9d",
      "tree": "22bc43f3ff506165d006e62347255c2a2c2bf2ec",
      "parents": [
        "b19c3ec7bda83b15c7fc659f65eb6f92ca84f9c4",
        "840703a4cc77228e2606f45665ae3a4bd75ff7dd"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Jan 11 14:50:36 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Thu Jan 11 14:50:36 2018 -0800"
      },
      "message": "Merge remote-tracking branch \u0027goog/upstream-master\u0027.\n\nThe following commits were reverted:\n840703a Fix update over cellular network on guest account\neaad5d0 Do not merge to AOSP: Fixes the link to brillo-clang-format in CrOS\n740efad Reboot even if a system update is not available.\n\nFixed a few sign compare warnings.\nHad to ifdef out 2 SquashfsFilesystemTest because it depends on unsquashfs -m.\n\nTest: update_engine_unittests\nChange-Id: I6f4ca5003e78c76064ec60d0797505d8c18d00bf\nMerged-In: I6f4ca5003e78c76064ec60d0797505d8c18d00bf\n"
    },
    {
      "commit": "44906965d0809992052e47e11809ec730813d8b0",
      "tree": "b2221d82b71ff9cabd739cdeac405dd497cfe8f1",
      "parents": [
        "0473e36cba6f27de1310a9a2f1c21d489b6226f4",
        "840703a4cc77228e2606f45665ae3a4bd75ff7dd"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Mon Jan 08 17:39:04 2018 -0800"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Mon Jan 08 18:43:22 2018 -0800"
      },
      "message": "Merge remote-tracking branch \u0027goog/upstream-master\u0027.\n\nThe following commits were reverted:\n840703a Fix update over cellular network on guest account\neaad5d0 Do not merge to AOSP: Fixes the link to brillo-clang-format in CrOS\n740efad Reboot even if a system update is not available.\n\nFixed a few sign compare warnings.\nHad to ifdef out 2 SquashfsFilesystemTest because it depends on unsquashfs -m.\n\nTest: update_engine_unittests\nChange-Id: I6f4ca5003e78c76064ec60d0797505d8c18d00bf\nMerged-In: I6f4ca5003e78c76064ec60d0797505d8c18d00bf\n"
    },
    {
      "commit": "b05a65a748bd2e2542e7b05f629d3bc69c8d8135",
      "tree": "ed736d196e5f908deeb450ffdacdc16432d74b77",
      "parents": [
        "8adc24346405a142e7d3b65c3e4aee0515320f73"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Mon Dec 18 15:15:32 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Fri Jan 05 18:37:15 2018 -0800"
      },
      "message": "update_payload: Fix most of lint styling issues.\n\nThis patch fixes a lot of pylint issues in the update_engine scripts. Majority\nof this changes are based on recommendation found in:\n\thttps://www.chromium.org/chromium-os/python-style-guidelines\n\nIt is a good idea to do these changes now, because if there are many pylint\nerrors when performing \u0027repo upload\u0027, serious problems can be overshadowed by a\nlot of noise and eventually cause problems.\n\nThese fixes include:\n\t- Fixing executable shebangs to /usr/bin/python2.\n\t- Fixing import-error problems by disabiling them.\n\t- Removing pylint disables that are not valid anymore.\n\t- Changing all imports to proper absolute import format.\n\t- Change the import of PayloadError from update_payload.PayloadError for\n\t  simplicity.\n\t- Add pydoc strings for functions and classes that were missing.\n\nThe remaining unchanged pylint problmes include:\n\n\t- The header files of these scripts are in CrOS copyright format, but the\n      the cros lint hook is configured to AoSP copyright format.\n\t- The test* functions in unittests are not compatible with CamelCase format.\n\nBUG\u003dchromium:796338\nTEST\u003dunittests pass\nTEST\u003dstart_devserver\nTEST\u003dcros flash\nTEST\u003dscripts/paycheck.py\n\nChange-Id: I7eed4d1625eb7c510c7949fada120de5a6a26c7b\nReviewed-on: https://chromium-review.googlesource.com/834875\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "8adc24346405a142e7d3b65c3e4aee0515320f73",
      "tree": "8317393ef148c9ce6bbc83e8ff1ff8715f43ab05",
      "parents": [
        "5a652867dceedb7bba3e840403a00d9a1ed9e0f8"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Aug 15 18:20:24 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Thu Jan 04 21:52:07 2018 -0800"
      },
      "message": "Fix pylint warnings in update_device.py\n\nWe weren\u0027t actually using our own pylintrc file in repo upload hook,\nwhich will be fixed by https://android-review.googlesource.com/#/c/platform/tools/repohooks/+/458996/\n\nEven though both camel case and snake case are allowed for function\nand method names, they still have to be consistent in a single file.\nhttps://pylint.readthedocs.io/en/latest/user_guide/options.html#multiple-naming-styles\n\nBug: 27316596\nTest: repo upload\nChange-Id: I98adba957a547115ef3d8b00fe2e3e4931707b31\n(cherry picked from commit 1048559a5c8b6c897aee6c8095035fc7724ae340)\nReviewed-on: https://chromium-review.googlesource.com/848502\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "5a652867dceedb7bba3e840403a00d9a1ed9e0f8",
      "tree": "54e7af19f9a5436d1fb98561922b5d5ca8fca4c9",
      "parents": [
        "d9cb290966a77730010aa01f0db675c157cd5c8f"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Sep 27 16:35:03 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Thu Jan 04 19:17:55 2018 -0800"
      },
      "message": "Fix pylint issue in payload.py\n\n    ************* Module update_payload.payload\n    W: 12, 0: Relative import \u0027applier\u0027, should be \u0027update_payload.applier\u0027 (relative-import)\n    W: 13, 0: Relative import \u0027block_tracer\u0027, should be \u0027update_payload.block_tracer\u0027 (relative-import)\n    W: 14, 0: Relative import \u0027checker\u0027, should be \u0027update_payload.checker\u0027 (relative-import)\n    W: 15, 0: Relative import \u0027common\u0027, should be \u0027update_payload.common\u0027 (relative-import)\n    W: 16, 0: Relative import \u0027error\u0027, should be \u0027update_payload.error\u0027 (relative-import)\n    W: 17, 0: Relative import \u0027update_metadata_pb2\u0027, should be \u0027update_payload.update_metadata_pb2\u0027 (relative-import)\n    C:222, 4: Missing function docstring (missing-docstring)\n    E:261,33: Instance of \u0027DeltaArchiveManifest\u0027 has no \u0027partitions\u0027 member (no-member)\n\nTest: repo upload\nChange-Id: Ib3e99c6a3a5ea4575b442e672a871adc7b985289\n(cherry picked from commit c2527f492e7a1389b2a3f248bd2b22d6cf5d9eb8)\nReviewed-on: https://chromium-review.googlesource.com/834874\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "b9e91efc7f9b5bb7cb839e9c50c5969eb0f824e8",
      "tree": "a6a3303114d970c20cb6a77316dd071f84aaa43f",
      "parents": [
        "afd8cea0060751f969f7d4d20b4c4100ff37626d"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Tue Dec 19 14:04:51 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Jan 02 18:34:14 2018 -0800"
      },
      "message": "update_payload: add run_unittests script\n\nThis allows adding new unittests or modifying them without dealing with\nthe ebuild itself.\n\nBUG\u003dchromium:796338\nTEST\u003dunittests pass\n\nChange-Id: I0876d38a3460b07f611c49554f0a5b2357e09d1f\nReviewed-on: https://chromium-review.googlesource.com/834873\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "b44f73baa8d302a077ab1c0c73eac63bd02350e5",
      "tree": "35b86db22317dd8be45863ee69b722666bb949a2",
      "parents": [
        "717c324c334cc3bac954101f7a127fe8ef56e4e6"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@chromium.org",
        "time": "Fri Dec 15 17:45:49 2017 +0000"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Fri Dec 15 22:19:46 2017 -0800"
      },
      "message": "Revert \"update_payload: Add XZ compression support\"\n\nThis reverts commit f1d6ceaedbcf81044d6af6b716c63ed79996f0a4.\n\nReason for revert: \u003ccanaries failing\u003e\n\nOriginal change\u0027s description:\n\u003e update_payload: Add XZ compression support\n\u003e\n\u003e This patch adds support for checking a payload that has REPLACE_XZ\n\u003e operations. REPLACE_XZ was added in minor version 3.\n\u003e\n\u003e BUG\u003dchromium:758792\n\u003e TEST\u003dunittests pass; paycheck.py with a xz generated payload pass;\n\u003e CQ-DEPEND\u003dCL:823234\n\u003e\n\u003e Change-Id: If82c767a201b189e464f459d5c19485e5278d9b1\n\u003e Reviewed-on: https://chromium-review.googlesource.com/823227\n\u003e Commit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\n\u003e Tested-by: Amin Hassani \u003cahassani@chromium.org\u003e\n\u003e Reviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n\u003e Reviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n\nTBR\u003dbenchan@chromium.org,senj@chromium.org,ahassani@chromium.org\n\nChange-Id: I931ff3be081a41fe5fceef0e049ba4165c6acb49\nNo-Presubmit: true\nNo-Tree-Checks: true\nNo-Try: true\nBug: chromium:795313\nReviewed-on: https://chromium-review.googlesource.com/830054\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: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "f1d6ceaedbcf81044d6af6b716c63ed79996f0a4",
      "tree": "6d9ff030936cf241c7871ccef4266284f8fe1325",
      "parents": [
        "9fd76b6b1dc4a80f8464427e981220c29abc1d66"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Dec 07 12:13:03 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Thu Dec 14 15:26:58 2017 -0800"
      },
      "message": "update_payload: Add XZ compression support\n\nThis patch adds support for checking a payload that has REPLACE_XZ\noperations. REPLACE_XZ was added in minor version 3.\n\nBUG\u003dchromium:758792\nTEST\u003dunittests pass; paycheck.py with a xz generated payload pass;\nCQ-DEPEND\u003dCL:823234\n\nChange-Id: If82c767a201b189e464f459d5c19485e5278d9b1\nReviewed-on: https://chromium-review.googlesource.com/823227\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "6be716878b4027e6c2617bb7c3ce2c877331d1d2",
      "tree": "54424828536dd8d3082e9a065a7d472e37e9047f",
      "parents": [
        "7bc9c02869b90a5876bd74a97693a866f1c5ea5e"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Fri Dec 01 10:46:45 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Fri Dec 01 20:32:30 2017 -0800"
      },
      "message": "update_payload: Add puffin binary path to paycheck.py\n\nWe forgot to add the path to the puffin binary to paycheck.py and payload.py and\nthis caused the canary builds fail for minor version 4. This patch fixes it.\n\nBUG\u003dchromium:791079\nTEST\u003dtryjob\n\nChange-Id: I194ab9d9d0b93fc9d456b994f73424d7dedbf181\nReviewed-on: https://chromium-review.googlesource.com/803656\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Andrew de los Reyes \u003cadlr@chromium.org\u003e\n"
    },
    {
      "commit": "efa62d959cf8f225477ab85d8ff42d5150007cf8",
      "tree": "fc0c2b20c5fbf01e6ca2c53d3441f8a90524cd6a",
      "parents": [
        "02855c25944b8d64e569e9e8051be514acf40438"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Thu Nov 09 13:46:56 2017 -0800"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Wed Nov 22 17:29:40 2017 -0800"
      },
      "message": "update_engine: Adds BROTLI_BSDIFF operation\n\nBrotli compression creates on average 10%-20% smaller output than bzip2\nin addition to having faster decompressor. With recent changes in bsdiff\nto compress the its patch with brotli, we can use it in the\nupdate_engine as a new operation BROTLI_BSDIFF. This operation will be\nturned on in minor version 4. However, this CL only adds support for it\nin the client. It will not generate BROTLI_BSDIFF operations yet.\n\nBUG\u003dchromium:783437\nTEST\u003dunittests pass for both update_engine and update_payload;\n\u0027brillo_update_payload {generate|verify}\u0027 passes;\n\u0027scripts/paycheck.py payload.delta\u0027 passes;\n\nChange-Id: Ie791ba5431561c95de6fbc031a8196dbfd912288\nReviewed-on: https://chromium-review.googlesource.com/764791\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\n"
    },
    {
      "commit": "84743e3cccf2c48516ec5d7c9ad163aae7aed4f9",
      "tree": "6f97a9b60edc0b61e79e87453ad613f0ae63186d",
      "parents": [
        "e08cdbf2e13d91d433ad13dd3f24336ca8b009d1",
        "d4f48dea2f3bc33238911de59d32021bbbb6594c"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Nov 01 21:25:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 01 21:25:10 2017 +0000"
      },
      "message": "update_device.py: support passing extra headers. am: 6fbfd7d945\nam: d4f48dea2f\n\nChange-Id: I185fd004e397d702e0dd74eb5fb54f7bfc95c7d5\n"
    },
    {
      "commit": "6fbfd7d945c69dfa7d8fe0038d3128949723b9e9",
      "tree": "1249ae360cfd945f51f1772dd3f38984d9db566e",
      "parents": [
        "34c711a0bd9d8ff0650ce18cbcaa436c6720fd6a"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Oct 31 16:16:56 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Oct 31 18:46:38 2017 -0700"
      },
      "message": "update_device.py: support passing extra headers.\n\nTest: update_device.py --extra-headers \u0027SWITCH_SLOT_ON_REBOOT\u003d0\u0027 ...\nChange-Id: I5902153329243e6dc55d767d87bc974f206d32e0\n"
    },
    {
      "commit": "cdeb6e60ad4837afff97a370b6ea39dc98146a36",
      "tree": "10bc13a3eeeee5d47e0282033bbf1cc7fe70a1c9",
      "parents": [
        "672c1f54a499a825cc0bb9bc4f240bf1887550d9"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Oct 11 10:15:11 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Oct 31 17:31:03 2017 -0700"
      },
      "message": "update_payload: Add puffdiff support.\n\nThis patch adds support for applier.py to be able to apply PUFFDIFF\noperation using puffin binary. It also fixes minor deficiencies for the\nPUFFDIFF operation.\n\nBUG\u003dchromium:768461\nTEST\u003dunittests pass;\nTEST\u003dscripts/paycheck.py payload-puffin.delta new_kern.dat new_root.dat old_kern.dat old_root.dat\n\nChange-Id: I5612ead8d8b8176e7263cfcb15403e8d36319642\nReviewed-on: https://chromium-review.googlesource.com/713540\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "e08cdbf2e13d91d433ad13dd3f24336ca8b009d1",
      "tree": "057fb1184724bee5ed2c3765c15ab0df04e72e5d",
      "parents": [
        "5c62b9dad72a153aa07b5cff355f8dd6e31a7447",
        "c4b29b8f794f412a23f38170de8aa33014e34baf"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Oct 27 20:05:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 27 20:05:01 2017 +0000"
      },
      "message": "Remove duplicates in ab_partitions.txt am: 34c711a0bd\nam: c4b29b8f79\n\nChange-Id: I4eb223f5eac637d5f7f07ab83187b039191ecac4\n"
    },
    {
      "commit": "34c711a0bd9d8ff0650ce18cbcaa436c6720fd6a",
      "tree": "bc639309d73467395b882c28f823559ad33b8d02",
      "parents": [
        "908da19072b9a28bb4de87959a96bcf2df7679b4"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Oct 25 17:25:21 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Oct 27 19:52:06 2017 +0000"
      },
      "message": "Remove duplicates in ab_partitions.txt\n\nab_partitions.txt is populated by AB_OTA_PARTITIONS which might be\nappended in multiple makefiles resulting in duplicates, currently\nthis will result in payload being larger because it will include the\noperations for that partition twice and the client will write that\npartition twice when applying that payload.\n\nThis patch uses awk in brillo_update_payload when reading\nab_partitions.txt to remove the duplicates.\n\nTest: generate a payload with duplicated entries in ab_partitions.txt\nChange-Id: I07bd2401a64fbc77bbdc632901016e3860dee8d9\n"
    },
    {
      "commit": "5c077d73146604059ee5dcb5da0466fcd51df10e",
      "tree": "e931d0c7813382568193ab01fb3eecc3f8dfc680",
      "parents": [
        "3bcd726a6202c912f8814b6c47c831fd25a55441",
        "3b5668f4aebc1ee7a09e6612a2f9c931f4e9127d"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Wed Oct 25 21:14:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 25 21:14:39 2017 +0000"
      },
      "message": "update_device.py: Handle the package push without \u0027adb root\u0027. am: abb45a5542\nam: 3b5668f4ae\n\nChange-Id: Ia238f9f231539e84d88ea2191a3057c84fcd4e60\n"
    },
    {
      "commit": "abb45a5542fedd2a7c587aa91402b21f606bc259",
      "tree": "03955220412b2bb73fa38a0f2546df7ab4ab8624",
      "parents": [
        "d4c5debc65bb35ee61c2764bda059b7f307fd093"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Wed Oct 25 11:13:03 2017 -0700"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Wed Oct 25 21:09:25 2017 +0000"
      },
      "message": "update_device.py: Handle the package push without \u0027adb root\u0027.\n\nWhen using \u0027--file\u0027 (and without \u0027--no-push\u0027), it tries to push the\npackage to /data/ota_package/debug.zip. However, that\u0027s not allowed\ndirectly with \u0027adb push\u0027, unless by restarting adb with \u0027adb root\u0027.\n\nThis CL works around the issue by pushing the file to /data/local/tmp\nfirst, then moving it over to the desired place.\n\nTest: update_device.py --file \u003cmarlin-ota.zip\u003e\nChange-Id: I608284cc90918fc01cf7584569d4d7d4165148ca\n"
    },
    {
      "commit": "8ad22ba0765dc6351bfd59da8c43e06476b56c01",
      "tree": "905728dbdd3a472f391d0268e8cd9006f653cc57",
      "parents": [
        "f5a06d8e9f709824d768d7a15f1384668e7a4858"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Oct 11 10:15:11 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Tue Oct 24 15:30:13 2017 -0700"
      },
      "message": "update_payload: Add zero operation support\n\nCurrenlty the applier.py and checker.py does not support ZERO\noperation. This patch adds support for it. In addition, when generating\nZERO operation, we were not clearing the source length and extent\nproperties out of the protobuf. ZERO operation has no source length or\nextent.\n\nBUG\u003dchromium:768461\nTEST\u003dunittest pass; scripts/paycheck.py --check payload.delta;\n\nChange-Id: I766deaca4380686797893c2686036d59525546f4\nReviewed-on: https://chromium-review.googlesource.com/713539\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "8e768e9359d01008b286db1f6c54a6c3972a56b9",
      "tree": "0cae4fb21b0769cca98fb3f511a53a609e8fe3b6",
      "parents": [
        "9ae5f7f85f10997e8a3af2e2afa27891c05fbac7"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Jun 28 17:13:19 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Oct 24 15:11:43 2017 -0700"
      },
      "message": "Add maximum timestamp to the payload.\n\nAdded a new field max_timestamp in the protobuf, from now on\nupdate_engine will reject any payload without this field.\nIf the OS build timestamp is newer than the max_timestamp, the payload\nwill also be rejected to prevent downgrade.\n\nBug: 36232423\nTest: update_engine_unittests\n\nMerged-In: Ib20f5f35aaf41165013bada02bc8720917358237\nChange-Id: Ib20f5f35aaf41165013bada02bc8720917358237\n(cherry picked from commit 5011df680621eb477cad8b34f03fba5b542cc2f9)\n"
    },
    {
      "commit": "5c9082dd722318d736158a90ff85a9d57bc0ffe5",
      "tree": "fd7bf6e63036f8de90696e3613f7ef187f8923af",
      "parents": [
        "684c9cdc6c43992cf700618b4a87e4a723b4c9c3"
      ],
      "author": {
        "name": "markdr",
        "email": "markdr@google.com",
        "time": "Fri Oct 20 13:58:06 2017 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 21 00:14:19 2017 +0000"
      },
      "message": "Defaults update_device to use only compatible python versions\n\nupdate_device imports BaseHTTPServer, which is python2 only.\nIf python3 is the default python, an import error will be\nthrown.\n\nTest: Set default python to 3.4. Call update_device.py\nChange-Id: Id053e695c334c597736b9844e11be389264700ea\n"
    },
    {
      "commit": "ae85374770d4492d28e62d792824eea55349c981",
      "tree": "6c9a2649d1cba64a81982927d965becb318cde90",
      "parents": [
        "a6f74d62033fb0291aa1d135fef640e26ffffab5"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Oct 11 10:27:27 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Mon Oct 16 14:14:00 2017 -0700"
      },
      "message": "update_payload: Fix larger source issue\n\nthe _CheckOperations() function passes the new usable partition size as the old\nusable partition size.  If the source image is larger than the target image,\nthis will be errornous as some checks fail.\n\nBUG\u003dchromium:773336\nTEST\u003dscripts/paycheck.py --check delta.bin (10002.0.0 reef -\u003e 10019.0.0 reef)\n\nChange-Id: I8c30129831daff8e70df3dcb9639ff240e4a37ba\nReviewed-on: https://chromium-review.googlesource.com/713463\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "3ba7a0819210d3e7d016f771c298865cae19efd4",
      "tree": "b7c28b4d6a98c0e8ec66466dc286b5637fed23a3",
      "parents": [
        "acd7be816579a0c13ac6f746a2555b7c73f95a3b"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Oct 06 01:23:28 2017 -0400"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Fri Oct 06 15:51:10 2017 -0700"
      },
      "message": "scripts: import blockdiff\n\nThis was added to dev/host/ for debug helping with paycheck.py,\nso move it here so it\u0027s alongside that script.\n\nBUG\u003dNone\nTEST\u003dNone\n\nChange-Id: I63ae858464cc13344335613093907673052a9859\nReviewed-on: https://chromium-review.googlesource.com/704200\nCommit-Ready: Mike Frysinger \u003cvapier@chromium.org\u003e\nTested-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nReviewed-by: Amin Hassani \u003cahassani@chromium.org\u003e\n"
    },
    {
      "commit": "3b15b599299a9a5f3ec965d568ea479383c2fe6a",
      "tree": "d7c4fbed5d023478b0f69851ffe2d9373122369c",
      "parents": [
        "c2527f492e7a1389b2a3f248bd2b22d6cf5d9eb8"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Sep 26 18:21:04 2017 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Sep 30 00:30:51 2017 +0000"
      },
      "message": "update_device.py: support OTA zip if use omaha too.\n\nPass the offset and size to UpdateHandler.\nAlso added support for payload offset in update_payload.Payload.\n\nTest: applied a local OTA\nChange-Id: Ib116ef2c23a11e298118f203814c4ea8dd1629af\n"
    },
    {
      "commit": "c2527f492e7a1389b2a3f248bd2b22d6cf5d9eb8",
      "tree": "15b7e6299fee52b7d499ea66097e62c7c1b526b4",
      "parents": [
        "144f9f8a49b83c9a1930d16e579059485e6ad9fb"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Sep 27 16:35:03 2017 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Sep 30 00:30:51 2017 +0000"
      },
      "message": "Fix pylint issue in payload.py\n\n    ************* Module update_payload.payload\n    W: 12, 0: Relative import \u0027applier\u0027, should be \u0027update_payload.applier\u0027 (relative-import)\n    W: 13, 0: Relative import \u0027block_tracer\u0027, should be \u0027update_payload.block_tracer\u0027 (relative-import)\n    W: 14, 0: Relative import \u0027checker\u0027, should be \u0027update_payload.checker\u0027 (relative-import)\n    W: 15, 0: Relative import \u0027common\u0027, should be \u0027update_payload.common\u0027 (relative-import)\n    W: 16, 0: Relative import \u0027error\u0027, should be \u0027update_payload.error\u0027 (relative-import)\n    W: 17, 0: Relative import \u0027update_metadata_pb2\u0027, should be \u0027update_payload.update_metadata_pb2\u0027 (relative-import)\n    C:222, 4: Missing function docstring (missing-docstring)\n    E:261,33: Instance of \u0027DeltaArchiveManifest\u0027 has no \u0027partitions\u0027 member (no-member)\n\nTest: repo upload\nChange-Id: Ib3e99c6a3a5ea4575b442e672a871adc7b985289\n"
    },
    {
      "commit": "144f9f8a49b83c9a1930d16e579059485e6ad9fb",
      "tree": "de9ac23e1e3f9721766805a9757d2bb5f1fe50de",
      "parents": [
        "6c863b758f1b4f367946b78f5a93ad0337924023"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Tue Sep 26 15:49:45 2017 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Sep 30 00:30:51 2017 +0000"
      },
      "message": "update_device.py: use the appid from request.\n\nRecent changes in update_engine are now comparing the appid against\nthe product id.\n\nTest: applied a local OTA\nChange-Id: I2907e94a89bea5ebfa8236c96eec7601af8ad4e5\n"
    },
    {
      "commit": "a566cb638023f12c9a64df31d83c464c13cf4d92",
      "tree": "58417956b32927d0f20e9ff3eb2efe37e85542ce",
      "parents": [
        "209e57a848a022fd38fca31a267817fef654d56b"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Aug 23 12:36:55 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri Aug 25 14:29:33 2017 -0700"
      },
      "message": "update_engine: fix verify for brillo major version\n\nCurrently since the major version is checked before the apply\npayload (for brillo_update_payload verify), then it fails if there are\nmore or less than two partitions. This patch forces the major version to\nwhatever the target image is. This will not impact any production\nprocedure.\n\nBUG\u003dnone\nTEST\u003dbrillo_update_payload verify --payload\u003dpayload.delta --source_image\u003d25-4k-gzip.img --target_image\u003d61-4k-gzip.img\n\nChange-Id: I0af9a56f9ad52c6b0670f7ace6c307d6071a1d7a\nReviewed-on: https://chromium-review.googlesource.com/629638\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n(cherry picked from commit 70fce1e37af598f1bd28ae2bcdb62d597b64930d)\n"
    },
    {
      "commit": "70fce1e37af598f1bd28ae2bcdb62d597b64930d",
      "tree": "0746d236554e2cae38d22fa881958211b782a6b3",
      "parents": [
        "4c1b75df4c7ea89f3345fb9860b7c58b04fc5b99"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Aug 23 12:36:55 2017 -0700"
      },
      "committer": {
        "name": "chrome-bot",
        "email": "chrome-bot@chromium.org",
        "time": "Fri Aug 25 14:21:43 2017 -0700"
      },
      "message": "update_engine: fix verify for brillo major version\n\nCurrently since the major version is checked before the apply\npayload (for brillo_update_payload verify), then it fails if there are\nmore or less than two partitions. This patch forces the major version to\nwhatever the target image is. This will not impact any production\nprocedure.\n\nBUG\u003dnone\nTEST\u003dbrillo_update_payload verify --payload\u003dpayload.delta --source_image\u003d25-4k-gzip.img --target_image\u003d61-4k-gzip.img\n\nChange-Id: I0af9a56f9ad52c6b0670f7ace6c307d6071a1d7a\nReviewed-on: https://chromium-review.googlesource.com/629638\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "49fdb09d1ff2e078fa44c26540a5b82900df0f9a",
      "tree": "8e5fd2ca126e456ce08cbcd681a0e787f5ddd92a",
      "parents": [
        "e94ece50ccff67a1948c461737dc049d9f1ae4d8"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Fri Aug 04 13:10:59 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Aug 23 01:10:12 2017 +0000"
      },
      "message": "update_engine: Change imgdiff/imgpatch to a dummy puffdiff/puffpatch\n\nCurrently we never create imgdiff operation as it was never\nactivated. In near future we will be adding puffdiff and puffpatch\noperations which replaces the imgdiff. This CL does not actually adds\npuffdiff, but adds a placeholder for it.\n\nBUG\u003dnone\nTEST\u003dcros_workon_make --board\u003damd64-generic --test update_engine\n\nChange-Id: I6453048acb65c052354a1658f0c6fd41ad33e242\nReviewed-on: https://chromium-review.googlesource.com/602733\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "1352093b7e5f1134ebfa99ad1991753ff4f3f33a",
      "tree": "38eaf22fc52d0355f3556ce3a82dc4e302416397",
      "parents": [
        "a7ee9d0e6297a16d0f10cc7825c3b68867f19b24"
      ],
      "author": {
        "name": "Amin Hassani",
        "email": "ahassani@google.com",
        "time": "Wed Jul 26 11:26:05 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Aug 23 01:10:12 2017 +0000"
      },
      "message": "update_engine: Add \"verify\" support to brillo_update_payload\n\nThis change adds a new command \"verify\" to brillo_update_payload to verify the\nprocess of update by applying a delta or full payload to temporary target\npartitions and comparing them with the original target partitions. This is\nspecially usefull when manually debuggin/testing delta performer operations.\n\nBUG\u003dnone\nTEST\u003dbrillo_update_payload verify --payload\u003dpayload.delta --source_image\u003dlink_8872.49.bin --target_image\u003dlink_9000.82.bin\n\nChange-Id: I4b30bc8a1088f4f72b681c6095cca6863a715078\nReviewed-on: https://chromium-review.googlesource.com/585565\nCommit-Ready: Amin Hassani \u003cahassani@chromium.org\u003e\nTested-by: Amin Hassani \u003cahassani@chromium.org\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "a7ee9d0e6297a16d0f10cc7825c3b68867f19b24",
      "tree": "8eacc147cc768f280cca5bf8c28adbff804e0301",
      "parents": [
        "ac95cd54dd1faf398724bdcfe2c4b096fa4fc2d6"
      ],
      "author": {
        "name": "Andrey Ulanov",
        "email": "andreyu@google.com",
        "time": "Fri Jun 02 15:12:46 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Aug 23 01:10:12 2017 +0000"
      },
      "message": "update_engine: Remove zlib fingerprint checking\n\nThis is not needed as imgdiff is not being used and will be replaced by\npuffin.\nPresence of this code makes updating to newer version of zlib\nimpossible. (e.g. 1.2.8-\u003e1.2.11 update introduces some changes in\ncompression algorithm which make compressed output different).\n\nBUG\u003dNone\nTEST\u003d\"ebuild zlib.ebuild test\"\n\nChange-Id: I50793f552a44faaba5771271fdcf2b4f4aeba6e4\nReviewed-on: https://chromium-review.googlesource.com/522949\nCommit-Ready: Andrey Ulanov \u003candreyu@google.com\u003e\nTested-by: Andrey Ulanov \u003candreyu@google.com\u003e\nReviewed-by: Ben Chan \u003cbenchan@chromium.org\u003e\nReviewed-by: Sen Jiang \u003csenj@chromium.org\u003e\n"
    },
    {
      "commit": "a1784b7e231b0ab2b3071c6e57485fdbac5dc057",
      "tree": "5332eb1f87226439cc187bc1a96466d5978c26b3",
      "parents": [
        "1048559a5c8b6c897aee6c8095035fc7724ae340"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Aug 09 17:42:36 2017 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Wed Aug 16 11:19:57 2017 -0700"
      },
      "message": "Add support for omaha in update_device.py\n\nAutomatically detect if the device is running an update_engine with\nUSE_OMAHA or not, and use different command based on that.\n\nMade the http server serving payload a fake omaha server as well.\n\nAdded support for overriding the payload public key on the device.\n\nBug: 27316596\nTest: update a device that uses omaha\nChange-Id: I230d58ff105189dc8a624d46ee79cbe90c5f09b0\n"
    }
  ],
  "next": "1048559a5c8b6c897aee6c8095035fc7724ae340"
}
