Description
See the log section. I describe why it fails and what I've tried.
Package and Environment Details
- Package Name/Version: qt/6.4.1
- Operating System+version: Alma Linux 8
- Compiler+version: GCC 10
- Conan version: conan 1.55.0
- Python version: Python 3.10
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
# 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 ?
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
Logs
I have a number of issues:
First, I had to add
m4as a build requirement for qtwebengine on linuxThen, I get errors regarding the ninja executable.
Here's the full log: https://pastebin.com/UsRGfNQy
In the logs, it comes out as this:
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.cmakesuch that
set(Ninja_INSIDE_WEBENGINE_ROOT_BUILD_DIR "OFF"), I run in to another errorAddtionally, 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:
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
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::Clienttowayland::wayland-client?