conan-io / conan-center-index

Recipes for the ConanCenter repository
https://conan.io/center
MIT License
945 stars 1.72k forks source link

[package] qt/6.4.1: cannot build qtwebengine with wayland #14884

Open EricAtORS opened 1 year ago

EricAtORS commented 1 year ago

Description

See the log section. I describe why it fails and what I've tried.

Package and Environment Details

Conan profile

[settings] arch=x86_64 arch_build=x86_64 build_type=Release compiler=gcc compiler.libcxx=libstdc++11 compiler.version=10 os=Linux os_build=Linux [options] [build_requires] [env] [conf] tools.system.package_manager:mode=install tools.cmake.cmaketoolchain:generator=Ninja

Steps to reproduce

I try to install qt/6.4.1.

Here's my conanfile that I use

conanfile.py ```python # import pydevd_pycharm from conans import ConanFile from conans.errors import ConanException required_conan_version = ">=1.54.0" class DragonflyConan(ConanFile): generators = "cmake", "cmake_find_package" settings = "os", "build_type" keep_imports = True def requirements(self): # pydevd_pycharm.settrace('localhost', port=62421, stdoutToServer=True, stderrToServer=True) self.requires("boost/1.78.0") self.requires("ffmpeg/2.3.6") self.requires("zlib/1.2.13") self.requires("eigen/3.4.0") self.requires("icu/70.1") self.requires("cpr/1.9.0") self.requires("glew/2.2.0") self.requires("catch2/3.2.0") self.requires("opencascade/7.6.2") self.requires("nlohmann_json/3.11.2") self.requires("spdlog/1.11.0") self.requires("qt/6.4.1") self.requires("ftgl/2.4.0") self.requires("glu/system") self.requires("pugixml/1.13") self.requires("dcmtk/3.6.6") self.requires("opencv/4.5.5") if not self._is_windows: self.requires("libtar/1.2.20") self.requires("libxml2/2.10.3") self.requires("xmlsec/1.2.32") self.requires("pybind11/2.10.0") self._add_requirements_to_manage_conflicts() self._add_python_dependencies() def _add_python_dependencies(self): self.requires("pyqt/6.4.0") def _add_requirements_to_manage_conflicts(self): # qt / cpr self.requires("zlib/1.2.13") # qt / cpr self.requires("zstd/1.5.2") # qt / cpr self.requires("openssl/1.1.1s") # freetype / dcmtk self.requires("libpng/1.6.39") # libtiff and opencv self.requires("libjpeg/9e") self.requires("libwebp/1.2.4") # qt / opencascade self.requires('freetype/2.12.1') @property def _current_python_version(self) -> str: return "3.10" @property def _is_windows(self) -> bool: return self.settings.get_safe("os") == 'Windows' @property def _is_linux(self) -> bool: return self.settings.get_safe("os") == 'Linux' @property def _is_debug_build(self) -> bool: return self.settings.get_safe("build_type") == "Debug" def configure(self): self.options["openjpeg"].shared = True self.options["libpng"].shared = True self.options["zlib"].shared = True self.options["freetype"].shared = True self.options["openssl"].shared = True self.options["spdlog"].shared = True self.options["cpr"].shared = True self.options["glew"].shared = True self.options["zstd"].shared = True self.options["zlib"].shared = True self.options["libcurl"].shared = True self.options["glew"].shared = True self.options["icu"].shared = True self.options["ftgl"].shared = True self.options["libtiff"].shared = True if not self._is_windows: self.options["libtar"].shared = True self.options["dcmtk"].shared = True self.options["dcmtk"].charset_conversion = "icu" self.options["dcmtk"].with_libxml2 = False self.options["dcmtk"].wide_io = True self.options["dcmtk"].external_dictionary = False self.options["dcmtk"].builtin_dictionary = True self.options["dcmtk"].with_openssl = False self.options["openssl"].shared = True self.options["openssl"].no_tests=True self.options["ffmpeg"].shared = True self.options["ffmpeg"].with_zlib = True self.options["ffmpeg"].with_libiconv = False self.options["ffmpeg"].postproc = False self.options["ffmpeg"].with_ssl = False self.options["harfbuzz"].with_glib = False # disable glib to prevent gpl dependencies # self.options["harfbuzz"].shared = False # self.options["harfbuzz"].with_icu = True self.options["icu"].shared = True #self.options["tk"].shared = True self.options["tcl"].shared = True self.options["opencascade"].shared = True self.options["opencascade"].with_tk = False self.options["opencascade"].with_opengl = False if not self._is_windows: self.options["icu"].data_packaging = "library" self.options["libpng"].shared = True self.options["libjpeg"].shared = True self.options["bzip2"].shared = True self.options["pugixml"].wchar_mode = True self.options["libxml2"].iconv = False self.options["libxml2"].icu = True self.options["libxml2"].python = True self.options["xmlsec"].with_xslt = True self.options["qt"].shared = True self.options["qt"].with_dbus = self._is_linux self.options["qt"].qttools = True self.options["qt"].qtwebchannel = True self.options["qt"].qtwebengine = True self.options["qt"].qtwebsockets = True self.options["qt"].qt5compat= True self.options["qt"].qtsvg= True self.options["qt"].qtimageformats= True self.options["qt"].qtscxml= True self.options["qt"].qtmultimedia= False self.options["qt"].qtactiveqt= False self.options["qt"].qtdatavis3d= False self.options["qt"].qtdeclarative= False self.options["qt"].qtlanguageserver= False self.options["qt"].qtshadertools= True # needed for the web engine and for certain aspects of font rendering self.options["qt"].qtcoap= False self.options["qt"].qtcharts= False self.options["qt"].qtconnectivity= False self.options["qt"].qtvirtualkeyboard= False self.options["qt"].qtwayland= self._is_linux self.options["qt"].qtserialbus= False self.options["qt"].qtsensors= False self.options["qt"].with_sqlite3 = False self.options["qt"].with_mysql = False self.options["qt"].with_pq = False self.options["qt"].with_odbc = False self.options["qt"].with_libjpeg = "libjpeg" self.options["qt"].with_libpng = True self.options["qt"].with_zstd = True self.options["qt"].with_md4c= True self.options["qt"].with_freetype = True self.options["qt"].with_glib = False if not self._is_windows: self.options["qt"].with_icu = True self.options["qt"].gui = True self.options["qt"].widgets = True self.options["opencv"].shared = True if self.settings.os == "Linux": self.options["opencv"].with_gtk = False self.options["opencv"].parallel = "openmp" self.options["opencv"].contrib = True self.options["opencv"].with_ffmpeg = False self.options["opencv"].with_quirc = False self.options["opencv"].build_with_python_version = self._current_python_version self.options["boost"].shared = True self.options["boost"].zstd = True self.options["boost"].system_use_utf8 = True self.options["pyqt-sip"].build_with_python_version = self._current_python_version self.options["pyqt"].build_with_python_version = self._current_python_version def imports(self): self.copy("*", dst="bin", src="bin", folder=False) self.copy("*", dst="res", src="res", folder=False) self.copy("*", dst="lib/site-packages", src="lib/site-packages", folder=False) # for python code def package(self): self.copy("*.dll", folder=False) self.copy("*.pyd", folder=False) self.copy("*.so*", folder=False) ```

Logs

I have a number of issues:

First, I had to add m4 as a build requirement for qtwebengine on linux

Then, I get errors regarding the ninja executable. Here's the full log: https://pastebin.com/UsRGfNQy In the logs, it comes out as this:

Configuring submodule 'qtwebengine'
-- Checking 'ulimit -n'
 -- Open files limit 1048576
CMake Error at qtwebengine/configure.cmake:243 (file):
  file RELATIVE_PATH must be passed a full path to the file:
Call Stack (most recent call first):
  qtwebengine/configure.cmake:252 (qtwebengine_internal_is_file_inside_root_build_dir)
  qtwebengine/src/CMakeLists.txt:13 (include)

The cause of the error is that ${Ninja_EXECUTABLE} is blank. If I manually edit $CONAN_HOME/data/qt/6.4.1/_/_/source/qt6/qtwebengine/configure.cmake such that set(Ninja_INSIDE_WEBENGINE_ROOT_BUILD_DIR "OFF"), I run in to another error

Addtionally, in those logs, it's not able to find xshmfence, so qtwebengine will not build. I get this warning that it will not be built:

WARNING: QtWebEngine won't be built. Could not find all necessary libraries for qpa-xcb support. X11:YES LIBDRM:YES XCOMPOSITE:YES XCURSOR:YES XRANDR:YES XI:YES XPROTO:YES XSHMFENCE:NO XTST:YES

I don't know why it's doing this,

Then, after fixing the ninja issue, when I rerun it again, it complains about wayland and libdrm targets not being found:

additional output ``` -- Configuring done CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "KmsSupportPrivate" links to: Libdrm::Libdrm but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtModuleHelpers.cmake:558 (qt_internal_extend_target) qtbase/src/platformsupport/kmsconvenience/CMakeLists.txt:9 (qt_internal_add_module) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "EglFsKmsSupportPrivate" links to: Libdrm::Libdrm but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtModuleHelpers.cmake:558 (qt_internal_extend_target) qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/CMakeLists.txt:7 (qt_internal_add_module) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "QEglFSKmsEglDeviceIntegrationPlugin" links to: Libdrm::Libdrm but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "WaylandClient" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtModuleHelpers.cmake:558 (qt_internal_extend_target) qtwayland/src/client/CMakeLists.txt:7 (qt_internal_add_module) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "WaylandCompositor" links to: Wayland::Server but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtModuleHelpers.cmake:558 (qt_internal_extend_target) qtwayland/src/compositor/CMakeLists.txt:7 (qt_internal_add_module) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "WaylandEglClientHwIntegrationPrivate" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtModuleHelpers.cmake:558 (qt_internal_extend_target) qtwayland/src/hardwareintegration/client/wayland-egl/CMakeLists.txt:8 (qt_internal_add_module) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "WaylandEglCompositorHwIntegrationPrivate" links to: Wayland::Egl but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtModuleHelpers.cmake:558 (qt_internal_extend_target) qtwayland/src/hardwareintegration/compositor/wayland-egl/CMakeLists.txt:6 (qt_internal_add_module) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "DrmEglServerBufferPlugin" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/hardwareintegration/client/drm-egl-server/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "ShmServerBufferPlugin" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/hardwareintegration/client/shm-emulation-server/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "QWaylandEglStreamClientBufferIntegrationPlugin" links to: Wayland::Egl but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/hardwareintegration/compositor/wayland-eglstream-controller/CMakeLists.txt:8 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "DrmEglServerBufferIntegrationPlugin" links to: Wayland::Server but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/hardwareintegration/compositor/drm-egl-server/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "ShmServerBufferIntegrationPlugin" links to: Wayland::Server but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/hardwareintegration/compositor/shm-emulation-server/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "QWaylandBradientDecorationPlugin" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/decorations/bradient/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "QWaylandFullScreenShellV1IntegrationPlugin" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/shellintegration/fullscreen-shell-v1/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "QWaylandIviShellIntegrationPlugin" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/shellintegration/ivi-shell/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "WlShellIntegrationPrivate" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtModuleHelpers.cmake:558 (qt_internal_extend_target) qtwayland/src/plugins/shellintegration/wl-shell/CMakeLists.txt:7 (qt_internal_add_module) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "QWaylandXdgShellIntegrationPlugin" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/shellintegration/xdg-shell/CMakeLists.txt:7 (qt_internal_add_plugin) CMake Error at qtbase/cmake/QtTargetHelpers.cmake:80 (target_link_libraries): Target "QWaylandQtShellIntegrationPlugin" links to: Wayland::Client but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. Call Stack (most recent call first): qtbase/cmake/QtPluginHelpers.cmake:312 (qt_internal_extend_target) qtwayland/src/plugins/shellintegration/qt-shell/CMakeLists.txt:5 (qt_internal_add_plugin) ```

It seems like what it's looking for is not the same as what's exported by conan. Does that mean that for those places, we just need to replace, for example Wayland::Client to wayland::wayland-client ?

ericLemanissier commented 1 year ago

mmm, there are several things to unpack here: M4 is needed for building qt ? I did not know that. Do you have a log of the error so that I understand the conditions in which it is actually needed ? xshmfence error should be solved with https://github.com/conan-io/conan-center-index/pull/14938/files#diff-a931548f4298e037ba9697c338fced0790afde1edfc802cda2fe227d93fbdd80R116 For the issues with libdrm and ninja, I have no idea yet

EricAtORS commented 1 year ago

For m4, it's for the qt webengine:

