Bug 2171490 - flamethrower: FTBFS in Fedora rawhide/f38
Summary: flamethrower: FTBFS in Fedora rawhide/f38
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: flamethrower
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Petr Menšík
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 2113750
Blocks: F38FTBFS
TreeView+ depends on / blocked
 
Reported: 2023-02-20 11:47 UTC by Fedora Release Engineering
Modified: 2023-02-20 18:50 UTC (History)
2 users (show)

Fixed In Version: flamethrower-0.11.0-14.fc39 uvw-2.12.1-4.fc39 flamethrower-0.11.0-14.fc38
Clone Of:
Environment:
Last Closed: 2023-02-20 18:50:33 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github skypjack uvw pull 273 0 None open Include cstdint where uintX_t is used 2023-02-20 17:50:29 UTC

Description Fedora Release Engineering 2023-02-20 11:47:56 UTC
flamethrower failed to build from source in Fedora rawhide/f38

https://koji.fedoraproject.org/koji/taskinfo?taskID=96326886


For details on the mass rebuild see:

https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Please fix flamethrower at your earliest convenience and set the bug's status to
ASSIGNED when you start fixing it. If the bug remains in NEW state for 8 weeks,
flamethrower will be orphaned. Before branching of Fedora 39,
flamethrower will be retired, if it still fails to build.

For more details on the FTBFS policy, please visit:
https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/

Comment 1 Petr Menšík 2023-02-20 17:10:58 UTC
Oh, that seems to be caused by updated uvw, which introduced some incompatibilities. Or maybe some toolchain changes, because it seems on F36 just with updated uvw package it still compiles just fine. On rawhide it does not.

Comment 2 Petr Menšík 2023-02-20 17:50:29 UTC
Confirmed it is fixed by small change in uvw package. Just #include <cstdint> anywhere std:uint32_t is used. Added them also to anywhere uintX_t is used.

Comment 3 Petr Menšík 2023-02-20 17:52:41 UTC
With version uvw-devel-2.12.1-3.fc38.x86_64, it ends with error:

/usr/bin/g++ -DDOH_ENABLE -DUSE_HTTP_PARSER -Dflamecore_EXPORTS -I/usr/include/ldns/ldns -I/usr/include/p11-kit-1 -I/builddir/build/BUILD/flamethrower-0.11.0/3rd/base64url -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -std=c++17 -fPIC -Wall -MD -MT CMakeFiles/flamecore.dir/flame/tcptlssession.cpp.o -MF CMakeFiles/flamecore.dir/flame/tcptlssession.cpp.o.d -o CMakeFiles/flamecore.dir/flame/tcptlssession.cpp.o -c /builddir/build/BUILD/flamethrower-0.11.0/flame/tcptlssession.cpp
In file included from /usr/include/uvw/emitter.h:13,
                 from /usr/include/uvw/resource.hpp:6,
                 from /usr/include/uvw/handle.hpp:8,
                 from /usr/include/uvw/async.h:5,
                 from /usr/include/uvw.hpp:1,
                 from /builddir/build/BUILD/flamethrower-0.11.0/flame/tcpsession.h:6,
                 from /builddir/build/BUILD/flamethrower-0.11.0/flame/tcptlssession.h:5,
                 from /builddir/build/BUILD/flamethrower-0.11.0/flame/tcptlssession.cpp:5:
/usr/include/uvw/type_info.hpp:17:37: error: 'uint32_t' in namespace 'std' does not name a type; did you mean 'wint_t'?
   17 | [[nodiscard]] static constexpr std::uint32_t fnv1a(const char *curr) noexcept {
      |                                     ^~~~~~~~
      |                                     wint_t
/usr/include/uvw/type_info.hpp:29:34: error: 'uint32_t' in namespace 'std' does not name a type; did you mean 'wint_t'?
   29 | [[nodiscard]] static inline std::uint32_t counter() noexcept {
      |                                  ^~~~~~~~
      |                                  wint_t
/usr/include/uvw/type_info.hpp:35:27: error: 'uint32_t' in namespace 'std' does not name a type; did you mean 'wint_t'?
   35 | [[nodiscard]] static std::uint32_t fake() noexcept {
      |                           ^~~~~~~~
      |                           wint_t
/usr/include/uvw/type_info.hpp:53:37: error: 'uint32_t' in namespace 'std' does not name a type; did you mean 'wint_t'?
   53 | [[nodiscard]] static constexpr std::uint32_t type() noexcept {
      |                                     ^~~~~~~~
      |                                     wint_t
/usr/include/uvw/emitter.h:289:29: error: 'uint32_t' is not a member of 'std'; did you mean 'wint_t'?
  289 |     std::unordered_map<std::uint32_t, std::unique_ptr<BaseHandler>> handlers{};
      |                             ^~~~~~~~
      |                             wint_t
/usr/include/uvw/emitter.h:289:66: error: template argument 1 is invalid
  289 |     std::unordered_map<std::uint32_t, std::unique_ptr<BaseHandler>> handlers{};
      |                                                                  ^~
/usr/include/uvw/emitter.h:289:66: error: template argument 3 is invalid
/usr/include/uvw/emitter.h:289:66: error: template argument 4 is invalid
/usr/include/uvw/emitter.h:289:66: error: template argument 5 is invalid
/usr/include/uvw/emitter.h: In member function 'uvw::Emitter<T>::Handler<E>& uvw::Emitter<T>::handler()':
/usr/include/uvw/emitter.h:157:19: error: 'type' was not declared in this scope; did you mean 'wctype'?
  157 |         auto id = type<E>();
      |                   ^~~~
      |                   wctype
/usr/include/uvw/emitter.h:157:25: error: expected primary-expression before '>' token
  157 |         auto id = type<E>();
      |                         ^
/usr/include/uvw/emitter.h:157:27: error: expected primary-expression before ')' token
  157 |         auto id = type<E>();
      |                           ^
/usr/include/uvw/emitter.h:159:22: error: request for member 'count' in '((uvw::Emitter<T>*)this)->uvw::Emitter<T>::handlers', which is of non-class type 'int'
  159 |         if(!handlers.count(id)) {
      |                      ^~~~~
/usr/include/uvw/emitter.h:163:52: error: request for member 'at' in '((uvw::Emitter<T>*)this)->uvw::Emitter<T>::handlers', which is of non-class type 'int'
  163 |         return static_cast<Handler<E> &>(*handlers.at(id));
      |                                                    ^~
/usr/include/uvw/emitter.h: In member function 'void uvw::Emitter<T>::clear()':
/usr/include/uvw/emitter.h:264:32: error: request for member 'begin' in '((uvw::Emitter<T>*)this)->uvw::Emitter<T>::handlers', which is of non-class type 'int'
  264 |         std::for_each(handlers.begin(), handlers.end(), [](auto &&hdlr) { if(hdlr.second) { hdlr.second->clear(); } });
      |                                ^~~~~
/usr/include/uvw/emitter.h:264:50: error: request for member 'end' in '((uvw::Emitter<T>*)this)->uvw::Emitter<T>::handlers', which is of non-class type 'int'
  264 |         std::for_each(handlers.begin(), handlers.end(), [](auto &&hdlr) { if(hdlr.second) { hdlr.second->clear(); } });
      |                                                  ^~~
/usr/include/uvw/emitter.h: In member function 'bool uvw::Emitter<T>::empty() const':
/usr/include/uvw/emitter.h:274:19: error: 'type' was not declared in this scope; did you mean 'wctype'?
  274 |         auto id = type<E>();
      |                   ^~~~
      |                   wctype
/usr/include/uvw/emitter.h:274:25: error: expected primary-expression before '>' token
  274 |         auto id = type<E>();
      |                         ^
/usr/include/uvw/emitter.h:274:27: error: expected primary-expression before ')' token
  274 |         auto id = type<E>();
      |                           ^
/usr/include/uvw/emitter.h:276:27: error: request for member 'count' in '((const uvw::Emitter<T>*)this)->uvw::Emitter<T>::handlers', which is of non-class type 'const int'
  276 |         return (!handlers.count(id) || static_cast<Handler<E> &>(*handlers.at(id)).empty());
      |                           ^~~~~
/usr/include/uvw/emitter.h:276:76: error: request for member 'at' in '((const uvw::Emitter<T>*)this)->uvw::Emitter<T>::handlers', which is of non-class type 'const int'
  276 |         return (!handlers.count(id) || static_cast<Handler<E> &>(*handlers.at(id)).empty());
      |                                                                            ^~
/usr/include/uvw/emitter.h: In member function 'bool uvw::Emitter<T>::empty() const':
/usr/include/uvw/emitter.h:285:37: error: request for member 'cbegin' in '((const uvw::Emitter<T>*)this)->uvw::Emitter<T>::handlers', which is of non-class type 'const int'
  285 |         return std::all_of(handlers.cbegin(), handlers.cend(), [](auto &&hdlr) { return !hdlr.second || hdlr.second->empty(); });
      |                                     ^~~~~~
/usr/include/uvw/emitter.h:285:56: error: request for member 'cend' in '((const uvw::Emitter<T>*)this)->uvw::Emitter<T>::handlers', which is of non-class type 'const int'
  285 |         return std::all_of(handlers.cbegin(), handlers.cend(), [](auto &&hdlr) { return !hdlr.second || hdlr.second->empty(); });
      |                                                        ^~~~
[ 46%] Building CXX object CMakeFiles/flamecore.dir/flame/utils.cpp.o

Comment 4 Petr Menšík 2023-02-20 17:58:12 UTC
With version uvw-2.12.1-4.fc39 it has built again. No other change in flamethrower is needed.


Note You need to log in before you can comment on or make changes to this bug.