Bug 397787 - Got unknown type ai
Summary: Got unknown type ai
Status: RESOLVED NOT A BUG
Alias: None
Product: frameworks-kglobalaccel
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: 5.49.0
Platform: Fedora RPMs Linux
: NOR normal
Target Milestone: ---
Assignee: kdelibs bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-08-23 11:38 UTC by Leslie Zhai
Modified: 2018-10-03 13:42 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Leslie Zhai 2018-08-23 11:38:48 UTC
Hi KDE developer,

I can reproduce QTBUG-2597 when building kglobalaccel 5.49 with Qt 5.6 for mips64el:

$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr \
> -DCMAKE_INSTALL_LIBDIR=lib64 \
> -DBUILD_TESTING=ON \
> -DBUILD_QCH=ON
– The C compiler identification is GNU 4.9.3
– The CXX compiler identification is GNU 4.9.3
– Check for working C compiler: /usr/lib64/ccache/cc
– Check for working C compiler: /usr/lib64/ccache/cc – works
– Detecting C compiler ABI info
– Detecting C compiler ABI info - done
– Check for working CXX compiler: /usr/lib64/ccache/c++
– Check for working CXX compiler: /usr/lib64/ccache/c++ – works
– Detecting CXX compiler ABI info
– Detecting CXX compiler ABI info - done
–
– Looking for _GLIBC_
– Looking for _GLIBC_ - found
– Performing Test _OFFT_IS_64BIT
– Performing Test _OFFT_IS_64BIT - Success
– Could not set up the appstream test. appstreamcli is missing.
– Found PkgConfig: /usr/bin/pkg-config (found version "0.28") 
– Found XCB_XCB: /usr/lib64/libxcb.so (found version "1.11") 
– Found XCB_KEYSYMS: /usr/lib64/libxcb-keysyms.so (found version "0.3.9") 
– Found XCB_XTEST: /usr/lib64/libxcb-xtest.so (found version "1.11") 
– Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-keysyms.so;/usr/lib64/libxcb-xtest.so (found version "1.11") found components: XCB KEYSYMS XTEST 
– Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
– Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found
– Looking for gethostbyname
– Looking for gethostbyname - found
– Looking for connect
– Looking for connect - found
– Looking for remove
– Looking for remove - found
– Looking for shmat
– Looking for shmat - found
– Looking for IceConnectionNumber in ICE
– Looking for IceConnectionNumber in ICE - found
– Found X11: /usr/lib64/libX11.so
– Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
– Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
– Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
– Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
– Performing Test COMPILER_HAS_DEPRECATED_ATTR
– Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
– Found Doxygen: /usr/bin/doxygen (found suitable version "1.8.8", minimum required is "1.8.8") 
– Found QHelpGenerator executable: /usr/lib64/qt5/bin/qhelpgenerator-qt5
– No such target Qt5Widgets_QCH defined when calling ecm_add_qch(), ignored.
– No such target Qt5DBus_QCH defined when calling ecm_add_qch(), ignored.
– generating /home/loongson/project/kde/kglobalaccel/build/src/runtime/org.kde.kglobalaccel.service from /usr/lib64/cmake/KF5DBusAddons/KF5dbus.service.in
– 
– The following features have been enabled:
QCH , API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)
– The following OPTIONAL packages have been found:
PkgConfig
XCB , X protocol C-language Binding , <http://xcb.freedesktop.org>
X11
– The following REQUIRED packages have been found:
ECM (required version >= 5.49.0) , Extra CMake Modules. , <https://projects.kde.org/projects/kdesupport/extra-cmake-modules>
Qt5DBus
Qt5Gui (required version >= 5.6.0)
Qt5Widgets
KF5Config (required version >= 5.49.0)
KF5CoreAddons (required version >= 5.49.0)
KF5Crash (required version >= 5.49.0)
KF5DBusAddons (required version >= 5.49.0)
KF5WindowSystem (required version >= 5.49.0)
Qt5X11Extras
Doxygen (required version >= 1.8.8)
Needed for API dox QCH file generation
QHelpGenerator , Part of Qt5 tools
Needed for API dox QCH file generation
Qt5Test
Qt5 (required version >= 5.6.0)
– Configuring done
– Generating done
– Build files have been written to: /home/loongson/project/kde/kglobalaccel/build
[loongson@localhost build]$ make
Scanning dependencies of target KF5GlobalAccel_automoc
[ 2%] Automatic moc for target KF5GlobalAccel
Generating moc_kglobalaccel.cpp
Generating moc_kglobalshortcutinfo.cpp
[ 2%] Built target KF5GlobalAccel_automoc
[ 5%] Generating kglobalaccel_component_interface.cpp, kglobalaccel_component_interface.h
[ 8%] Generating kglobalaccel_interface.cpp, kglobalaccel_interface.h
Got unknown type `ai'
You should add <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="<type>"/> to the XML description
src/CMakeFiles/KF5GlobalAccel.dir/build.make:58: recipe for target 'src/kglobalaccel_interface.cpp' failed
make[2]: *** [src/kglobalaccel_interface.cpp] Error 1
CMakeFiles/Makefile2:297: recipe for target 'src/CMakeFiles/KF5GlobalAccel.dir/all' failed
make[1]: *** [src/CMakeFiles/KF5GlobalAccel.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

Workaround is:

diff --git a/src/org.kde.KGlobalAccel.xml b/src/org.kde.KGlobalAccel.xml
index 818360b..08cf621 100644
--- a/src/org.kde.KGlobalAccel.xml
+++ b/src/org.kde.KGlobalAccel.xml
@@ -6,6 +6,7 @@
       <arg name="actionId" type="as" direction="out"/>
       <arg name="newKeys" type="ai" direction="out"/>
       <annotation name="org.qtproject.QtDBus.QtTypeName.Out1" value="QList&lt;int&gt;"/>
+      <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QList&lt;int&gt;"/>
     </signal>
     <method name="allComponents">
       <arg type="ao" direction="out"/>

But I am also investigating the root cause, please give me some hint, thanks a lot!

Regards,
Leslie Zhai
zhaixiang@loongson.cn
Comment 1 Friedrich W. H. Kossebau 2018-10-03 13:42:26 UTC
For KGlobalAccel 5.49 the official min required Qt version is  5.8.0.

See https://cgit.kde.org/kglobalaccel.git/tree/CMakeLists.txt?h=v5.49.0#n35
Seems you patched that into 5.6.0 for your build?

The content of org.kde.KGlobalAccel.xml relies on that min version 5.8.0 of Qt.

Please see the related commit message (
https://cgit.kde.org/kglobalaccel.git/commit/?id=8504ba948696a7cb571d4b47905b5dcdabf4e8f0 )  for background information why and when it's In* or Out*.

Adding the In* variant back as alternative to the code to help your custom patched variant would result in a warning during the normal unpatched build, so I would prefer us not to do that.
So you will need to add that diff to your patch set instead to have KF build with Qt 5.6.0 (or see if you could use Qt 5.6.3 where this was claimed to be fixed as well). Hope that works for you?

So closing this report as NOT A BUG, as the unpatched code of kglobalaccel should be fine and correct.