Configuring submodule 'qtwebengine'
CMake Error at /work/linux/.conan/data/cmake/3.25.0/_/_/package/5c09c752508b674ca5cb1f2d327b5a2d582866c8/share/cmake-3.25/Modules/CMakeFindDependencyMacro.cmake:47 (find_package):
  Could not find a package configuration file provided by "m4" with any of
  the following names:

    m4Config.cmake
    m4-config.cmake

  Add the installation prefix of "m4" to CMAKE_PREFIX_PATH or set "m4_DIR" to
  a directory containing one of the above files.  If "m4" provides a separate
  development package or SDK, be sure it has been installed.
Call Stack (most recent call first):
  /work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/generators/bison-config.cmake:18 (find_dependency)
  qtwebengine/configure.cmake:14 (find_package)
  qtwebengine/src/CMakeLists.txt:13 (include)

I'll try modifying xshmfence

ericLemanissier commented 1 year ago

ok, so m4 is actually a requirement of bison (and bison is a requirement of qtwebengine). I don't understand why m4-config.cmake is not generated on your computer. On my machine it is (conan 1.56.0)

EDIT: you most likely hit this bug https://github.com/conan-io/conan/pull/12675 which was solved in 1.56.0

ericLemanissier commented 1 year ago

the libdrm and wayland issue should be fixed by https://github.com/conan-io/conan-center-index/pull/15098

EricAtORS commented 1 year ago

Awesome. I can confirm that both #15098 and #14938 does get me further. I have yet updated to conan 1.56.0 to verify #12675 and m4 is resolved now too.

EricAtORS commented 1 year ago

I've let it compile overnight and now I run in to more link errors. See below. Let me know if I should be posting the full log again:

[6390/6523] Linking CXX shared library qtbase/lib/libQt6WebEngineCore.so.6.4.1
FAILED: qtbase/lib/libQt6WebEngineCore.so.6.4.1
: && /opt/rh/gcc-toolset-10/root/usr/bin/c++ -fPIC -mavx   -m64 -DNDEBUG -O2  -m64   -Wl,-Bsymbolic-functions -Wl,--version-script,/work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release/qtwebengine/src/core/api/WebEngineCore.version -Wl,--no-undefined @/work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release/qtwebengine/src/core/Release/x86_64/QtWebEngineCore_objects.rsp -Wl,--gc-sections -Wl,--enable-new-dtags -shared -Wl,-soname,libQt6WebEngineCore.so.6 -o qtbase/lib/libQt6WebEngineCore.so.6.4.1 qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/WebEngineCore_autogen/mocs_compilation.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qtwebenginecoreglobal.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginecertificateerror.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineclientcertificateselection.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineclientcertificatestore.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginecontextmenurequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginecookiestore.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginedownloadrequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginefilesystemaccessrequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginefindtextresult.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginefullscreenrequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginehistory.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginehttprequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineloadinginfo.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginemessagepumpscheduler.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginenavigationrequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginenewwindowrequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginenotification.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginepage.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineprofile.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginequotarequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineregisterprotocolhandlerrequest.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginescript.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginescriptcollection.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebenginesettings.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineurlrequestinfo.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineurlrequestjob.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineurlscheme.cpp.o qtwebengine/src/core/api/CMakeFiles/WebEngineCore.dir/qwebengineurlschemehandler.cpp.o  -Wl,-rpath,/work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release/qtbase/lib:  qtbase/lib/libQt6WebChannel.so.6.4.1  -Wl,--start-group @/work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release/qtwebengine/src/core/Release/x86_64/QtWebEngineCore_archives.rsp -Wl,--end-group  -Wl,--no-fatal-warnings @/work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release/qtwebengine/src/core/Release/x86_64/QtWebEngineCore_libs.rsp -Wl,--no-fatal-warnings  qtbase/lib/libQt6Quick.so.6.4.1  qtbase/lib/libQt6OpenGL.so.6.4.1  qtbase/lib/libQt6Gui.so.6.4.1  /usr/lib64/libGLX.so  /usr/lib64/libOpenGL.so  /work/linux/.conan/data/xkbcommon/1.4.1/_/_/package/80f910d971f19e66ebfa4c8ab680c6dd3bbab404/lib/libxkbcommon.a  qtbase/lib/libQt6QmlModels.so.6.4.1  qtbase/lib/libQt6Qml.so.6.4.1  qtbase/lib/libQt6Network.so.6.4.1  qtbase/lib/libQt6Core.so.6.4.1  -lpthread  -Wl,-rpath-link,/work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release/qtbase/lib && :
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lsqlite3
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lopus
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lfontconfig
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lfreetype
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lpng
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lbz2
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lbrotlicommon-static
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lbrotlidec-static
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lbrotlienc-static
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lexpat
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -lxkbcommon
/opt/rh/gcc-toolset-10/root/usr/bin/ld: cannot find -ldbus-1
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
qt/6.4.1:
qt/6.4.1: ERROR: Package '0cc8f7ea8413ff6688dfa64359a79f28b24f64e9' build failed
qt/6.4.1: WARN: Build folder /work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release
ERROR: qt/6.4.1: Error in build() method, line 769
        cmake.build()
        ConanException: Error 1 while executing cmake --build "/work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release" '--' '-j48'

I'm not sure if I should open a new issue, or just keep going on this one, but I was also having issues with binary compatibility with RHEL 8 and gcc 10 with what was pre-built on conan, so I had disabled the webengine to make sure everything else was ok, but then I got this error during the packaging phase of qt:

ERROR: qt/6.4.1: Error in package_info() method, line 1043
        _create_module("Gui", gui_reqs)
while calling '_create_module', line 973
        self.cpp_info.components[componentname].requires = _get_corrected_reqs(requires)
while calling '_get_corrected_reqs', line 953
        assert corrected_req in self.cpp_info.components, f"{corrected_req} required but not yet present in self.cpp_info.components"
        AssertionError: qtDBus required but not yet present in self.cpp_info.components

I suspect that if the link error with qwebengine is fixed, I might run in to this after.

ericLemanissier commented 1 year ago

I fixed this assertion error in my last commit in https://github.com/conan-io/conan-center-index/pull/15098/ regarding the link error, can you try to make all these libraries shared ?

EricAtORS commented 1 year ago

Thanks for the update. I'm trying it now.

For setting the libraries to shared, I will give it a try. Just a note, dbus does not have the shared option.

EricAtORS commented 1 year ago

I still have the same link errors, even after taking the last commit. I also tried it with 6.4.2 and I still have the same issue with the linking

ericLemanissier commented 1 year ago

@EricAtORS we may have fixed wayland with the last recipe. Could you please retry with -u command line argument ?

EricAtORS commented 1 year ago

@ericLemanissier I still have the same error as above with the shared libraries. I couldn't paste the output to pastebin or control-c so I uploaded to google drive. Here's the link: google drive link

EricAtORS commented 1 year ago

@ericLemanissier

I'm starting to understand a little bit more why it's looking for those libs but can't find them. In the command line for linking and generating the libQt6WebEngineCore.so.6.4.2, there's this: argument @/work/linux/.conan/data/qt/6.4.1/_/_/build/0cc8f7ea8413ff6688dfa64359a79f28b24f64e9/build/Release/qtwebengine/src/core/Release/x86_64/QtWebEngineCore_libs.rsp which has this as contents:

 -ldl -lpthread -lrt -lnssutil3 -lplds4 -lplc4 -lnspr4 -lsoftokn3 -lsqlite3 -lm -lnssdbm3 -lz -lnss3 -lsmime3 -lresolv -lopus -lX11 -lXcomposite -lXdamage -lXext -lXfixes -lXrender -lXrandr -lXtst -lfontconfig -lfreetype -lpng -lbz2 -lbrotlicommon -lbrotlidec -lbrotlienc -lexpat -luuid -lxkbcommon -lxcb -lXi -ldbus-1 -lxshmfence -lxkbfile

When I was looking in to it where the rsp file is being generated, it seems to be related to gn and the function here: https://github.com/qt/qtwebengine/blob/8e0c3ce2f7abcf999d4be9071f3ed2a692db0f71/cmake/Functions.cmake

and the input gn file here: https://github.com/qt/qtwebengine/blob/dcbcb44f0b5fb5c901594d9b0e6c4c5476709a10/src/core/configure/BUILD.root.gn.in

So what I think is happening is that since we are now telling qt that we are using system libraries, chromium thinks the missing libraries are system libraries and assumes that they will be found in the default paths.