folly icon indicating copy to clipboard operation
folly copied to clipboard

Proxygen Linux compilation breaking in folly io_uring

Open moderation opened this issue 1 year ago • 0 comments

For the past couple of days, a change in folly is causing a compilation error in proxygen. It looks like https://github.com/facebook/folly/commit/d85a0f6314f280575e8bc56965bbd8c5bb8b72c9 is the change causing the error. There hasn't been a liburing release since 2.4.

-- Generating done (0.0s)
-- Build files have been written to: /home/moderation/Library/proxygen/proxygen/_build/deps/folly/build
[  1%] Building CXX object CMakeFiles/folly_base.dir/folly/experimental/io/IoUring.cpp.o
[  1%] Building CXX object CMakeFiles/folly_base.dir/folly/io/async/EventBaseBackendBase.cpp.o
[  2%] Building CXX object CMakeFiles/folly_base.dir/folly/io/async/EventBaseLocal.cpp.o
[  2%] Building CXX object CMakeFiles/folly_base.dir/folly/io/async/EventBaseManager.cpp.o
[  2%] Building CXX object CMakeFiles/folly_base.dir/folly/io/async/EventBaseThread.cpp.o
[  3%] Building CXX object CMakeFiles/folly_base.dir/folly/io/async/EventHandler.cpp.o
[  3%] Building CXX object CMakeFiles/folly_base.dir/folly/io/async/HHWheelTimer.cpp.o
[  3%] Building CXX object CMakeFiles/folly_base.dir/folly/io/async/PasswordInFile.cpp.o
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.cpp: In member function ‘virtual int folly::IoUring::submitOne(folly::AsyncBase::Op*)’:
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.cpp:277:25: error: no match for ‘operator!=’ (operand types are ‘const folly::IoUringOp::Options’ and ‘const folly::IoUringOp::Options’)
  277 |   if (iop->getOptions() != getOptions()) {
      |       ~~~~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~
      |                      |               |
      |                      |               const folly::IoUringOp::Options
      |                      const folly::IoUringOp::Options
In file included from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/AsyncBase.h:30,
                 from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.h:20,
                 from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.cpp:17:
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Function.h:956:6: note: candidate: ‘template<class FunctionType> bool folly::operator!=(const Function<F>&, std::nullptr_t)’
  956 | bool operator!=(const Function<FunctionType>& fn, std::nullptr_t) {
      |      ^~~~~~~~
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Function.h:956:6: note:   template argument deduction/substitution failed:
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.cpp:277:39: note:   ‘const folly::IoUringOp::Options’ is not derived from ‘const folly::Function<F>’
  277 |   if (iop->getOptions() != getOptions()) {
      |                                       ^
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Function.h:961:6: note: candidate: ‘template<class FunctionType> bool folly::operator!=(std::nullptr_t, const Function<F>&)’
  961 | bool operator!=(std::nullptr_t, const Function<FunctionType>& fn) {
      |      ^~~~~~~~
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Function.h:961:6: note:   template argument deduction/substitution failed:
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.cpp:277:39: note:   ‘const folly::IoUringOp::Options’ is not derived from ‘const folly::Function<F>’
  277 |   if (iop->getOptions() != getOptions()) {
      |                                       ^
In file included from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/AsyncBase.h:32:
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Range.h:1323:13: note: candidate: ‘template<class Iter> bool folly::operator!=(const Range<Iter>&, const Range<Iter>&)’
 1323 | inline bool operator!=(const Range<Iter>& lhs, const Range<Iter>& rhs) {
      |             ^~~~~~~~
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Range.h:1323:13: note:   template argument deduction/substitution failed:
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.cpp:277:39: note:   ‘const folly::IoUringOp::Options’ is not derived from ‘const folly::Range<Iter>’
  277 |   if (iop->getOptions() != getOptions()) {
      |                                       ^
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Range.h:1378:70: note: candidate: ‘template<class T, class U> std::enable_if_t<folly::detail::ComparableAsStringPiece<A, B>::value, bool> folly::operator!=(const T&, const U&)’
 1378 | std::enable_if_t<detail::ComparableAsStringPiece<T, U>::value, bool> operator!=(
      |                                                                      ^~~~~~~~
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Range.h:1378:70: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/13/bits/move.h:37,
                 from /usr/include/c++/13/bits/atomic_base.h:39,
                 from /usr/include/c++/13/atomic:41,
                 from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/SharedMutex.h:23,
                 from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.h:19:
/usr/include/c++/13/type_traits: In substitution of ‘template<bool _Cond, class _Tp> using std::enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = bool]’:
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Range.h:1378:70:   required by substitution of ‘template<class T, class U> std::enable_if_t<folly::detail::ComparableAsStringPiece<A, B>::value, bool> folly::operator!=(const T&, const U&) [with T = folly::IoUringOp::Options; U = folly::IoUringOp::Options]’
/home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.cpp:277:39:   required from here
/usr/include/c++/13/type_traits:2610:11: error: no type named ‘type’ in ‘struct std::enable_if<false, bool>’
 2610 |     using enable_if_t = typename enable_if<_Cond, _Tp>::type;
      |           ^~~~~~~~~~~
In file included from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Demangle.h:19,
                 from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Conv.h:124,
                 from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/Exception.h:25,
                 from /home/moderation/Library/proxygen/proxygen/_build/deps/folly/folly/experimental/io/IoUring.cpp:28:

moderation avatar Sep 21 '23 15:09 moderation