- 01 Aug, 2019 9 commits
-
-
Adam Simpkins authored
Summary: While developing on a project it is often convenient to be able to invoke its build manually, rather than always needing to re-run `getdeps.py`. This updates the CMakeBuilder to also emit a script that can be used to manually run CMake outside of `getdeps.py`. The CMakeBuilder is the only builder that this really matters for right now, as pretty much all of the projects where we do first-party development use CMake for their build system. Reviewed By: pkaush Differential Revision: D16477399 fbshipit-source-id: c8a14af158af7b32d6c799ef685b037e68b748ff
-
Adam Simpkins authored
Summary: Move code that computes project hashes to ManifestLoader. ManifestLoader is the only class that has all of the information necessary to compute the project hashes correctly. The ManifestLoader object can also cache previously computed hashes, so that we don't have to keep computing hashes for projects over and over again. Previously the `BuildOptions.compute_dirs()` function would end up re-computing hashes for all dependencies each time it was called. Reviewed By: strager Differential Revision: D16477401 fbshipit-source-id: ce03642114f91ce4f859f612e6b2e747cf1653be
-
Adam Simpkins authored
Summary: The ManifestLoader contains all of the state needed to create a fetcher object, so define a helper method on this object to create a fetcher. Reviewed By: strager Differential Revision: D16477395 fbshipit-source-id: 6de0942fe6b8de26c18c82bf99343f5467dc006a
-
Adam Simpkins authored
Summary: Add a new ManifestLoader class to handle loading manifests and computing dependencies. For now the main thing this class does is maintain the `manifest_by_name` mapping. In subsequent diffs we should be able to move some additional logic into this class, which will help clean up the code and eliminate some redudant work. In particular, we can have this class cache project hashes, which will avoid re-computing hashes over and over again for the same projects as we do in many cases today. We should also be able to save and re-use some of the project dependency ordering computation in some cases as well. Reviewed By: strager Differential Revision: D16477400 fbshipit-source-id: f06f62f77d8443fccaa69fe4c1306e39c395b325
-
Adam Simpkins authored
Summary: Update `BuildOpts.compute_dirs()` to use the correct project-specific manifest context when computing project hashes. Previously it was incorrectly using the initial project's context when evaluating all dependencies. This would result in some projects potentially seeing the wrong values for variables that may change from project to project (like `test`). Reviewed By: pkaush Differential Revision: D16477398 fbshipit-source-id: 6c23f5e5e19b2402000a138b3920b79044446041
-
Adam Simpkins authored
Summary: Add a ContextGenerator class so that we actually use the correct per-project context when loading projects and computing dependencies. Previously commands like `build` and `test` would change the contexts for each project as they iterated through and performed the build. However, they did not do this when first loading the projects. This could cause them to use different context values when loading dependencies than when performing the build. For instance, this could cause issues if a project depends on `googletest` only when testing is enabled, as the code previously did not set the "test" parameter when evaluating dependencies. Reviewed By: pkaush Differential Revision: D16477396 fbshipit-source-id: c1e055f07de1cb960861d19594e3bda20a2ccd87
-
Adam Simpkins authored
Summary: Check that all variable names are valid when loading manifest files. This ensures that getdeps.py will error out if someone makes a typo in a variable name, rather than treating it as never equal to anything. Reviewed By: pkaush Differential Revision: D16477397 fbshipit-source-id: 030e0642ff4a08db8eb74a0a0223e03d53e4880f
-
Tristan Rice authored
Summary: This allows us to use a custom deleter to track the lifetime of exceptions in the case of smart pointers which may be persisted outside catch blocks. Reviewed By: yfeldblum Differential Revision: D16572937 fbshipit-source-id: ad2f0a981a2b31ef4b17a902719b684f538c29c7
-
Amir Livneh authored
Reviewed By: JunqiWang Differential Revision: D16497024 fbshipit-source-id: aa0e42b4bfba3c70769514131daa30df84851126
-
- 31 Jul, 2019 6 commits
-
-
John Strizich authored
Summary: bring this in line with other facebook opensource projects Reviewed By: saifhhasan Differential Revision: D16577367 fbshipit-source-id: d762658505f824cc180c55ea4485cecf525b8fdc
-
Mark Santaniello authored
Summary: Add convenience aliases for std::pmr versions of folly::sorted_vector_set and folly::sorted_vector_map. I also add the traditional one-argument constructor taking the allocator. Reviewed By: yfeldblum Differential Revision: D16523576 fbshipit-source-id: 33514db62eb8dc1b603f45204977751091e528d9
-
Dan Schatzberg authored
Differential Revision: D16568423 Original commit changeset: 533353ef623a fbshipit-source-id: fa2a719d34ee422a3e20a6e69f3c5edfb0f00257
-
Yedidya Feldblum authored
Summary: [Folly] Fix `-Wshadow` violations found by gcc. Reviewed By: meyering Differential Revision: D16578896 fbshipit-source-id: 3ffe6089ad7b78d9c01d085029b55ec94d6adcff
-
Andrii Grynenko authored
Reviewed By: yfeldblum, VitalyKalinkin Differential Revision: D16568423 fbshipit-source-id: 533353ef623a4bd2629a3c1782b6228f598d6c01
-
Alexey Spiridonov authored
Summary: Simply linking `GMOCK_LIBS` into a binary was not telling CMake that the binary depends on `gmock` being built. So, let's add that dependency explicitly. This wasn't breaking in production because we typically build with `-j 4`, and `gmock` was getting built before the first dependent binary would attempt to link. Also, since `rsocket` bundles its own `gmock`, it is just a waste of time to compile a system-level gmock. It's not a real dependency. NB: The change in `fbcode_builder.py` is needed because now that `rsocket` no longer depends on anything on Github, driver programs that were unconditionally setting `projects_dir` started to fail to build `rsocket`. Reviewed By: simpkins Differential Revision: D16461572 fbshipit-source-id: 1e95654e96256e7ed37d42e702b5433bf2fe5328
-
- 30 Jul, 2019 2 commits
-
-
Nathan Bronson authored
Summary: This diff adds unit tests that print out the wall, user, and system time for two backend implementations of CacheLocality gathering. Reviewed By: yfeldblum Differential Revision: D16547404 fbshipit-source-id: 5b5467965eb21bc50ad7248c0badd814edc71d68
-
Yedidya Feldblum authored
Summary: [Folly] Fix non-portable annotation syntax in `F14TestUtil.h`, using portable `[[noreturn]]` v.s. non-portable `__annotation__((__noreturn__))`. The non-portable syntax works with GCC and Clang, but is not recognized by MSVC. Reviewed By: jkedgar, terrelln, Orvid Differential Revision: D16553166 fbshipit-source-id: a652d31d31eca773009885f648f44ea3798e1460
-
- 29 Jul, 2019 1 commit
-
-
Jorge Lopez Silva authored
Summary: It's desirable to know if a given server socket is accepting or if a regular UDP socket is reading. Reviewed By: dddmello Differential Revision: D16529348 fbshipit-source-id: 2e9a2e505f97344d21449aed7c9effc298877e41
-
- 28 Jul, 2019 1 commit
-
-
Nathan Bronson authored
Summary: Cache locality information under /sys is dispersed across a very large number of files. This is a problem for short-lived processes due to direct overheads and lock contention in the kernel. This diff switches to a heuristic strategy that infers the interference pattern from /proc/cpuinfo instead of computing it exactly. This doesn't necessarily produce exactly the correct cache hierarchy info, but it yields the correct topological sort for machines that have only core-local and socket-local cache locality. Differential Revision: D16459331 fbshipit-source-id: a322c126d1a4775d015bfb81451dbc6ad6fcc0fd
-
- 26 Jul, 2019 4 commits
-
-
Matt Glazar authored
Summary: flake8 (in Python 2.7 mode) complains that `typing` is mentioned in type annotations but is not defined: ``` fbcode_builder/getdeps/buildopts.py:251:21: F821 undefined name 'typing' subst_mapping, # type: typing.Mapping[str, str] ^ fbcode_builder/getdeps/buildopts.py:253:5: F821 undefined name 'typing' # type: (...) -> typing.Optional[str] ^ 2 F821 undefined name 'typing' 2 ``` Import `typing` explicitly to silence this warning. Because `typing` may be unavailable, import it conditionally. (Because it's only referenced in comments, failing to import `typing` should have no effect at run time.) Reviewed By: snarkmaster Differential Revision: D16435696 fbshipit-source-id: 78a4a7b07acc46aa998f02b54b1a6e52c1daafde
-
Nick Wolchko authored
Summary: We need to wrap coro_.resume() with a RequestContextScopeGuard so that if the task changes the request context, we restore it after the coroutine suspends itself. Reviewed By: lewissbaker Differential Revision: D16497375 fbshipit-source-id: 439a6f41b2294e56d2ec1b0013a6013524b5ae6a
-
Julio C. Rocha authored
Summary: Allow builds for 64-bit ARM (MSVC) to use the same implementation of `__builtin_clzll` as ARM and x86 architectures. Pull Request resolved: https://github.com/facebook/folly/pull/1191 Test Plan: Imported from GitHub, without a `Test Plan:` line. Reviewed By: yfeldblum Differential Revision: D16350573 Pulled By: Orvid fbshipit-source-id: f25087b3a53de09767f505ee8c7d971a6d957189
-
Nick Terrell authored
Summary: Note that we only provide the strong exception guarantee for single key insertion and emplacement when `std::is_nothrow_constructible<value_type>::value == true`. We could `static_assert()` that in `sorted_vector_set`, since it seems to hold for all contbuilds. But for `sorted_vector_map` there are quite a few contbuilds broken by that static assert. So I've chosen not to static assert in `sorted_vector_set` for consistency. `insert()`, `emplace*()` and `erase()` take `const_iterator` in compliance with C++11. `erase()` has an overload that takes an `iterator` in C++17, but since we are backed by a vector I don't think that is necessary. Add `emplace_hint()` variants. Reviewed By: yfeldblum Differential Revision: D16427231 fbshipit-source-id: 4bcf6fd01d9b1320548d12b152d1cef9291c2dd2
-
- 25 Jul, 2019 4 commits
-
-
Chad Austin authored
Summary: While wrapping my head around the TDigest code, I made a few small drive-by clean-ups. Reviewed By: yfeldblum Differential Revision: D16478284 fbshipit-source-id: aaf289a57ef633f0f1527263beffb7c0edf596d1
-
Nathan Bronson authored
Summary: The standard requires that operator== for associative containers check key equality using operator==, which may be a refinement of the container's key_eq. (The requirement is expressed via equal_range and std::is_permutation, but has the same effect.) The straightforward way to implement this results in duplicate key comparisons. This diff adds a containsEqualValue method that can avoid the second check, and uses it for map and set operator==. Reviewed By: yfeldblum Differential Revision: D16455735 fbshipit-source-id: 8ccd0743f8c11bee5d91c065214cead96dd8b72c
-
Chad Austin authored
Summary: Eden no longer depends on fboss/common/
🌈 Reviewed By: simpkins Differential Revision: D16062879 fbshipit-source-id: e6cf6eed408ca6e688ff2b9b532b15aa96902ac1 -
Chad Austin authored
Summary: Add a dependency from the eden open source build to the fb303 open source build and switch EdenServiceHandler to BaseService. Reviewed By: simpkins Differential Revision: D15528156 fbshipit-source-id: 2ca5c31dd9fcc9bac43fd399b27f33b6f2c5ebfc
-
- 24 Jul, 2019 7 commits
-
-
Nanshu Chen authored
Summary: Given a cpp folly::coro::AsyncGenerator, a python async generator/iterator may be built and bridged to it. Users may use `async for ...` syntax to consume data from it. Reviewed By: yfeldblum Differential Revision: D16404979 fbshipit-source-id: dd2dfd52d00bd1a3e30e838359a27458744f6461
-
Matt Glazar authored
Summary: Some people want to use getdeps with Python 2.7. This looks easy to do, so take a step toward Python 2.7 support by fixing getdeps' tests when run with Python 2.7. For Python 3, this diff should not change behavior. This diff should address https://github.com/facebook/bistro/issues/35. Reviewed By: snarkmaster Differential Revision: D16435667 fbshipit-source-id: f5c262b12995b609263341c4de26dac7f9b12b70
-
Christian Clauss authored
Summary: This is just https://github.com/facebook/bistro/pull/37/, backported to `fbcode_builder`. snarkmaster Pull Request resolved: https://github.com/facebook/bistro/pull/37 Test Plan: Push and watch Travis Reviewed By: simpkins Differential Revision: D16453080 Pulled By: snarkmaster fbshipit-source-id: a15eaead931f046c41e50f8e3b412ef68b172d65
-
Nick Terrell authored
Summary: `dynamic::hash()` would copy every key-value pair in the object accumulator hash because of two bugs in the code: 1. The lambda took `auto` instead of `auto const&` 2. The hasher was `hash<pair<dynamic, dynamic>>` not `hash<pair<dynamic const, dynamic>>` meaning a conversion was needed. These bugs together caused 2 copies for each sub-object. Since the copies are recursive, each object got copied 2*depth times. Reviewed By: yfeldblum Differential Revision: D16452213 fbshipit-source-id: 64a55e1640abb022c148183646e9f9720fd8482e
-
Alastair Harrison authored
Summary: This is a proposed fix for issue: https://github.com/facebook/folly/issues/1193 Using `folly::resizeWithoutInitialization` with libc++ and the address sanitizer causes false positive 'container overflow' failures. This PR only addresses the problem for resizing `std::vector`. Presumably the version of `folly::resizeWithoutInitialization` for `std::string` has the same problem, but I have not verified this. ### Potential issues This PR assumes that the `__sanitizer_annotate_contiguous_container` is available in libc++, and that the `std::vector` implementation has been annotated with it. The latter occurred in ~2014: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/vector?r1=191987&r2=208319&pathrev=208319 If there are people using C++14 compilers with versions of libc++ predating the addition of the `std::vector<T>::__annotate_contiguous_container` member function then this fix will fail to compile. I'm not aware of any sane way to detect the exact version of libc++ being used. Perhaps a suitable mitigation for those (few?) people with a C++14 compiler and pre-2015 libc++ implementation would be to provide a `FOLLY_` macro to disable the annotation. Pull Request resolved: https://github.com/facebook/folly/pull/1194 Reviewed By: yfeldblum Differential Revision: D16445890 Pulled By: nbronson fbshipit-source-id: ef33bbd5cc12c71822985c5174bf8e47e6eb3757
-
Yedidya Feldblum authored
Summary: [Folly] Extract type aliases in `LtHash` members to avoid unnatural line breaks and indentation. Reviewed By: modocache Differential Revision: D16453375 fbshipit-source-id: 8d68458ba3ba7bf79fef82986f4f170e3b74ddd6
-
Yedidya Feldblum authored
Summary: [Folly] Apply `clang-format` to `folly/experimental/crypto/`. Reviewed By: modocache Differential Revision: D16453122 fbshipit-source-id: 5a24b20dba3ab472cd490afaaa24e7ab1c1295ec
-
- 23 Jul, 2019 4 commits
-
-
Adam Simpkins authored
Summary: getdeps allowed common arguments to be specified either before or after the subcommand name. However, the arguments were only actually honored if they were specified on the command line after the subcommand name. Specifying any of these arguments before the subcommand would simply be ignored, and the default value would be used. This happened since the subcommand argument's default value overwrote the value specified by the user from the main command parser. This fixes the behavior by using `argparse.SUPPRESS` so that argparse won't set the value at all if it was not specified. This allows the value from the main parser to be used correctly if the argument was not seen by the subcommand parser. Reviewed By: chadaustin Differential Revision: D16435358 fbshipit-source-id: f3893ef7a27fb018247f249f313d6438472e0140
-
Nick Terrell authored
Summary: F14NodeSet::insert() leaks memory when construction throws. Reviewed By: yfeldblum, nbronson Differential Revision: D16399317 fbshipit-source-id: 4c9385288dd212469dfbd10b3e990b3533dc66d3
-
Dan Melnic authored
Summary: eachToTuple: use to<fbstring>(delim) instead of delim Reviewed By: yfeldblum Differential Revision: D16419866 fbshipit-source-id: 7a57f41ea210c569284f6c619784adc95f03b26e
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D16426555 fbshipit-source-id: 0211c58b6919dc412b9cd7a029f0543d0060b40b
-
- 22 Jul, 2019 2 commits
-
-
Andrii Grynenko authored
Differential Revision: D16368120 fbshipit-source-id: 0511e2f84b3bf8d1affbfbeecd05c04cb0269037
-
Paul Gossman authored
Summary: This file is included in `coro/TimedWait.h` and `coro/Collect.h`, so inclusion of those two headers is causing redefinition errors. Reviewed By: yfeldblum Differential Revision: D16414841 fbshipit-source-id: 103fa87a7c978d256e58eb67089b4cb984d362e4
-