-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build qt-libs5 for Linux #2
Comments
I have run into https://bugreports.qt.io/browse/QTBUG-89977 which seemingly is not fixed on Qt5 5.14.2. I'm figuring out how to try and use GCC 10 to build Qt. |
Same on clang:
|
The following three patches work around this issue. Found at https://octave.discourse.group/t/mxe-octave-qfloat16-h7-error-numeric-limits-is-not-a-class-template/1108/14 |
Looks like the build of qtbase succeeded after patching. The commands I used were:
|
Waiting for #3 to get fixed - I have no idea whether I should pull from qt master or if there are any custom patches that I should depend on. |
Vanilla qtwebengine, tag 5.14.2. Issuing gmake results in the following: In file included from ../../3rdparty/chromium/third_party/perfetto/src/base/unix_task_runner.cc:17:
In file included from ../../3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/unix_task_runner.h:21:
../../3rdparty/chromium/third_party/perfetto/include/perfetto/base/task_runner.h:48:55: error: unknown type name 'uint32_t'
virtual void PostDelayedTask(std::function<void()>, uint32_t delay_ms) = 0;
^
In file included from ../../3rdparty/chromium/third_party/perfetto/src/base/unix_task_runner.cc:17:
../../3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/unix_task_runner.h:69:66: error: non-virtual member function marked 'override' hides virtual member function
void PostDelayedTask(std::function<void()>, uint32_t delay_ms) override;
^
../../3rdparty/chromium/third_party/perfetto/include/perfetto/base/task_runner.h:48:16: note: hidden overloaded virtual function 'perfetto::base::TaskRunner::PostDelayedTask' declared here: type mismatch at 2nd parameter ('int' vs 'uint32_t' (aka 'unsigned int'))
virtual void PostDelayedTask(std::function<void()>, uint32_t delay_ms) = 0;
^
2 errors generated. That's perfetto, a chromium dependency - I have no idea how to work around this one. Did you encounter anything like that @luismbo ? |
OK - seems like adding a Ah, the joys of C++ building. I hate C++ as much as I enjoy Qt. |
Another error, and I'm stumped this time: In file included from ../../3rdparty/chromium/base/stl_util.h:27:
../../3rdparty/chromium/base/optional.h:346:61: error: no member named 'value' in 'std::is_constructible<blink::LayoutUnit, const base::Optional<blink::LayoutUnit> &>'
std::is_constructible<T, const Optional<U>&>::value ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
../../3rdparty/chromium/base/optional.h:471:39: note: in instantiation of template class 'base::internal::IsConvertibleFromOptional<blink::LayoutUnit, blink::LayoutUnit>' requested here
!internal::IsConvertibleFromOptional<T, U>::value &&
^
../../3rdparty/chromium/base/optional.h:474:3: note: while substituting prior template arguments into non-type template parameter [with U = blink::LayoutUnit]
Optional(const Optional<U>& other) : internal::OptionalBase<T>(other) {}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/type_traits:946:54: note: while substituting deduced template arguments into function template 'Optional' [with U = blink::LayoutUnit, $1 = (no value)]
: public __bool_constant<__is_constructible(_Tp, _Args...)>
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/type_traits:953:16: note: in instantiation of template class 'std::__is_constructible_impl<blink::LayoutUnit, const base::Optional<blink::LayoutUnit> &>' requested here
: public __is_constructible_impl<_Tp, _Args...>
^
../../3rdparty/chromium/base/optional.h:560:16: note: in instantiation of template class 'std::is_constructible<blink::LayoutUnit, const base::Optional<blink::LayoutUnit> &>' requested here
std::is_constructible<T, U>::value &&
^
../../3rdparty/chromium/base/optional.h:422:37: note: while substituting deduced template arguments into function template 'operator=' [with U = const base::Optional<blink::LayoutUnit> &]
class OPTIONAL_DECLSPEC_EMPTY_BASES Optional
^
../../3rdparty/chromium/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h:538:10: note: while declaring the implicit copy assignment operator for 'RareData'
struct RareData {
^ It seems that https://www.cplusplus.com/reference/type_traits/is_constructible/ has a member named |
Managed to build qtwebengine after some long time of screaming into the EDIT: I forgot about one case where the build complains about a missing |
CMake issues for the time being. The instructions say:
It seems that the directory
Also:
But cmake still cannot find qtbase:
|
OK - I've remade everything from scratch, including the directory structure. Same error.
Help please? |
It seems like some sort of pathing issue. With a different path, I was able to produce a different error message:
But the path Edit: qtbase was configured with this command:
|
@luismbo Do you have any ideas for what might be going wrong here? |
I wonder if the installation step of qtbase is missing or your PATH is not pointing to the tools provided (and installed) by qtbase. Also, a coworker of mine suggested that using your distribution’s Qt packages (including the source packages) might save you some trouble. But it could very well introduce other issues, of course. |
My $PATH is I have installed qtbase into
Without running |
The README and https://doc.qt.io/qt-5/linux-building.html suggest your |
Does it need to be built from source even on linux? |
Using the distribution-provided Qt headers and libraries might work, yes. |
I'm trying to build it from source on Linux. Probably it could work with debian-provided libs/sources, but then my way of building/deploying CommonQt5 is limited to Debian.
Done that:
But nothing changed. |
The purpose of building from source is so that we can build on distributions with older glibc, making the resulting binaries more portable. Grabbing libraries from a recent distribution will cause them to fail on other setups because of the glibc versioning headache. I always had a specific VM with a debian system that was purposefully old to build my binaries with for this reason. |
Yes, that too; forgot about that reason. Apologies, I'm half-brained today. But still, I remembered that there's a good reason to figure out the process of building from source on Linux. So, yes, I'll want to keep on digging into this. In the worst case I'll need to spend some time time on learning cmake internals even if I'm not amused by the idea myself. :D |
I personally don't need prebuilt binaries, just a way to build smokgen/smokeqt. And even then, not just on linux, but macos as well. But the combination of different llvms make it hard. |
Leaving it here so someone can assign this to me.
The text was updated successfully, but these errors were encountered: