)]}'
{
  "log": [
    {
      "commit": "8c17bdc0d759c8e6da90c5f72b052ba2605a0a3a",
      "tree": "2b657e543598e1805f51cd2b4606e8da8821f391",
      "parents": [
        "04ed891a9199374151a73f77353da2564cc762a7"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Sat Apr 25 01:51:34 2015"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Sat Apr 25 01:51:34 2015"
      },
      "message": "bspatch: Fix arg names.\n\nIn last CL we introduced a bug where the old_filename was mixed with\nthe new_filename. This obvious bug didn\u0027t trigger any failure because\nupdate_engine uses always the same name (/dev/fd/N) for both old and\nnew files since the files are applied in place, and also because bsdiff\ndoesn\u0027t have any unittest... yet.\n\nBUG\u003dNone\nTEST\u003dsudo emerge bsdiff; tested bspatch manually.\nTEST\u003dcros flash an image with payload minor_version\u003d2, which uses different old and new files.\n\nChange-Id: I8b5715cd422612b9bbf7eaf3d4d3813c659fd10c\n"
    },
    {
      "commit": "04ed891a9199374151a73f77353da2564cc762a7",
      "tree": "2f34b564476ef7ffde7f2fa5e1db854dcd871cd6",
      "parents": [
        "be22c479293df0c89ff71bb53dfd01ad0fe73b0c"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Wed Apr 08 21:10:30 2015"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Thu Apr 09 23:09:33 2015"
      },
      "message": "Add gtest unittest framework.\n\nbsdiff and bspatch are in C and had no unittest. This patch keeps\nthose programs as C code, but adds the C++ gtest unittest framework\nto allow testing them. Two simple unittests added to validate that the\nunittests work.\n\nBUG\u003dNone\nTEST\u003dmake test; ./unittests\n\nChange-Id: I8bca6b0c6bc5d5880464183d50a602c9886d20d0\n"
    },
    {
      "commit": "be22c479293df0c89ff71bb53dfd01ad0fe73b0c",
      "tree": "5bd90f75dff64699a99c40e80374127f8f73158a",
      "parents": [
        "3dfe595e9603b749f788aa70a3622d57850fdbd9"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Wed Apr 08 03:35:27 2015"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Wed Apr 08 03:57:44 2015"
      },
      "message": "Added README.chromium file.\n\nThe local README.chromium includes a description of the project and\nrelease version it is based on.\n\nBUG\u003dchromium:474769\nTEST\u003dNone\n\nChange-Id: I5f8123984c820c64e7cbe5a9cc1642061aa2ed1c\n"
    },
    {
      "commit": "3dfe595e9603b749f788aa70a3622d57850fdbd9",
      "tree": "6133280953bdc867432bcb1c5100b554368698e8",
      "parents": [
        "a04672e966666e9c29542358d187186d11bfabf7"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Wed Apr 08 03:34:31 2015"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Wed Apr 08 03:34:31 2015"
      },
      "message": "Added .gitignore file.\n\nBUG\u003dNone\nTEST\u003dgit ls-files -i --exclude-standard\n\nChange-Id: Ic64b5cec6cb35aa8893db0aeb8e7c73bef93bcfc\n"
    },
    {
      "commit": "a04672e966666e9c29542358d187186d11bfabf7",
      "tree": "17656672445fd0b3567010928a6c3f3f3ff3dfcf",
      "parents": [
        "d0307d1711bd74e51b783a49f9160775aa22e659"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue May 13 02:43:59 2014"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "bsdiff: Don\u0027t install delta_generator tools on the device.\n\nUpdate Engine\u0027s delta_generator requires the bsdiff binary to be\npresent on the host when the au-generator.zip is created with the\ngenerate_au_zip.py script. This .zip file will later run on the\nbuilders. Nevertheless, the bsdiff binary is not required on the\nChromeOS devices, only bspatch is.\n\nThis patch removes the bsdiff and its dependencies from the device\nsaving a few KB.\n\nBUG\u003dchromium:372644\nTEST\u003dManual test:\nTEST\u003demerge-link --unmerge libdivsufsort \u0026\u0026 emerge-link bsdiff # Both work, bsdiff not present on link\nTEST\u003dsudo emerge bsdiff # Works, bsdiff present on the host.\n\nChange-Id: Ie2823c796185d616523fe8bf79a7c4c91fa3a0c0\nReviewed-on: https://chromium-review.googlesource.com/199466\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nReviewed-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "d0307d1711bd74e51b783a49f9160775aa22e659",
      "tree": "9fe5a6034501cffa69e1922f49e405afb9301553",
      "parents": [
        "53c95a3549aeba70b2f50095799eff9295c8fe3f"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Mon May 12 20:34:02 2014"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "bspatch: Add a sanity-check for malformed patches.\n\nThis patch adds an extra sanity-check for malformed patches. A\ncorrupted patch should be cached by update_engine before reaching\nthis step anyway.\n\nBUG\u003dchromium:372525\nTEST\u003demerge-link bsdiff \u0026\u0026 chroot/build/link/usr/bin/bspatch foo bar malformed_patch\nbspatch segfaults without the patch and shows the error message with it.\n\nChange-Id: I8007b41cf3ab6558a99ffd6085e382f1c32f9bdf\nReviewed-on: https://chromium-review.googlesource.com/199377\nTested-by: Alex Deymo \u003cdeymo@chromium.org\u003e\nReviewed-by: Jorge Lucangeli Obes \u003cjorgelo@chromium.org\u003e\nCommit-Queue: Alex Deymo \u003cdeymo@chromium.org\u003e\n"
    },
    {
      "commit": "53c95a3549aeba70b2f50095799eff9295c8fe3f",
      "tree": "ea937d7c0f3d56e3e3d6bc33afeb03cdb36b367d",
      "parents": [
        "426e4aa1cbeb3c8a73002047d7a796ca8e5e17d4"
      ],
      "author": {
        "name": "Gilad Arnold",
        "email": "garnold@chromium.org",
        "time": "Tue Apr 30 16:24:14 2013"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "bsdiff: support for lazy reading from extent files in bspatch\n\nPreviously, bspatch used to read the whole content of a file to be\npatched into a memory buffer, only to copy this data while generating\nthe new file content, which is written to a second buffer.  The said\nread buffer entails an unnecessary memory allocation requirement,\nespecially since it\u0027s being indexed almost linearly.  This behavior was\nfurther extended to support extents (i.e. a list of \u003coffset, length\u003e\npairs), which are used extensively during Chrome OS updates.\n\nThis change introduces extent files, which let users open files through\na layer of extents as ordinary glibc file handles. This in turn allows\nus to easily convert reads from a memory buffer into direct reads from\nan extent file. Extent files are buffered on the outer level (done for\nus by glibc), but otherwise use a system file descriptor for the\nunderlying I/O; this proved to be the most efficient combination when\napplying actual update payloads. Since we are reading a single byte at\na time using fread(2), and since the program is decidedly\nsingle-threaded, we shift to using _unlocked variants, which appear to\nreduce the total update time significantly without otherwise affecting\nmemory/CPU footprint.\n\nWe expect this to cut bspatch\u0027s memory usage by nearly one half.  Note\nthat in general it is possible to use the same abstraction for\nimplementing direct writing to the target file; however, due to the way\nwe implement delta updates, there is risk that such writes might clobber\nthe read data, and so further support is needed to mark safe operations\n(i.e. no read/write dependencies) as such.\n\nThis CL obsoletes the previous ebuild patch for handling extent\narguments, which is therefore removed. It also (i) gets rid of logic for\nspecial handling of /dev/fd filenames, which is deemed redundant; (ii)\nfixes the Makefile (via a separate patch) and changes the ebuild to use\nit, for uniformity; (iii) updates the ebuild to EAPI version 4; (iv)\nsets -Wall -Werror and fixes eliminates a warning due to bsdiff.c; (v)\nenhances man pages for both bsdiff/bspatch.\n\nBUG\u003dchromium:229705\nTEST\u003dPasses update engine unittests with new bspatch\nTEST\u003ddelta payload with BSDIFF operations updates correctly on x86-alex\n\nChange-Id: I4bb4afa42e43279048093e7a7f0ef96406b0c9e0\nReviewed-on: https://gerrit.chromium.org/gerrit/49595\nReviewed-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nTested-by: Gilad Arnold \u003cgarnold@chromium.org\u003e\nCommit-Queue: Gilad Arnold \u003cgarnold@chromium.org\u003e\n"
    },
    {
      "commit": "426e4aa1cbeb3c8a73002047d7a796ca8e5e17d4",
      "tree": "005859f54f3ac54c9158a74c9904e0802c77c7ce",
      "parents": [
        "58146f74abd6b1b69693943195f37f4ac6a6acef"
      ],
      "author": {
        "name": "Thieu Le",
        "email": "thieule@chromium.org",
        "time": "Thu Mar 29 00:12:42 2012"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "AU: bsdiff: Expand pathological case where files differ by \u003c8 bytes\n\nModify bsdiff to better handle the case where files differ by \u003c8 bytes\nin some regions, not limitting this case to linear traversal.\n\nBUG\u003dchromium-os:28552\nTEST\u003dManual bsdiff of problematic files, update engine unit tests\n\nChange-Id: I5b796977fc0e81d08b2e22abae48ae9e7dd2dba6\nReviewed-on: https://gerrit.chromium.org/gerrit/19270\nReviewed-by: Don Garrett \u003cdgarrett@chromium.org\u003e\nCommit-Ready: Thieu Le \u003cthieule@chromium.org\u003e\nTested-by: Thieu Le \u003cthieule@chromium.org\u003e\n"
    },
    {
      "commit": "58146f74abd6b1b69693943195f37f4ac6a6acef",
      "tree": "0a563f390e511ae5f8615fff7462f6b9a02d91fd",
      "parents": [
        "a055996c743add7a9558839276fd1e4994d16bd3"
      ],
      "author": {
        "name": "Thieu Le",
        "email": "thieule@chromium.org",
        "time": "Fri Sep 23 00:59:31 2011"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "AU: Fix bsdiff hang\n\nBUG\u003dchrome-os-partner:6056\nTEST\u003dManually create diff of obfuscated lib, apply diff and verify same\nas target file, run cros_generate_update_payload to make sure it still\nworks\n\nChange-Id: Ib0a68789fdf725d126467cbd86ca7ae28817b06c\nReviewed-on: http://gerrit.chromium.org/gerrit/8179\nReviewed-by: Andrew de los Reyes \u003cadlr@chromium.org\u003e\nCommit-Ready: Thieu Le \u003cthieule@chromium.org\u003e\nTested-by: Thieu Le \u003cthieule@chromium.org\u003e\n"
    },
    {
      "commit": "a055996c743add7a9558839276fd1e4994d16bd3",
      "tree": "89a86008cf1ebdcc8f4039cda997c47ed501d1ba",
      "parents": [
        "e2b85ce4ea246ca804ee2a9e18005c44e193d868"
      ],
      "author": {
        "name": "Thieu Le",
        "email": "thieule@chromium.org",
        "time": "Tue Jun 14 22:30:25 2011"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "bsdiff: Speed up pathological case.\n\nbsdiff does not properly handle the case where there is a large block of\ndata in the new file that only differs from the old file by less than 8\nbytes.  This causes bsdiff to continue searching through the files one\nbyte at a time and at each byte, re-compare the same large block of data\nwhich leads to excessively long run times.  This fix checks for this\nedge condition and breaks out of the search loop early.  This retains\nthe size efficiency of the patch file for most binaries while preserving\nthe runtime efficiency for files that fall into this category.\n\nBUG\u003dchromium-os:16377\nTEST\u003dunit tests, manually applied update, bsdiff known problematic files\n\nChange-Id: If84ad928603c71297f4d0977405893345f39d5c3\nReviewed-on: http://gerrit.chromium.org/gerrit/2640\nReviewed-by: Andrew de los Reyes \u003cadlr@chromium.org\u003e\nTested-by: Thieu Le \u003cthieule@chromium.org\u003e\n"
    },
    {
      "commit": "e2b85ce4ea246ca804ee2a9e18005c44e193d868",
      "tree": "38c8690252e36a48cda2ce022b97da1213cf527f",
      "parents": [
        "4fb0b644f0d08b4ebedb2dad580c7d43df6bd6cb"
      ],
      "author": {
        "name": "Thieu Le",
        "email": "thieule@chromium.org",
        "time": "Tue May 17 23:43:07 2011"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "Change bsdiff to use divsufsort suffix sort library instead of qsufsort.\nDivsufsort is more efficient and addresses the problem of bsdiff hanging\non certain files.\n\nHere are some measurements of the delta diff generator comparing the two\nsuffix sort alogrithms.\n\nqsufsort:\nreal\t4m40.670s\nuser\t4m19.170s\nsys\t0m6.400s\n\ndivsufsort:\nreal\t3m29.426s\nuser\t3m7.890s\nsys\t0m6.630s\n\nBUG\u003dchrome-os-partner:3785\nTEST\u003dUnit tests, created + applied delta and ensured the system updated\nproperly, manually ran bsdiff against problematic files to ensure it\ncompleted in a timely manner\n\nChange-Id: Ic5d4215a2de5a1845d88fad5c466f1adf0eaccee\nReviewed-on: http://gerrit.chromium.org/gerrit/1080\nReviewed-by: Darin Petkov \u003cpetkov@chromium.org\u003e\nTested-by: Thieu Le \u003cthieule@chromium.org\u003e\n"
    },
    {
      "commit": "4fb0b644f0d08b4ebedb2dad580c7d43df6bd6cb",
      "tree": "5e0801c447d6d7f9ffaf259cda8dc4f2c1662797",
      "parents": [
        "4d509d4d57c24249240489693d76af2334ca1bf6"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Tue Oct 12 23:15:26 2010"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "bsdiff: if file is /dev/fd/*, don\u0027t open/close it. Just use the fd.\n\nThe updater, in an attempt to keep bspatch from open/closing the raw\nblock device frequently, passes a file descriptor and a path of\n/dev/fd/(some number) as the path. This patch causes bspatch to\nrecognize that magic file path and not call open/close.\n\nThis dramatically reduces resource usage on client machines performing\ndelta updates.\n\nBUG\u003d7636\nTEST\u003dInstalled delta on device\n\nReview URL: http://codereview.chromium.org/3698005\n"
    },
    {
      "commit": "4d509d4d57c24249240489693d76af2334ca1bf6",
      "tree": "9cc58323422ddcc198514940b3e4707a56a38a28",
      "parents": [
        "8581416d70be82fceed04091754f0bd5f5b6c425"
      ],
      "author": {
        "name": "Andrew de los Reyes",
        "email": "adlr@chromium.org",
        "time": "Mon Aug 09 22:52:37 2010"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "bsdiff: force off_t to be 64 bits, honor size_t length\n\nBUG\u003dchromium-os:5364\nTEST\u003dtested doing a delta update on a device\n\nReview URL: http://codereview.chromium.org/3007030\n"
    },
    {
      "commit": "8581416d70be82fceed04091754f0bd5f5b6c425",
      "tree": "cc0733613c99fe3c55c004613ceed2f15bc0d6b0",
      "parents": [
        "7ec74ae2e2ac6dcae48c9999359b130d8685a9c8"
      ],
      "author": {
        "name": "Zdenek Behan",
        "email": "zbehan@chromium.org",
        "time": "Mon Jun 14 19:50:53 2010"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 23:53:48 2015"
      },
      "message": "bsdiff: convert ebuild to the new eclass format\n\nPortage automatically uses an overlay ebuild of the same name, so it suffices to copy and modify the original ebuild.\n\nReview URL: http://codereview.chromium.org/2779016\n"
    },
    {
      "commit": "7ec74ae2e2ac6dcae48c9999359b130d8685a9c8",
      "tree": "4fda39b4aecd52d2cd3ff318a54f2df813ebf86d",
      "parents": [
        "22815e3360e41c81c9e8000813caeaf14f0a013e"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 22:16:01 2015"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 22:18:49 2015"
      },
      "message": "Added bsdiff 4.3 release.\n"
    },
    {
      "commit": "22815e3360e41c81c9e8000813caeaf14f0a013e",
      "tree": "63af46174b7fe38cb909283262e55890e30454b5",
      "parents": [
        "43619972d4cdbdfd4ad92815917d6a487aba5cb0"
      ],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 22:14:26 2015"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 22:14:26 2015"
      },
      "message": "Added bsdiff 4.2 release.\n"
    },
    {
      "commit": "43619972d4cdbdfd4ad92815917d6a487aba5cb0",
      "tree": "3270ae5ee5ba1aef50b01e4302507f610ea24113",
      "parents": [],
      "author": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 22:12:51 2015"
      },
      "committer": {
        "name": "Alex Deymo",
        "email": "deymo@chromium.org",
        "time": "Tue Apr 07 22:12:51 2015"
      },
      "message": "Initial bsdiff 4.1 release.\n"
    }
  ]
}
