{"push_id":906325982,"size":14,"distinct_size":14,"ref":"refs/heads/master","head":"156806b2b8c807c856860802f3bb7bd2fc9e5bd1","before":"3642a33440fc8f5c88c03b15f5a5e110be8d6af3","commits":[{"sha":"0fc85e08f7060f76df696fdb10f04ed4475e4572","author":{"email":"8bd85d4cedcb15ab90c2f7e7da65adf4fdc067ee@fb.com","name":"Ben Hamilton"},"message":"Make AppleBundleWithDsym implement NativeTestable\n\nSummary:\nThe diff `Move dSYM logic into AppleDsym and AppleBundleWithDsym` inadvertently\nbroke `apple_test()` rules from being able to `#import` private headers of the\ntargets they test.\n\nThe root cause was that `AppleBundleWithDsym` doesn't implement `NativeTestable`, so\n`CxxDescriptionEnhancer` didn't bother adding the private includes of the libraries\nunder test to the test.\n\nThis would have been caught by `AppleTestIntegrationTest` but that test has\nbeen disabled for a while. This fixes the problem, and I'll re-enable the\ntests in the next diff.\n\nTest Plan:\nRe-enabled `AppleTestIntegrationTest`,\nran test with `ant java-test -Dtest.class=AppleTestIntegrationTest`. Previously,\n`AppleTestIntegrationTest.successOnAppTestPassing()` failed. Now, it passes.\n\nReviewed By: ryu2\n\nfb-gh-sync-id: 5266deb","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/0fc85e08f7060f76df696fdb10f04ed4475e4572"},{"sha":"547442dbcecf6fffb2209dfc22900d07bd741d4d","author":{"email":"8bd85d4cedcb15ab90c2f7e7da65adf4fdc067ee@fb.com","name":"Ben Hamilton"},"message":"Re-enable AppleTestIntegrationTest (except header symlink tree test)\n\nSummary:\nThis re-enables `AppleTestIntegrationTest`, which was disabled\na while ago due to flakiness (since fixed) in CI.\n\nI had to fix one test which was broken due to its `testdata` directory\nbeing renamed.\n\nI left one test disabled (`AppleTestIntegrationTest.testAppleTestHeaderSymlinkTree()`)\nbecause I don't know how to get it to work. Hopefully k21 can get it\nworking again.\n\nTest Plan:\n`ant java-test -Dtest.class=AppleTestIntegrationTest`. Previously,\ntests didn't run. Now, they run and all pass except for `testAppleTestHeaderSymlinkTree()`.\n\nReviewed By: sdwilsh\n\nfb-gh-sync-id: 0fa9e39","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/547442dbcecf6fffb2209dfc22900d07bd741d4d"},{"sha":"9f6c64a2f9ee69cd1ee48e8b49a076f1313347f6","author":{"email":"1ca927701737ca3bccd1b9d94599b445695358b6@fb.com","name":"Shawn Wilsher"},"message":"The `AutoCloseableLock` should call `lock` in the constructor\n\nTest Plan: CI\n\nReviewed By: shs96c\n\nfb-gh-sync-id: 5642e2f","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/9f6c64a2f9ee69cd1ee48e8b49a076f1313347f6"},{"sha":"53dd2c99650bbd8a7986f7db9d8b328f4cc1d501","author":{"email":"6aa1be71730a75c9811f6a0b6ac5054f69a50c3f@fb.com","name":"Andrew Gallagher"},"message":"Record input-based rule keys in events for logging\n\nSummary:\nPreviously, we only ever logged the normal rule key.  This adds the\ninput-based rule key to `BuildRuleEvent.Finished`s so that we can\nlog that one as well.\n\nTest Plan: CI\n\nReviewed By: sdwilsh\n\nfb-gh-sync-id: 6e5fbae","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/53dd2c99650bbd8a7986f7db9d8b328f4cc1d501"},{"sha":"32297ee06ad60408aa4e6a78cc8e1f57b03a9549","author":{"email":"04eabda7a9c681c198b53cce960f26334d29caa2@fb.com","name":"Mark Wang"},"message":"Default to PlugIns dir for unknown extension types\n\nSummary: For extensions with unknown types, in Xcode, copy them to the plugins destination by default.  Right now, we default to Products, which causes Xcode to complain about dependencies.\n\nTest Plan: CI\n\nReviewed By: beefon\n\nfb-gh-sync-id: 16001d0","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/32297ee06ad60408aa4e6a78cc8e1f57b03a9549"},{"sha":"400408c1c1a90879e147e2304417a703d2a1eee5","author":{"email":"eba9be7688db15263201799f4b2decebc6fb62c2@fb.com","name":"Vladislav Alexeev"},"message":"Copy all transitive frameworks of the particular bundle types into the bundles\n\nSummary:\nAfter removing the phase of copying subframeworks into framework bundles, apps became broken if they\nare launched outside of Xcode session/derived data. This is because app bundle basically didn't contain\nthese frameworks anymore. This diff fixes this issue by adding all transitive frameworks into copy phase\nfor generated Xcode project.\n\nTest Plan:\nCI, added unit test.\nGenerate project for Mac app with frameworks\nBuild it using Xcode\nMove the app bundle to Desktop and double-click it there, app should launch normally.\n\nTested building Color Picker extension. It still had Frameworks included, and launched correctly.\n\nReviewed By: ryu2, darknoon\n\nfb-gh-sync-id: 3f618b2","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/400408c1c1a90879e147e2304417a703d2a1eee5"},{"sha":"983a6f6a64ef158cababdee29b7fb448429edcfa","author":{"email":"a1166ad1633243ec0ce1c24d3875f36521f50a72@fb.com","name":"Jakub Zika"},"message":"Reenable ignored test in AppleTestIntegrationTest\n\nSummary:\nWe stopped supporting the `default` platform for apple targets\nsometime around when we started using Apple specific tools.\nAnd `header-symlink-tree` has been changed to `private-headers`\nto avoid \"Command line too long\" errors.\n\nTest Plan: `buck test`.\n\nReviewed By: bhamiltoncx, beefon\n\nfb-gh-sync-id: d6e0cce","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/983a6f6a64ef158cababdee29b7fb448429edcfa"},{"sha":"e84bc417e2e82996b401fba573d4a1e45cdc411d","author":{"email":"8bd85d4cedcb15ab90c2f7e7da65adf4fdc067ee@fb.com","name":"Ben Hamilton"},"message":"New JNA class com.facebook.buck.io.unixsocket.UnixDomainSocket\n\nSummary:\nWatchman natively understands BSER over Unix domain\nsockets. Currently, Buck spawns off subprocesses to communicate\nwith Watchman, which is pretty wasteful (and is not what Watchman\nitself does).\n\nThis introduces a new class `com.facebook.buck.io.unixsocket.UnixDomainSocket`\n(cribbed from the code I wrote in Nailgun) to implement Unix domain\nsockets in Buck.\n\nI could alternatively use Nailgun's implementation directly, but I\nneed another method `connect()` to implement client-side Unix domain\nsockets, and I wasn't sure if it was a good idea to depend on random\nbits on Nailgun outside of `Main.java`.\n\nTest Plan: Tested in subsequent diffs.\n\nReviewed By: shs96c\n\nfb-gh-sync-id: ec244bc","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/e84bc417e2e82996b401fba573d4a1e45cdc411d"},{"sha":"ca0b85f23e6df09c1d6440d8fe02f391798361b6","author":{"email":"8bd85d4cedcb15ab90c2f7e7da65adf4fdc067ee@fb.com","name":"Ben Hamilton"},"message":"Perf: New Watchman Unix domain socket client\n\nSummary:\nCurrently, Buck has to spawn a (very expensive) process every time\nit wants to talk to Watchman.\n\nHowever, Watchman natively supports a local (Unix domain / Windows named pipe)\nsocket which the Python bindings natively use for communication.\n\nThis socket uses binary BSER encoding for queries and responses, so it's\nextremely efficient. Previously, we used JSON, which required Jackson\nto spin up and initialize (which can take a shockingly long time to\ndo all its runtime introspection magic).\n\nIn this diff, I add a new class `WatchmanSocketClient` which `Watchman`\nuses to connect to the local Unix domain socket.\n\nFor the initial version check, we still execute `watchman` via\nspawning a process.  (This handles creating the initial Unix domain\nsocket if it doesn't exist).\n\nThe next diff will pass the Watchman socket path down to `buck.py` so\nthe Python parser can directly connect to the socket as well.\n\nI removed the dependency on `jackson` completely, since the client now\nspeaks BSER natively with Watchman.\n\nTest Plan: Unit tests updated. `ant java-test -Dtest.class=WatchmanTest`\n\nReviewed By: shs96c\n\nfb-gh-sync-id: e4960c4","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/ca0b85f23e6df09c1d6440d8fe02f391798361b6"},{"sha":"8958ae6c0c937f5ac6886e5dbe55ff2c22f56f01","author":{"email":"8bd85d4cedcb15ab90c2f7e7da65adf4fdc067ee@fb.com","name":"Ben Hamilton"},"message":"Perf: Use WatchmanClient from WatchmanWatcher\n\nSummary:\nThis ports `WatchmanWatcher` to re-use the `WatchmanClient` created in `Main`.\n\nThis way we don't have to spawn off CLI processes every time we want\nto talk to Watchman: we'll just re-use the local (Unix domain /\nWindows named pipe) socket we previously connected.\n\nIn addition, we can use the more efficient BSER protocol instead of\nJSON. (This actually does make a difference when there are tens or\nhundreds of thousands of changes, which happens in a rebase of a large\nrepository).\n\nBecause I deleted the JSON serialization logic, I removed a test that\nonly tested JSON escaping.\n\nTest Plan: Updated `WatchmanWatcherTest`. `ant java-test -Dtest.class=WatchmanWatcherTest`\n\nReviewed By: shs96c\n\nfb-gh-sync-id: 3bc03cc","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/8958ae6c0c937f5ac6886e5dbe55ff2c22f56f01"},{"sha":"2ae68899437d8ca5fc29b0888a8ee05137d6b048","author":{"email":"8bd85d4cedcb15ab90c2f7e7da65adf4fdc067ee@fb.com","name":"Ben Hamilton"},"message":"Easy: Pass Watchman socket path down to buck.py\n\nSummary:\nNow that Buck has the path to the local Watchman socket, we can\npass it from `buck.py` to `pywatchman`. (This avoids having to spawn\na CLI `watchman` process every time we parse `BUCK` files.)\n\nTest Plan:\nAdded to `.buckconfig.local`:\n\n  [project]\n    glob_handler = watchman\n\n`buck build buck`, confirmed in logs that `--watchman_socket_path` was passed to `buck.py`\n\nReviewed By: sdwilsh\n\nfb-gh-sync-id: 71655ed","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/2ae68899437d8ca5fc29b0888a8ee05137d6b048"},{"sha":"9c59bb5c8eb99c4d3b5e03643bad17969e945ce2","author":{"email":"6aa1be71730a75c9811f6a0b6ac5054f69a50c3f@fb.com","name":"Andrew Gallagher"},"message":"C/C++: make test rules work with `targets --show-output`\n\nSummary:\nThis rules wrap the actual `CxxLink` rules which generate the binaries,\nso forward these inner rule's locations via `getPathToOutput`.\n\nTest Plan: `buck targets --show-output`\n\nReviewed By: sdwilsh\n\nfb-gh-sync-id: 9cb7d40","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/9c59bb5c8eb99c4d3b5e03643bad17969e945ce2"},{"sha":"e85aff3fb6254e363c204c23676a24787c1ff022","author":{"email":"6aa1be71730a75c9811f6a0b6ac5054f69a50c3f@fb.com","name":"Andrew Gallagher"},"message":"perf_test: work with multiple target builds\n\nSummary:\nPreviously, the perf_test would run and test multiple targets separately,\nwhich didn't actually work if the dep trees of these targets overlapped.\nThis diff refactors the code so that multiple targets are run properly.\n\nTest Plan: CI\n\nReviewed By: sdwilsh, beefon\n\nfb-gh-sync-id: 935c624","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/e85aff3fb6254e363c204c23676a24787c1ff022"},{"sha":"156806b2b8c807c856860802f3bb7bd2fc9e5bd1","author":{"email":"6aa1be71730a75c9811f6a0b6ac5054f69a50c3f@fb.com","name":"Andrew Gallagher"},"message":"Add initial lua support\n\nSummary:\nThis adds initial support for basic in-place Lua binaries and Lua\nlibraries, in a style very similar to python in-place binaries.\n\nTest Plan: added unit and integration tests\n\nReviewed By: marcinkosiba\n\nfb-gh-sync-id: 4ee5ae5","distinct":true,"url":"https://api.github.com/repos/jmelfi/buck/commits/156806b2b8c807c856860802f3bb7bd2fc9e5bd1"}]}