therecipe / qt

Qt binding for Go (Golang) with support for Windows / macOS / Linux / FreeBSD / Android / iOS / Sailfish OS / Raspberry Pi / AsteroidOS / Ubuntu Touch / JavaScript / WebAssembly
GNU Lesser General Public License v3.0
10.33k stars 736 forks source link

Qt 5.14 API is not supported #1034

Open kraxarn opened 4 years ago

kraxarn commented 4 years ago

Qt 5.14 was released a couple of days ago, and even though it hasn't made its way to any major Linux distribution yet, I thought I would try it out. Unfortunately, when using export QT_API=5.14.0, the setup check fails with the following error:

> qtsetup check
ERRO[0000] invalid api version provided: '5.14.0'       
valid api versions are:
5.12.0
5.13.0

However, using export QT_API=5.13.0 and export QT_VERSION=5.14.0 seems to work fine, but I assume none of the new APIs from Qt 5.14 will be available.

therecipe commented 4 years ago

Hey

I haven't had time to fully test it yet, but https://github.com/therecipe/qt/commit/aa8a227277068956735ce5c02f461195a949ab7c should make Qt 5.14 work for now. The setup might fail at the test step though, because I haven't replaced the deprecated functions yet. Also some other things like android deployments might be broken as well.

kraxarn commented 4 years ago

I still get the same error message when using QT_API=5.14.0.

therecipe commented 4 years ago

Ah yes, sorry.

QT_API=5.14.0 isn't supported as well, but if you installed Qt 5.14 and then just export QT_VERSION=5.14.0 and unset QT_API. I will make QT_API=5.14.0 work, when I bump the default Qt version to 5.14

kraxarn commented 4 years ago

From my quick testing, using QT_API=5.13.0 together with QT_VERSION=5.14.0 seemed to work fine before as well, but maybe I just didn't test enough.

therecipe commented 4 years ago

Sorry, what I meant to say was, explicitly setting QT_API=5.14.0 isn't supported atm, but using the 5.14 api by just setting QT_VERSION=5.14.0 should work now. (QT_API needs to be unset for this to work)

QT_API is usually only meant to provide backward/forward compatible code, and if you don't set it explicitly then qtdeploy/qtsetup will use the api version that is found in your QT_DIR automatically.

kraxarn commented 4 years ago

I now got Qt 5.14 in my official repositories and decided to try this again. It seemed to work fine, but the webengine module fails to install. Some warnings are also generated. I'm unsure if they are related, as I didn't see them in 5.13, so I'm including them as well. Here are the error messages I receive:

INFO[0754] installing full qt/webengine                 
# github.com/therecipe/qt/internal/binding/runtime
moc.cpp: In function ‘int helper0dce95_helper0dce95_QmlRegisterType()’:
moc.cpp:72:39: warning: ‘int qmlRegisterType() [with T = helper0dce95]’ is deprecated: Use qmlRegisterAnonymousType instead [-Wdeprecated-declarations]
   72 |  return qmlRegisterType<helper0dce95>();
      |                                       ^
In file included from /usr/include/qt/QtQml/qqmlengine.h:47,
                 from /usr/include/qt/QtQml/QQmlEngine:1,
                 from moc.cpp:20:
/usr/include/qt/QtQml/qqml.h:138:74: note: declared here
  138 | QT_DEPRECATED_VERSION_X_5_14("Use qmlRegisterAnonymousType instead") int qmlRegisterType()
      |                                                                          ^~~~~~~~~~~~~~~
moc.cpp:72:39: warning: ‘int qmlRegisterType() [with T = helper0dce95]’ is deprecated: Use qmlRegisterAnonymousType instead [-Wdeprecated-declarations]
   72 |  return qmlRegisterType<helper0dce95>();
      |                                       ^
In file included from /usr/include/qt/QtQml/qqmlengine.h:47,
                 from /usr/include/qt/QtQml/QQmlEngine:1,
                 from moc.cpp:20:
/usr/include/qt/QtQml/qqml.h:138:74: note: declared here
  138 | QT_DEPRECATED_VERSION_X_5_14("Use qmlRegisterAnonymousType instead") int qmlRegisterType()
      |                                                                          ^~~~~~~~~~~~~~~
github.com/therecipe/qt/printsupport
github.com/therecipe/qt/webengine
# github.com/therecipe/qt/webengine
webengine.cpp: In member function ‘void MyQWebEnginePage::Signal_LifecycleStateChanged(QWebEnginePage::LifecycleState)’:
webengine.cpp:2350:127: error: cannot convert ‘QWebEnginePage::LifecycleState’ to ‘long long int’
 2350 |  void Signal_LifecycleStateChanged(QWebEnginePage::LifecycleState state) { callbackQWebEnginePage_LifecycleStateChanged(this, state); };
      |                                                                                                                               ^~~~~
      |                                                                                                                               |
      |                                                                                                                               QWebEnginePage::LifecycleState
In file included from webengine.cpp:7:
cgo-gcc-export-header-prolog:260:82: note:   initializing argument 2 of ‘void callbackQWebEnginePage_LifecycleStateChanged(void*, long long int)’
webengine.cpp: In member function ‘void MyQWebEnginePage::Signal_RecommendedStateChanged(QWebEnginePage::LifecycleState)’:
webengine.cpp:2360:131: error: cannot convert ‘QWebEnginePage::LifecycleState’ to ‘long long int’
 2360 |  void Signal_RecommendedStateChanged(QWebEnginePage::LifecycleState state) { callbackQWebEnginePage_RecommendedStateChanged(this, state); };
      |                                                                                                                                   ^~~~~
      |                                                                                                                                   |
      |                                                                                                                                   QWebEnginePage::LifecycleState
In file included from webengine.cpp:7:
cgo-gcc-export-header-prolog:280:84: note:   initializing argument 2 of ‘void callbackQWebEnginePage_RecommendedStateChanged(void*, long long int)’
webengine.cpp: In function ‘long long int QWebEnginePage_LifecycleState(void*)’:
webengine.cpp:2761:58: error: cannot convert ‘QWebEnginePage::LifecycleState’ to ‘long long int’ in return
 2761 |  return static_cast<QWebEnginePage*>(ptr)->lifecycleState();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
      |                                                          |
      |                                                          QWebEnginePage::LifecycleState
webengine.cpp: In function ‘long long int QWebEnginePage_RecommendedState(void*)’:
webengine.cpp:2937:60: error: cannot convert ‘QWebEnginePage::LifecycleState’ to ‘long long int’ in return
 2937 |  return static_cast<QWebEnginePage*>(ptr)->recommendedState();
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
      |                                                            |
      |                                                            QWebEnginePage::LifecycleState