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/5.15.8: webengine doesn't get built #16369

Open ILoveGoulash opened 1 year ago

ILoveGoulash commented 1 year ago

Description

Hello, I can build and install qt nicely, but some components (webengine and pdf) aren't built because of some misdetection of Apple clang from the Qt build system. I guess I should say I successfully installed all of Qt 5.15.8 via MacPorts previously (maybe some interferences? It's in /opt/local).

Package and Environment Details

Conan profile

[settings]
arch=armv8
build_type=Release
compiler=apple-clang
compiler.libcxx=libc++
compiler.version=14
compiler.cppstd=17
os=Macos
[options]
[conf]
[build_requires]
[env]
MACOSX_DEPLOYMENT_TARGET=11.0

Steps to reproduce

conan install qt/5.15.8@ -pr:h macos/apple-clang -pr:b macos/apple-clang --build missing -o qt:gui=True -o qt:qtdeclarative=True -o qt:qtlocation=True -o qt:qtwebchannel=True -o qt:qtwebengine=True -o qt:shared=True

(this is obviously the same profile as shown above)

Logs

Click to expand log Interesting part of build_folder/config.summary: ``` Note: The following modules are not being compiled in this configuration: webenginecore webengine webenginewidgets pdf pdfwidgets WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation. Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation. On Linux systems, you may be able to install libclang by installing the libclang-dev or libclang-devel package, depending on your distribution. On macOS, you can use Homebrew's llvm package. On Windows, you must set LLVM_INSTALL_DIR to the installation path. WARNING: QtWebEngine requires at least version 10.0.0, but using Xcode version . WARNING: QtPdf requires at least version 10.0.0, but using Xcode version . WARNING: QtWebEngine will not be built. WARNING: QtPdf will not be built. ``` and config.log ``` executing config test webengine-platform-support Platform not supported. test config.qtwebengine_buildtools.tests.webengine-platform-support gave result requires at least version 10.0.0, but using Xcode version . ``` Full config.log: [config.log.gz](https://github.com/conan-io/conan-center-index/files/10883231/config.log.gz)
ericLemanissier commented 1 year ago

is llvm-config available in PATH environment ?

ILoveGoulash commented 1 year ago

Sorry for the delay. I don't have one (not provided by Xcode CLT).

ericLemanissier commented 1 year ago

Ok, please send the full console log. It seems there is an error while identifying xcode version. it is extracted in https://github.com/qt/qtbase/blob/v5.15.8-lts-lgpl/mkspecs/features/mac/default_pre.prf#L46-L48 What does /usr/bin/xcrun xcodebuild -version print ? What does /usr/bin/xcrun -find xcodebuild print ?

ILoveGoulash commented 1 year ago

What do you mean by "full console log"? Do you want me to redirect the output of conan install to a file?

$ /usr/bin/xcrun xcodebuild -version
xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH
$ /usr/bin/xcrun -find xcodebuild
xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH

Probably part of XCode but not the Command Line Tools.

ILoveGoulash commented 1 year ago

Apparently, XCode is a hard requirement, per https://bugreports.qt.io/browse/QTBUG-41908. Guess conan should detect its absence then.

ILoveGoulash commented 1 year ago

Or no, Macports does manage to make do without... and https://doc.qt.io/qt-5/macos-building.html uses CLT in it.

ericLemanissier commented 1 year ago

Well, maybe macports patch .prf files like what is described in https://gist.github.com/nonwill/0ab9ab5c6a2b0027c3f968d6f1151da2 If qt's error message is not clear, please report the problem to https://bugreports.qt.io/

ILoveGoulash commented 1 year ago

Probably what MP does. The problem isn't so much that error message, but that conan should enforce the need for XCode is there is indeed a hard dependency.

ericLemanissier commented 1 year ago

I respectfully disagree. If the same error happens when building qt without conan, then it's on qt to enforce the requirement. Only qt knows in which set of conditions is xcodebuild actually needed. As a recipe maintainer we cannot track such requirements across versions etc. That said, if you report the issue upstream, and if a patch solution is approved by them, then we can consider integrating such patch in recipe.

ILoveGoulash commented 1 year ago

Hmmmm, I guess I understand, but coming from the world of Linux package managers, XCode just seems like a build dependency.

ericLemanissier commented 1 year ago

one important difference in this case is that xcode cannot be provided by conan in any way. the benefit-risk balance is not good when the best conan can do is make a clearer error message, for an error which would have happened any way. By the way, are you sure macport can build qtwebengine without xcode ? https://trac.macports.org/ticket/59294 and https://github.com/macports/macports-ports/blob/master/aqua/qt5/Portfile#L1980 tend to make me think it has the same limitation.

ILoveGoulash commented 1 year ago

From what I gather (man portfile and more explicitely macports-base/Changelog), you're right, but I DO get an output file:

$ file /opt/local/libexec/qt5/lib/QtWebEngine.framework/Versions/5/QtWebEngine
/opt/local/libexec/qt5/lib/QtWebEngine.framework/Versions/5/QtWebEngine: Mach-O 64-bit dynamically linked shared library arm64

and I'm a 100% sure I don't have XCode (don't even have an Apple ID, after all).

Anyway, the enigma is "solved" for my part, thanks a lot for your help.

jcar87 commented 1 month ago

Hi @ILoveGoulash - thank you for reporting this and for following up with the troubleshoot.

I was able to reproduce this, and indeed the issue is this:

WARNING: QtWebEngine requires at least version 10.0.0, but using Xcode version .

WARNING: QtPdf requires at least version 10.0.0, but using Xcode version .

for some reason QtWebEngine requires an Xcode installation, rather than just the command line tools which you likely have installed. - it checks the QMAKE_XCODE_VERSION variable, but I'm unable to find documentation as to how that variable is set.

This sounds like something to report upstream if the command line tools are actually sufficient for a full build.