1. 31 Mar, 2020 3 commits
    • Adam Simpkins's avatar
      emit a script to use for running commands from the build directory · a7a1f712
      Adam Simpkins authored
      Summary:
      On Windows the build artifacts cannot be easily run directly from the build
      output directory without installing them.  The `$PATH` environment variable
      needs to be set correctly so that the runtime library dependencies can be
      found.
      
      This updates the builder code to emit a `run.ps1` wrapper script in the build
      output directory that sets `$PATH` to support running build artifacts directly
      from the build directory.
      
      Additionally, this updates the CMake-specific builder to set properly when
      running the tests with `ctest`.
      
      Reviewed By: wez
      
      Differential Revision: D20688290
      
      fbshipit-source-id: 5d0f4d685692bca7e37370bd88309cf7634d87f0
      a7a1f712
    • Wez Furlong's avatar
      watchman: teach watchman to talk to EdenFS on Windows · 49ddfab1
      Wez Furlong authored
      Summary:
      This still requires support from EdenFS in order to do much
      of use, but it takes us a step closer:
      
      * Pull in cpptoml when building with Eden support
      * On Windows, when we locate the `.eden` directory, load and parse
        the config file in order to determine the socket path
      * If the EdenView constructor throws, treat it as a terminal error
        so that we don't fallback to the regular filesystem watcher.
        This is important because current EdenFS builds don't implement
        the journal thrift API endpoint yet.
      
      Reviewed By: pkaush
      
      Differential Revision: D20504752
      
      fbshipit-source-id: 48bbad49f1641698aa7d7b85674e3ddf4d4e617d
      49ddfab1
    • Wez Furlong's avatar
      getdeps: allow setting per-project install prefix for DESTDIR installs · 849da725
      Wez Furlong authored
      Summary:
      We have a global `--install-prefix` argument that can be used to set
      the prefix for all projects, but that is only suitable if you are running with
      sufficient privileges to install each of the deps to that location during the
      build.  Cmake dependency resolution won't work from the build directory in that
      situation; it can only see the final installed location and it will error out
      if those files are not present, or link against the currently installed version
      instead of the version we just built; not great!
      
      This commit adds a project specific `--project-install-prefix` that can be used
      on just the leaf project in a set of deps.  That sidesteps the dependency
      concern because only the last stage is built in that mode.  This option
      can technically be applied to an arbitrary set of projects, but in light
      of the above, in practice it only makes sense to use it for the final
      cmake project.  Only the CMakeBuilder respects this option.
      
      In the watchman repo, this commit adjusts the autogen.sh script to allow
      specifying the installation prefix; it defaults to `/usr/local` as you
      might expect.
      
      refs: https://github.com/facebook/watchman/issues/760
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20674439
      
      fbshipit-source-id: 52799dbd47f3c295e2d6469ee2b74cedeaa20138
      849da725
  2. 30 Mar, 2020 3 commits
    • Mat Hostetter's avatar
      Fix harmless math errors in folly::Format stack buffer manipulation. · c234aa77
      Mat Hostetter authored
      Summary:
      The math that figures out the biggest possible formatted
      number, for a stack buffer size, computed 65 bytes for "binary" format:
      
      ```
          // #b: 0b prefix + 64 bytes = 65 bytes
      ```
      
      But with that 2-byte "0b" prefix this of course sums to 66 bytes.
      
      This turns out to be harmless, rather than causing a buffer overrun,
      because the buffer size additionally reserves two more bytes for
      "prefix shenanigans", which are redundant with the two prefix bytes
      explicitly reserved for "0b" (but in this case were covering up the
      off-by-one error).
      
      I cleaned up a few things while I was there:
      
      - I fixed the size computation for binary buffers, including
        making it use kMaxBinaryLength, which is based on `sizeof(uintmax_t)`,
        rather than hardcoding `64`.
      - I removed the redundant prefix shenanigans reservation.
      - I fixed the places that were reserving two bytes for a prefix
        (like "0x") right after asserting that no prefix is allowed,
        e.g. for chars and decimal numbers.
      - I stopped reserving a byte for NUL, because these days this code
        uses folly::StringPiece and never NUL-terminates.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20694395
      
      fbshipit-source-id: 6658675d9993d2fe223675db55c8040ddee143a8
      c234aa77
    • Wez Furlong's avatar
      getdeps: fix boost download URL · 6276e84e
      Wez Furlong authored
      Summary:
      Not sure if this is a transient issue, but the URL we've been using to obtain boost has started to return 403 errors.
      Switch to a sourceforge download link instead.
      
      Refs: https://github.com/facebook/watchman/pull/797
      
      Reviewed By: chadaustin
      
      Differential Revision: D20739351
      
      fbshipit-source-id: 47483c675d59201a410c9d2a8f6db0f63ea5da69
      6276e84e
    • Wez Furlong's avatar
      getdeps: fixup python3 usage on GitHub Actions CI · 5631c7b2
      Wez Furlong authored
      Summary:
      My recent change to ensure that we were using python3 to launch everything failed on windows: the GH actions environment has `python.exe` in the path and it is python version 3.  There is no such thing as `python3` in that environment, although there is a `python2`.
      
      Refs: https://github.com/facebook/watchman/pull/797
      
      Reviewed By: chadaustin
      
      Differential Revision: D20740411
      
      fbshipit-source-id: 0e40590ccedc18e327ebb84901e2509588fdd0ff
      5631c7b2
  3. 28 Mar, 2020 2 commits
    • Nathan Bronson's avatar
      better fix for MSVC compilation issue · 278c88d5
      Nathan Bronson authored
      Summary:
      This diff is a more complete fix for the problem addressed
      by D19561643, in which private inheritance caused an incorrect
      inaccessibility error for a type that was derived via an alternate
      construction from a template param.
      
      Reviewed By: lnicco
      
      Differential Revision: D20718329
      
      fbshipit-source-id: 778d246d07030f6abb9e08e127a98d48c736a7d7
      278c88d5
    • Eric Niebler's avatar
      tell the range-v3 library that folly::Range satisfies the view concept · d9fd5f23
      Eric Niebler authored
      Summary: Upstream range-v3 has changed in accordance with C++20's standard ranges such that view types now need to explicitly opt-in to the `view` concept. This diff adds the hook needed so that the latest version of the range library will recognize `folly::Range` as a view.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20569727
      
      fbshipit-source-id: 2f8bca017b2f8036b02568997a0b7c76d9c41646
      d9fd5f23
  4. 27 Mar, 2020 5 commits
    • Dan Melnic's avatar
      Fix broken oss build · 9d715f1f
      Dan Melnic authored
      Summary: Fix broken oss build
      
      Reviewed By: simpkins
      
      Differential Revision: D20689035
      
      fbshipit-source-id: 1d287f59fb35cf88482a471dfdf63e89d579e6fc
      9d715f1f
    • Andrew Gallagher's avatar
      Fix demangle bug · 5d446248
      Andrew Gallagher authored
      Summary:
      Avoid a forward declaration mismatch between `libiberty.h` and
      `libgen.h` that dirs in modular builds (likely related to T35368090).
      This defines `HAVE_DECL_BASENAME`, which is normally defined
      in the `config.h` generated during the binutils build, to prevent this
      conflicting declaration.
      
      Reviewed By: igorsugak
      
      Differential Revision: D20600924
      
      fbshipit-source-id: 0fb6287719abb3cf52d7eda457efbe567985d1d4
      5d446248
    • Lee Howes's avatar
      Fix SemiFuture::delayed to not insert an inline executor · 6d97401b
      Lee Howes authored
      Summary: SemiFuture::delayed should pass the SemiFuture all the way through.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20684503
      
      fbshipit-source-id: e7d1299a177d347cb5b92e9e700c607fc9f7c4c3
      6d97401b
    • Lukas Piatkowski's avatar
      mononoke: make metaconfig OSS buildable · 38c7c898
      Lukas Piatkowski authored
      Summary: This diff makes it possible to relay on the thrift structures from configerator in OSS.
      
      Reviewed By: ahornby
      
      Differential Revision: D20279457
      
      fbshipit-source-id: 39df1c7a6f78b10a0a5bdeeebe476249ab674cc8
      38c7c898
    • Shai Szulanski's avatar
      Remove yarpl from thrift cmake lists · ea2ad0ad
      Shai Szulanski authored
      Reviewed By: vitaut
      
      Differential Revision: D20650610
      
      fbshipit-source-id: add9ff42c7c35696767c0c4d004235885fcd1565
      ea2ad0ad
  5. 26 Mar, 2020 11 commits
    • Adam Retter's avatar
      Fix cache line sizing on s390x (#1340) · 75ddbbfa
      Adam Retter authored
      Summary:
      We are using Folly inside RocksDB, and we noticed a build failure due to cache line sizing on s390x. I fixed it in our copy of Folly, and am sending you the changes upstream.
      
      CC pdillinger
      Pull Request resolved: https://github.com/facebook/folly/pull/1340
      
      Reviewed By: WillerZ
      
      Differential Revision: D20628323
      
      Pulled By: Orvid
      
      fbshipit-source-id: 03ea68b023fa1fdf7fae2e283687530ab5b6ead3
      75ddbbfa
    • Dan Melnic's avatar
      Add signal handling support for the PollIoBackend derived backends · 4ab53568
      Dan Melnic authored
      Summary: Add signal handling support for the PollIoBackend derived backends
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D20612200
      
      fbshipit-source-id: 5a92e2b46a9fa102bfc02958058679bac6c22269
      4ab53568
    • Wez Furlong's avatar
      getdeps: use half as many jobs by default on windows · cf7ecf62
      Wez Furlong authored
      Summary:
      This takes some pressure off both cpu and memory
      on a laptop.
      
      Reviewed By: pkaush
      
      Differential Revision: D20562474
      
      fbshipit-source-id: a058c71c47f25c3a2b3c1e34a0d0caf83e642021
      cf7ecf62
    • Wez Furlong's avatar
      getdeps: fixup the dyndeps fixed up by fixup dyndeps · 2f2a55e3
      Wez Furlong authored
      Summary:
      On linux we didn't account for the `--final-install-prefix` argument
      which meant that the binaries would always be rewritten to be relative to
      the destdir.
      
      This commit fixes that.
      
      Refs: https://github.com/facebook/watchman/issues/760
      
      (this doesn't deal with the compiled in statedir being in the scratch path though)
      
      Reviewed By: simpkins
      
      Differential Revision: D20659749
      
      fbshipit-source-id: 1e8e198a58361882249c33a67f54a7d97b849257
      2f2a55e3
    • Wez Furlong's avatar
      getdeps: fix git configuration on windows · 9067e9e0
      Wez Furlong authored
      Summary:
      The GH actions defaults for git prevent it from being able
      to checkout the fbthrift repo due the length of the java related
      files in the fbthrift repo.
      
      This commit tells git to use long filenames and allows the checkout
      to succeed.
      
      Reviewed By: fanzeyi
      
      Differential Revision: D20659750
      
      fbshipit-source-id: 060b36d312d52a0769cf2f2dd9af60f7446f94a8
      9067e9e0
    • Wez Furlong's avatar
      getdeps: embrace python3 a bit more · 409dd8a1
      Wez Furlong authored
      Summary:
      Ensure that we are referencing python3 in the paths
      that we generate for the github actions workflows, and remove
      some shebangs that influence how our internal linters process
      the python code.
      
      Reviewed By: fanzeyi
      
      Differential Revision: D20659747
      
      fbshipit-source-id: 6f300f8e91edf7701bb27babc7b1418958cf0a10
      409dd8a1
    • Dan Melnic's avatar
      Remove unused files · ac78d14c
      Dan Melnic authored
      Summary: Remove unused files
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20658959
      
      fbshipit-source-id: b387aa4a58ee6a610d71567f5dcd6932e49f7411
      ac78d14c
    • Andy Wei's avatar
      Fix F14Table type conversion warning · ad0c9159
      Andy Wei authored
      Summary: The `|` operation causes the  `int to uint8` conversion warning that be treated as an error on some targets and prevent them use F14Map.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20654932
      
      fbshipit-source-id: 6c909b7b58f4be263b0e30b1aa3acd82b5b9479d
      ad0c9159
    • Nick Terrell's avatar
      Require is_nothrow_destructible in F14Node tables · ef186943
      Nick Terrell authored
      Summary: We will `std::terminate` if a destructor throws, so it would be better to complain about throwing destructors in the first place.
      
      Reviewed By: nbronson
      
      Differential Revision: D20604722
      
      fbshipit-source-id: d36c771f36d0d0a26f356720698606de628ca747
      ef186943
    • Nick Terrell's avatar
      Explicitly require is_nothrow_destructible in Vector and Value tables · 6123dc9f
      Nick Terrell authored
      Summary:
      The current implementation of `std::is_nothrow_move_constructible` in libstdc++ implies `std::is_nothrow_destructible`. However, this doesn't seem to be required by the standard, see the notes section of https://en.cppreference.com/w/cpp/types/is_constructible.
      
      Since we know that all Vector and Value sets/maps already satisfy this requirement, let's codify it explicitly.
      
      Reviewed By: nbronson
      
      Differential Revision: D20604544
      
      fbshipit-source-id: bae1e8442585cedb062308b6332bd018cccca2f4
      6123dc9f
    • Nick Terrell's avatar
      Mark destroyItem() as noexcept · 8fcf46ad
      Nick Terrell authored
      Summary:
      F14Node{Map,Set} doesn't require `is_nothrow_destructible<value_type>`.  `clear()` and the destructor are both marked `noexcept`, so they will both terminate if the destructor throws. But `erase()` is not marked `noexcept`, so when the destructor throws during `erase()` the value is left in the map. This could be problematic if the value is half destroyed, or if `eraseInto()` is used.
      
      This diff fixes the problem by marking `destroyItem()` as `noexcept`, so `std::terminate` is called whenever the value destructor throws.
      
      Reviewed By: nbronson
      
      Differential Revision: D20604276
      
      fbshipit-source-id: c52c932d78d6ed61368985a749adf77c27a5a0de
      8fcf46ad
  6. 25 Mar, 2020 2 commits
    • Dan Melnic's avatar
      Add support for non libevent based backends in the AsyncSignalHandler · 5b4eed64
      Dan Melnic authored
      Summary: Add support for non libevent based backends in the AsyncSignalHandler
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D20524116
      
      fbshipit-source-id: fdd49cf75bd51599055239270dd704c496d567e3
      5b4eed64
    • Laurent Stacul's avatar
      Fix compilation errors for C++20 (#1329) · 69296166
      Laurent Stacul authored
      Summary:
      Compiling with gcc 10.0.1 and -std=gnu++2a, we have the following errors:
      ```
      folly/FBString.h:1013:33: error: no type named 'reference' in 'class std::allocator<char>'
       1013 |   typedef typename A::reference reference;
            |                                 ^~~~~~~~~
      folly/FBString.h:1014:39: error: no type named 'const_reference' in 'class std::allocator<char>'
       1014 |   typedef typename A::const_reference const_reference;
      ```
      This is due to the fact many members in `std::allocator` have been remove in C++20: https://en.cppreference.com/w/cpp/memory/allocator
      
      We also have this one due to the new way C++ resolves the comparison operators:
      ```
      folly/dynamic-inl.h:854:20: error: ambiguous overload for 'operator!=' (operand types are 'folly::dynamic::const_item_iterator' and 'folly::dynamic::const_item_iterator')
        854 |   return find(key) != items().end() ? 1u : 0u;
            |          ~~~~~~~~~ ^~ ~~~~~~~~~~~~~
            |              |                   |
            |              |                   folly::dynamic::const_item_iterator
            |              folly::dynamic::const_item_iterator
      In file included from folly/dynamic-inl.h:25,
                       from folly/dynamic.h:796,
                       from folly/dynamic.cpp:17:
      folly/detail/Iterators.h:80:8: note: candidate: 'bool folly::detail::IteratorFacade<D, V, Tag>::operator==(const D&) const [with D = folly::dynamic::const_item_iterator; V = const std::pair<const folly::dynamic, folly::dynamic>; Tag = std::f
      orward_iterator_tag]' (reversed)
         80 |   bool operator==(D const& rhs) const {
            |        ^~~~~~~~
      folly/detail/Iterators.h:98:3: note: candidate: 'typename std::enable_if<std::is_convertible<D, D2>::value, bool>::type folly::detail::IteratorFacade<D, V, Tag>::operator==(const D2&) const [with D2 = folly::dynamic::const_item_iterator; D =
       folly::dynamic::const_item_iterator; V = const std::pair<const folly::dynamic, folly::dynamic>; Tag = std::forward_iterator_tag; typename std::enable_if<std::is_convertible<D, D2>::value, bool>::type = bool]' (reversed)
         98 |   operator==(D2 const& rhs) const {
            |   ^~~~~~~~
      folly/detail/Iterators.h:84:8: note: candidate: 'bool folly::detail::IteratorFacade<D, V, Tag>::operator!=(const D&) const [with D = folly::dynamic::const_item_iterator; V = const std::pair<const folly::dynamic, folly::dynamic>; Tag = std::f
      orward_iterator_tag]'
         84 |   bool operator!=(D const& rhs) const {
            |        ^~~~~~~~
      folly/detail/Iterators.h:103:8: note: candidate: 'bool folly::detail::IteratorFacade<D, V, Tag>::operator!=(const D2&) const [with D2 = folly::dynamic::const_item_iterator; D = folly::dynamic::const_item_iterator; V = const std::pair<const f
      olly::dynamic, folly::dynamic>; Tag = std::forward_iterator_tag]'
        103 |   bool operator!=(D2 const& rhs) const {
            |        ^~~~~~~~
      ```
      Pull Request resolved: https://github.com/facebook/folly/pull/1329
      
      Reviewed By: markisaa
      
      Differential Revision: D20458078
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 15a6a4cfa0f71d45046ee2a13914672b3746b9eb
      69296166
  7. 24 Mar, 2020 3 commits
    • Andrii Grynenko's avatar
      Fix KeepAlive management for eager variants of addTask* · 6119a632
      Andrii Grynenko authored
      Summary:
      LoopController::runLoop is responsible for managing Executor/EventBase keep-alive handle.
      This diff introduces a similar level of indirection (LoopController::addTaskEager) to solve the same problem for eager variants of addTask*.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20613287
      
      fbshipit-source-id: 22388ca3b31664c5fedfd509f2d9bab3d86aab47
      6119a632
    • Lewis Baker's avatar
      Allow the CancellationToken to propagate through the co_awaitTry() algorithm · 4d2f1db9
      Lewis Baker authored
      Summary:
      Modify the TrySemiAwaitable adapter so that it customises the co_withCancellation() customisation-point and passes through the CancellationToken to the underlying awaitable (eg. a Task).
      
      This fixes code that tries to do the following so that the cancellation token propagates to a Task adapted with co_awaitTry().
      ```
      co_await co_withCancellation(cancelToken, co_awaitTry(co_foo()));
      ```
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D20443798
      
      fbshipit-source-id: 945e0f98abad4cdef0be29365642006c5687ad5f
      4d2f1db9
    • Zeyi (Rice) Fan's avatar
      use vendored Rust crates · e38fc326
      Zeyi (Rice) Fan authored
      Summary: Actually use vendored Rust crates when building with CMake. The `--offline` option make sure cargo do not go to the Internet for missing crates.
      
      Reviewed By: simpkins
      
      Differential Revision: D20542672
      
      fbshipit-source-id: ab4af40150c6af8b531a75f503a4fa848b3914da
      e38fc326
  8. 23 Mar, 2020 4 commits
    • Stepan Palamarchuk's avatar
      Add an rvalue overload of Snapshot<T>::getShared() · 9d601541
      Stepan Palamarchuk authored
      Summary:
      This allows to avoid unnecessary copy of `shared_ptr`.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D20596972
      
      fbshipit-source-id: 6411ee2f735c1db1984bcd83ceddf80e4ec6f22b
      9d601541
    • Lee Howes's avatar
      Add logging for blocking using baton while on an executor · 55fc4b32
      Lee Howes authored
      Summary:
      Add sampled logging of blocking operations made on folly::Baton from within an executor task.
      
      Relies on thread_local state recording whether we are in a context where blocking is disallowed, which means within a task running on an executor with support for the functionality. Functionality is currently limited to certain executors, and to blocking operations on Baton, but this covers common user-facing APIs like Future.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D20010963
      
      fbshipit-source-id: c0598e1a3a9c4e3641581e561b678a2b241998ff
      55fc4b32
    • Adam Simpkins's avatar
      exclude eden/scm build artifacts from the getdeps path map · f6ef5d3c
      Adam Simpkins authored
      Summary:
      If you have built the `eden/scm` subdirectory with `make local` in your
      repository it will have left a bunch of build output artifacts in the source
      tree.  Update the getdeps shipit path map for eden to explicitly exclude many
      of these build artifacts.
      
      In particular:
      - Exclude `eden/scm/build/` since this directory can contains a lot of files.
      - Exclude all `*.pyc` files since there may be a reasonable number of these.
      - Exclude several Cargo-related files since these will cause problems when
        trying to build Rust code.
      
      Reviewed By: chadaustin
      
      Differential Revision: D20570720
      
      fbshipit-source-id: a60dec4854ae470fdb58e9651fd8a3b910c76004
      f6ef5d3c
    • Wez Furlong's avatar
      folly: to_narrow for windows compatibility · efd0e727
      Wez Furlong authored
      Summary:
      The default warning settings for the MSVC compiler result in an
      extremely noisy build output, to the point where it can take minutes of reading
      through pages of output to locate the actual error when debugging a build
      problem.  The majority of these warnings are the result of implicit integer
      narrowing that is silently permitted in our posix builds.
      
      Rather than blanket suppress these conversion warnings and mask potential bugs,
      this commit makes a pass over the code and adds `folly::to_narrow` to a number
      of call sites to make it explicit that a narrowing operation is taking place
      and that it is (probably!) intentional.   We make a lot of assumptions
      throughout our various projects that we won't allow data larger than 2GB
      through eg: thrift and as a result, a lot of wire/serialization related code
      uses `uint32_t` for sizes instead of `size_t`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D20562029
      
      fbshipit-source-id: 706ba9cf330d40a2b3f911e5e9a8b9de325ebc80
      efd0e727
  9. 20 Mar, 2020 4 commits
    • Giuseppe Ottaviano's avatar
      Type-erase setCallback · 940c095e
      Giuseppe Ottaviano authored
      Summary:
      `setCallback()` functions just store the argument as a `Function`, so we don't need to specialize the templates all the way down, we can pass directly a `Function`.
      
      This reduces code size, and should not have runtime impact: either the move is elided in both cases, or if not there's no particular reason why a `Function` move should be more expensive than an arbitrary functor's (could even be faster).
      
      Reviewed By: yfeldblum, luciang
      
      Differential Revision: D20561695
      
      fbshipit-source-id: 1973c47a5410a43eb44beea36cb1105663094eb3
      940c095e
    • Shrikrishna Khare's avatar
      Script to build OpenNSA kernel modules · e7b465ec
      Shrikrishna Khare authored
      Summary:
      OpenNSA has prebuilt SDK but kernel modules have to be built from sources. Add
      a utility script to build and extend packaging script.
      
      In future, we can consider folding this build into fbcode_builder itself.
      
      Differential Revision: D20549883
      
      fbshipit-source-id: f9475b7e0223e9f357117d7d7d27df8904fa1d73
      e7b465ec
    • Pranav Thulasiram Bhat's avatar
      Fix doc in SharedMutex · a795f497
      Pranav Thulasiram Bhat authored
      Summary: Correct typo
      
      Reviewed By: lewissbaker
      
      Differential Revision: D20544820
      
      fbshipit-source-id: f9edffd0a44448fd558b3e659585044f9be81035
      a795f497
    • Koray Polat's avatar
      Update fmt from 5.3.0 to 6.1.1 · e8fe8fc4
      Koray Polat authored
      Summary: Updated fmt version to be on par with buck build. It was causing inconsistencies.
      
      Reviewed By: vitaut
      
      Differential Revision: D20528011
      
      fbshipit-source-id: d9e04ed2c28b839eaeff24120162c4db4732fa55
      e8fe8fc4
  10. 19 Mar, 2020 3 commits
    • Yedidya Feldblum's avatar
      Cut unused includes in folly/experimental/symbolizer/ElfCache.h · 8fa800e8
      Yedidya Feldblum authored
      Summary: [Folly] Cut unused `#include`s in `folly/experimental/symbolizer/ElfCache.h`.
      
      Reviewed By: Orvid
      
      Differential Revision: D20482493
      
      fbshipit-source-id: 426ebe0aa55e116e3f3c8095b0c9d0f1babdb354
      8fa800e8
    • Xavier Deguillard's avatar
      revisionstore: add a LFS remote store · 8a1bd857
      Xavier Deguillard authored
      Summary:
      This enables fetching blobs from the LFS server. For now, this is limited to
      fetching them, but the protocol specify ways to also upload. That second part
      will matter for commit cloud and when pushing code to the server.
      
      One caveat to this code is that the LFS server is not mocked in tests, and thus
      requests are done directly to the server. I chose very small blobs to limit the
      disruption to the server, by setting a test specific user-agent, we should be
      able to monitor traffic due to tests and potentially rate limit it.
      
      Reviewed By: DurhamG
      
      Differential Revision: D20445628
      
      fbshipit-source-id: beb3acb3f69dd27b54f8df7ccb95b04192deca30
      8a1bd857
    • Andrii Grynenko's avatar
      makeValueObserver · 33849b67
      Andrii Grynenko authored
      Summary: Helper observer which only triggers updates when the value changes.
      
      Reviewed By: bithree
      
      Differential Revision: D20521319
      
      fbshipit-source-id: 77e45d92f710b1701552cf29445f44aa9d9487f4
      33849b67