Bug 182955 - kdebase workspace Linking Error X11Helper undefined reference XiGetDevicePresenceNotifyEvent libXi
Summary: kdebase workspace Linking Error X11Helper undefined reference XiGetDevicePres...
Status: RESOLVED FIXED
Alias: None
Product: kxkb
Classification: Miscellaneous
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Andriy Rysin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-02-03 07:17 UTC by Carlos Quiros
Modified: 2009-04-03 06:23 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Carlos Quiros 2009-02-03 07:17:02 UTC
Version:           kdebase-workspace-4.2.0 (using KDE 4.2.0)
Compiler:          cmake version 2.4-patch 6 
OS:                Linux
Installed from:    Compiled From Sources

Linux Slackware 12
X Window System Version 1.3.0
Release Date: 19 April 2007
X Protocol Version 11, Revision 0, Release 1.3
LibXi version: libXi.so.6.0.0
libxklavier version: libxklavier.so.11.0.0

There is a bug while building KDE 4.2 from stable sources.

Error:
Linking CXX shared module ../../lib/kcm_keyboard_layout.so
CMakeFiles/kcm_keyboard_layout.dir/x11helper.o: In function `X11Helper::registerForNewDeviceEvent(_XDisplay*)':
/home/cquiros/download/kde420/kdebase-workspace-4.2.0/kcontrol/kxkb/x11helper.cpp:413: undefined reference to `_XiGetDevicePresenceNotifyEvent'

Configure messages:
-- Found Qt-Version 4.4.3 (using /usr/local/Trolltech/Qt-4.4.3/bin/qmake)
-- Found X11: /usr/lib/libX11.so
-- Phonon Version: 4.3.50
-- Found KDE 4.2 include dir: /usr/local/kde420/include
-- Found KDE 4.2 library dir: /usr/local/kde420/lib
-- Found the KDE4 kconfig_compiler preprocessor: /usr/local/kde420/bin/kconfig_compiler
-- Found automoc4: /usr/local/kde420/bin/automoc4
-- Strigi API needs 'signed char'
-- checking for module 'qimageblitz'
--   package 'qimageblitz' not found
-- WARNING: you are using the obsolete 'PKGCONFIG' macro use FindPkgConfig
-- Found Python executable: /usr/bin/python2.5
-- Found Python version: 2.5.1
-- Found Python library: /usr/lib/libpython2.5.so
-- Found SIP version: 4.7.7
-- Found PyQt4 version: 4.4.3
-- Found PyKDE4 version 4.1.3 /usr/share/sip/PyKDE4
-- Found Soprano: /usr/local/kde420/lib/libsoprano.so
-- Found Soprano includes: /usr/local/kde420/include
-- Found Soprano Index: /usr/local/kde420/lib/libsopranoindex.so
-- Found Soprano Client: /usr/local/kde420/lib/libsopranoclient.so
-- Found Soprano Plugin Dir: /usr/local/kde420/share/soprano/plugins
-- Found Soprano Plugins: nquadparser nquadserializer raptorparser raptorserializer redlandbackend
-- WARNING: you are using the obsolete 'PKGCONFIG' macro use FindPkgConfig
-- Will build networkmanger-0.6
-- Found XMMS: the nowplaying dataengine will support XMMS 1.x
-- Found Soprano: /usr/local/kde420/lib/libsoprano.so
-- Found Soprano includes: /usr/local/kde420/include
-- Found Soprano Index: /usr/local/kde420/lib/libsopranoindex.so
-- Found Soprano Client: /usr/local/kde420/lib/libsopranoclient.so
-- Found Soprano Plugin Dir: /usr/local/kde420/share/soprano/plugins/soprano/plugins
-- Found Soprano Plugins: nquadparser nquadserializer raptorparser raptorserializer redlandbackend
-- Found Freetype: -lfreetype -lz
-- WARNING: you are using the obsolete 'PKGCONFIG' macro use FindPkgConfig
-- Found GObject libraries: /usr/lib/libgobject-2.0.so;/usr/lib/libgmodule-2.0.so;/usr/lib/libgthread-2.0.so;/usr/lib/libglib-2.0.so
-- Found GObject includes : /usr/include/glib-2.0/gobject
-- /home/cquiros/download/kde420/kdebase-workspace-4.2.0/kcontrol: skipped subdir $(KSMCARD_SUBDIR)
--
-----------------------------------------------------------------------------
-- The following external packages were located on your system.
-- This installation will have the extra features provided by these packages.
+ glib2
+ GoogleGadgets
+ QEdje
+ Python
+ Soprano
+ Nepomuk
+ libxss
+ libxext
+ Compositing support
+ Captury framework library
+ lm-sensors
+ BlueZ
+ NetworkManager
+ XMMS
+ Soprano
+ FreeType
+ libxklavier
+ xkbfile
+ libusb
+ libxft
+ ck-connector
Congratulations! All external packages have been found.

External sources:
In some OpenSolaris they indicate that XiGetDevicePresenceNotifyEvent is not an exported function of libXi.
Comment 1 Andriy Rysin 2009-02-22 04:54:57 UTC
Could you please paste the output from command:
grep "DevicePresence(" -A 5 /usr/include/X11/extensions/XInput.h
Comment 2 Carlos Quiros 2009-02-23 06:43:08 UTC
Hi,

This is the output:

#define DevicePresence(dpy, type, _class)                       \
    {                                                           \
        extern int _XiGetDevicePresenceNotifyEvent(Display *);  \
        type = _XiGetDevicePresenceNotifyEvent(dpy);            \
        _class =  (0x10000 | _devicePresence);                  \
    }
Comment 3 Andriy Rysin 2009-02-24 05:13:40 UTC
ok, so there should be _XiGetDevicePresenceNotifyEvent as it's defined in the header.

I guess the only thing I can suggest is to update xorg/xi libraries. There's also chance that the older gcc does not take the "extern C" override in cpp source - in this case you can *temporary* change extern to extern "C" {} in defint to check it out.
Comment 4 Carlos Quiros 2009-03-13 12:31:18 UTC
It compiles and works fine when updating the libXi libraries to 1.2.0 and inputproto to 1.5.0 (Dependency of libXi 1.2.0).

Might be good to modify the configure script to check for libXi >= 1.2.0.
Comment 5 Andriy Rysin 2009-04-03 06:23:58 UTC
Thanks, I've added support for _XiGetDevicePresenceNotifyEvent() function to kxkb cmake script. Change pushed in trunk.