[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: Re: kcm_keyboard 4.5.4 fails to build
From: Erik <esigra () gmail ! com>
Date: 2010-12-25 7:01:46
Message-ID: 4D1596DA.5020508 () gmail ! com
[Download RAW message or body]
2010-12-25 02:17, Andriy Rysin skrev:
> 2010/12/24 Andreas Pakulat<apaku@gmx.de>
>
>> On 24.12.10 16:06:54, Erik wrote:
>>> kcm_keyboard 4.5.4 fails to build
>>>
>>> Steps to reproduce:
>>> 1. tar jxvf /usr/portage/distfiles/kdebase-workspace-4.5.4.tar.bz2
>>> 2. cd kdebase-workspace-4.5.4
>>> 3. mkdir build
>>> 4. cd build
>>> 5. cmake -DKDE4_ENABLE_FINAL=ON ..
>>> 6. make kcm_keyboard
>>>
>>> Actual result:
>>> In file included from /usr/include/qt4/QtCore/QDir:1,
>>> from
>>>
>> /home/work/programmering/kdebase-workspace-4.5.4/kcontrol/keyboard/xkb_helper.cpp:22,
>>> from
>>>
>> /home/work/programmering/kdebase-workspace-4.5.4/build/kcontrol/keyboard/kcm_keyboard_final_cpp.cpp:8:
>>> /usr/include/qt4/QtCore/qdir.h:107: fel: expected identifier before
>>> numeric constant
>>> /usr/include/qt4/QtCore/qdir.h:107: fel: expected "}" before numeric
>>> constant
>>> /usr/include/qt4/QtCore/qdir.h:107: fel: expected unqualified-id before
>>> numeric constant
>> Note that for most of the errors you posted you won't get much help here
>> I think. The reason is that this list is mostly concerned with
>> development-questions when using KDE code. If you find such build
>> problems you're probably better of finding the maintainer of the
>> relevant bit of code (svn blame or a README file) and talk to those
>> people directly.
>>
> I hope by "maintainer of relevant bit of code" you mean "maintainer of
> qdir.h", as I am the maintainer of kcm_keyboard and I have not idea why it
> breaks in FINAL mode. :) I guess some includes are messed up/missing with
> FINAL=ON but I am afraid it'll take somebody who really knows what FINAL
> mode is to help with this.
Final mode is no magic at all. It just compiles a file that includes all
cc/cpp files. I looked at qdir.h, and the problematic piece is this:
enum SortFlag { Name = 0x00,
Time = 0x01,
Size = 0x02,
Unsorted = 0x03,
SortByMask = 0x03,
DirsFirst = 0x04,
Reversed = 0x08,
IgnoreCase = 0x10,
DirsLast = 0x20,
LocaleAware = 0x40,
Type = 0x80,
NoSort = -1
#ifdef QT3_SUPPORT
,DefaultSort = NoSort
#endif
};
Then I used
cmake -DKDE4_ENABLE_FINAL=ON -DCMAKE_VERBOSE_MAKEFILE=ON ..
to see the build command, and modified it to only preprocess the source.
Then I searched for "enum SortFlag" in the preprocessor output. There I
found this:
enum SortFlag { Name = 0x00,
Time = 0x01,
Size = 0x02,
0 = 0x03,
SortByMask = 0x03,
DirsFirst = 0x04,
Reversed = 0x08,
IgnoreCase = 0x10,
DirsLast = 0x20,
LocaleAware = 0x40,
Type = 0x80,
NoSort = -1
};
So for some reason Unsorted was substituted with 0 during preprocessing.
I see traces of other people finding the same issue and trying to work
around it:
$ grep "#undef Unsorted" -r kdebase-workspace-4.5.4
kdebase-workspace-4.5.4/kcontrol/krdb/krdb.cpp:#undef Unsorted
kdebase-workspace-4.5.4/kcontrol/kdm/background/bgsettings.cpp:#undef
Unsorted
kdebase-workspace-4.5.4/kcontrol/fonts/fonts.cpp:#undef Unsorted
I notice that the occurence in
kdebase-workspace-4.5.4/kcontrol/kdm/background/bgsettings.cpp has the
comment "Clean up after X.h/Xlib.h". I look what that means:
$ grep Unsorted /usr/include/X11/ -r
/usr/include/X11/X.h:#define Unsorted 0
So obviously X.org pollutes the namespace. I was able to fix the build
with the attached patch.
["kcm_keyboard-cleanup_after_X11_includes-1.diff" (text/plain)]
diff -ru kdebase-workspace-4.5.4/kcontrol/keyboard/x11_helper.cpp.orig \
kdebase-workspace-4.5.4/kcontrol/keyboard/x11_helper.cpp
--- kdebase-workspace-4.5.4/kcontrol/keyboard/x11_helper.cpp 2010-09-30 \
23:20:14.000000000 +0200
+++ /home/work/programmering/kdebase-workspace-4.5.4/kcontrol/keyboard/x11_helper.cpp 2010-12-25 \
07:42:24.628000182 +0100 @@ -27,6 +27,9 @@
#include <X11/Xatom.h>
#include <X11/XKBlib.h>
#include <X11/extensions/XKBrules.h>
+// clean up after X.h/Xlib.h
+#undef Bool
+#undef Unsorted
// more information about the limit \
https://bugs.freedesktop.org/show_bug.cgi?id=19501
diff -ru kdebase-workspace-4.5.4/kcontrol/keyboard/xinput_helper.cpp \
kdebase-workspace-4.5.4/kcontrol/keyboard/xinput_helper.cpp
--- kdebase-workspace-4.5.4/kcontrol/keyboard/xinput_helper.cpp 2010-09-30 \
23:20:14.000000000 +0200
+++ /home/work/programmering/kdebase-workspace-4.5.4/kcontrol/keyboard/xinput_helper.cpp 2010-12-25 \
07:51:18.672999713 +0100 @@ -31,6 +31,10 @@
#include <X11/extensions/XInput.h>
#endif
+// clean up after X.h/Xlib.h
+#undef Bool
+#undef Unsorted
+
#include "x11_helper.h"
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic