{"push_id":1469425174,"size":35,"distinct_size":35,"ref":"refs/heads/cm-14.1","head":"08db0e9254f95ab777dfde355e76cf20ff7f5190","before":"914ab1e6419a0e2cc2e0a8cb08b0ee1b88d10c3c","commits":[{"sha":"067e9f19e2e129fe377b9519bb6d574f3ecd56d5","author":{"name":"Nick Lewycky","email":"5e04cb1f0f5adb106304ac92b49ab3f56083b6ca@google.com"},"message":"Turn CHECK failure that depends on file system state into an error message\nand include what failed in the error.","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/067e9f19e2e129fe377b9519bb6d574f3ecd56d5"},{"sha":"f8dad36a5330f05c01f91501464976acb42631a3","author":{"name":"Nick Lewycky","email":"5e04cb1f0f5adb106304ac92b49ab3f56083b6ca@google.com"},"message":"Fix typo in comment.","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/f8dad36a5330f05c01f91501464976acb42631a3"},{"sha":"f87d49e41a5dd57733d02f3990c91dc38e557dad","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Support marking variables as readonly\n\nWhen the magic variable .KATI_READONLY is set to a variable name, any\nfurther attempts to modify the named variable will result in an error.\n\n  FOO := bar\n  .KATI_READONLY := FOO\n  FOO := baz  # Error!\n\nThis is useful to make some global configuration readonly so that\nanother makefile cannot change it. In Android, we emulated this by\nbacking up some global configuration before including the Android.mk\nfiles, then comparing the current values to the backed up values after\nthey've been included. But this means we don't know the location that\nmodified the variable, just that something did. And it's not perfect,\nsince the backup can also be changed.\n\nSomething similar to this could be implemented with `override`, but then\nsetting the variable silently fails, and it still could be overriden\nwith another override.","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/f87d49e41a5dd57733d02f3990c91dc38e557dad"},{"sha":"9862c2a1dc844d431cf3f9cca41603362cc077c9","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Add simple benchmark for RunCommand\n\nChange-Id: I7f3aabdd8fc01f9ddbcf23e586b6f5e81ab8cbce","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/9862c2a1dc844d431cf3f9cca41603362cc077c9"},{"sha":"064be227bfc5948a74e034fd613d556a49e8b49b","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Optimize RunCommand by removing /bin/sh wrapper when possible\n\nFor every $(shell echo \"test: $PATH\") command, when SHELL is /bin/bash,\nwe essentially run: (each arg wrapped in [])\n\n  [/bin/sh] [-c] [/bin/bash -c \"echo \\\"test: \\$PATH\\\"\"]\n\nThis is redundant, since we can just use SHELL, and then we don't need\nto do an extra level of shell escaping either. This change makes us run\nthis instead:\n\n  [/bin/bash] [-c] [echo \"test: $PATH\"]\n\nIf SHELL is more complicated than an absolute path to a binary, then\nwe'll fall back to /bin/sh.\n\nUsing the benchmark introduced in the last change, this reduces a\nminimal RunCommand execution with a simple SHELL from 3.7ms to 1.3ms.\n\nFor a more complex benchmark (though less normalized), for an AOSP\nAndroid build, this change shrinks the average time spent in $(shell)\nfunctions from 4.5ms to 3ms.\n\nChange-Id: I622116e33565e58bb123ee9e9bdd302616a6609c","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/064be227bfc5948a74e034fd613d556a49e8b49b"},{"sha":"d325f591edfafc34167a2f23a2295c434136940b","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Run regen commands sequentially\n\nWhen I remove --ignore-dirty=$(OUT_DIR)/% from an Android build, it\nturns out that we have $(shell) commands that have side effects and\ncannot be reordered in relationship to one another. The trivial case is\na sequence of 'rm', 'write', 'write'..., 'cmp'. The 'rm' and 'write'\ncommands can be collapsed into a single $(file) function call, but it\nstill needs to be ordered for the 'cmp' function to work properly.\n\nI've been making changes to prevent this from slowing down regen too\nmuch, but it's still a 2-3x slowdown overall (0.3s -> 0.8s for\naosp_arm64-eng on aosp master).","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/d325f591edfafc34167a2f23a2295c434136940b"},{"sha":"f3a021bd62a1299a7454d96800cb78a1f9718a75","author":{"name":"Shinichiro Hamaji","email":"055b87b1c18e512930022ded2380c26f9b2174c5@gmail.com"},"message":"Merge pull request #95 from danw/readonly\n\nSupport marking variables as readonly","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/f3a021bd62a1299a7454d96800cb78a1f9718a75"},{"sha":"d70bd64ad2909c129364364749f8c290344eff67","author":{"name":"Shinichiro Hamaji","email":"055b87b1c18e512930022ded2380c26f9b2174c5@gmail.com"},"message":"Merge pull request #96 from danw/opt_runcommand\n\nOptimize RunCommand by removing /bin/sh wrapper when possible","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/d70bd64ad2909c129364364749f8c290344eff67"},{"sha":"f06d8019e99ae6aee1d2881f30315aee7b544cfb","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Implement the `file` function to read and write files\n\nThis allows us to do file reading and writing without $(shell). Besides\nbeing simpler, this also allows faster regen times, since we can just\nstat the files to be read, or directly write to the files that need to\nbe written.","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/f06d8019e99ae6aee1d2881f30315aee7b544cfb"},{"sha":"2547af08ce2727327c2a5d8a3b62078d8e3bb04c","author":{"name":"Dan Willemsen","email":"8ba258345e8c7589d20364528ac4964f896605aa@danw.org"},"message":"Merge pull request #97 from danw/file_func\n\nImplement the `file` function to read and write files","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/2547af08ce2727327c2a5d8a3b62078d8e3bb04c"},{"sha":"cb717b8ccc234b8ae318a8278f29ee075390e7c9","author":{"name":"Dan Willemsen","email":"8ba258345e8c7589d20364528ac4964f896605aa@danw.org"},"message":"Merge pull request #98 from danw/regen_side_effects\n\nRun regen commands sequentially","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/cb717b8ccc234b8ae318a8278f29ee075390e7c9"},{"sha":"896c7ff8793cc6da3a9feb09028c2c189bfb3da8","author":{"name":"Dan Willemsen","email":"8ba258345e8c7589d20364528ac4964f896605aa@danw.org"},"message":"Merge pull request #87 from nlewycky/master\n\nInclude details in error message","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/896c7ff8793cc6da3a9feb09028c2c189bfb3da8"},{"sha":"6e63e0f73a403718d767b47dfb3315e0dadeb7ca","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Add a tool to export a kati stamp file to other tools\n\nThere's a desire to understand which files are used by a build so that\nthe automated builds can make better guesses at which builds should be\nrun for a certain change. Instead of having them read a stamp file\ndirectly, which would prevent us from updating the stamp format in the\nfuture, build a tool that can be used to export the contents in a stable\nand more portable format.\n\nRight now, this just means exporting the file list to stdout with\nnewlines as delimiters. An idea for the future is to define a protobuf\nor similar format that would contain the glob and shell information as\nwell (if it's useful).","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/6e63e0f73a403718d767b47dfb3315e0dadeb7ca"},{"sha":"d2dcfa22410021ea9a328fa9447e55522b0f63c5","author":{"name":"Shinichiro Hamaji","email":"055b87b1c18e512930022ded2380c26f9b2174c5@gmail.com"},"message":"Merge pull request #100 from danw/stamp_dump_tool\n\nAdd a tool to export a kati stamp file to other tools","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/d2dcfa22410021ea9a328fa9447e55522b0f63c5"},{"sha":"8543327654443db1981142bbe18f3878e464e981","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Remove \"out\" special case handling from FindEmulator\n\nWe removed the special casing of $OUT_DIR from our findleaves commands\nto fix problems where $OUT_DIR was named the same as a real directory.\nBut now TEST_FIND_EMULATOR (and regen) is broken, since the real command\nfinds out/Android.mk, but the emulated version does not. Since we're\nalready traversing output directories that aren't called \"out\", just\nremove the \"out\" special casing from the find emulator.\n\nThis raises the time to init the find emulator from 0.85s to 1.12s on my\nmachine with one product built. But this only happens when you're about\nto read all of the makefiles anyways, not during regen. The node count\ngoes from 683196 to 894396.","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/8543327654443db1981142bbe18f3878e464e981"},{"sha":"439f6f1553ad197b7c6921b28f848456cfb50ea9","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Optimize findleaves regen check\n\nIf we've found all possible files in a leaf directory, we don't need to\nre-run findleaves every time the leaf directory's timestamp changes, we\njust need to make sure the file(s) that we found still exist.  This\nsaves a few seconds every time an atomic write is done in a source\ndirectory next to an Android.mk file. (Atomic writes use renames, so\nthey always change the directory's timestamp)\n\nWith the last commit that finds out/Android.mk and out/CleanSpec.mk, it\nturns out that the output directory's timestamp was changing every\nbuild, causing the global Android.mk & CleanSpec.mk findleaves.py\ncommand to be executed every regen check.\n\nTEST_FIND_EMULATOR still passes after this change.","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/439f6f1553ad197b7c6921b28f848456cfb50ea9"},{"sha":"f082e5bc14e57557c48399d9a441ccb63b44f6da","author":{"name":"Shinichiro Hamaji","email":"055b87b1c18e512930022ded2380c26f9b2174c5@gmail.com"},"message":"Merge pull request #101 from danw/findleaves\n\nFix a few findleaves issues","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/f082e5bc14e57557c48399d9a441ccb63b44f6da"},{"sha":"f09d21d8b406bed732ec0254d5083e636e394151","author":{"name":"Dan Willemsen","email":"2076985d6a495cfa432fa05ac8fba162db8ea471@google.com"},"message":"Fix typo in regen_dump.cc","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/f09d21d8b406bed732ec0254d5083e636e394151"},{"sha":"cbddec052bf068537d2c2a37b9af1c76d80cdd7c","author":{"name":"Dan Willemsen","email":"8ba258345e8c7589d20364528ac4964f896605aa@danw.org"},"message":"Merge pull request #102 from danw/typo\n\nFix typo in regen_dump.cc","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/cbddec052bf068537d2c2a37b9af1c76d80cdd7c"},{"sha":"3af7e61537dd4ace216d01d9edd6afbca12bb793","author":{"name":"Dan Willemsen","email":"8ba258345e8c7589d20364528ac4964f896605aa@danw.org"},"message":"Update Android.bp to shrink executables\n\nKeep whole_static_libs for the main executable, but use static_libs for the rest. My goal is to check ckati_stamp_dump into Android as a prebuilt, and it goes from 2.4M->1.2M for the ASAN version, and 352K->11K for the normal version.","distinct":true,"url":"https://api.github.com/repos/Codename-Hexa/android_build_kati/commits/3af7e61537dd4ace216d01d9edd6afbca12bb793"}]}
{"actor":{"display_login":"stryker09"}}