Error compiling kdebase 4.3

Duncan 1i5t5.duncan at cox.net
Tue Aug 11 07:53:02 BST 2009


Juan Pablo Romero Méndez posted on Mon, 10 Aug 2009 22:06:36 -0500 as
excerpted:

> I'm compiling kdebase from kde 4.3. This error appears: ...
> /home/jpablo/kde43/sources/trunk/KDE/kdebase/apps/plasma/applets/
> folderview/folderview.cpp:1141:
> error: invalid use of incomplete type ‘struct KWindowListMenu’
...

> It seems some library is missing, but which?
> 
> My system:
> opensuse 11.1
> gcc 4.3.2
> qt 4.5.1

Hi,

I saw the post a couple days ago, and there's a guy here with a sig 
"Linux (Almost) from Scratch", that I thought could answer better than 
I.  He doesn't seem to have done so, and now you're asking again, so I'll 
try to answer this time.

FWIW, I run Gentoo, which is generally entirely from source, so I compile 
everything.  However, it's the ebuild scripts that contain all the 
dependency information, etc, so as long as they've gotten the ebuilds 
right, we don't normally have to worry about dependencies and the like. 
Also, Gentoo splits the big monolithic KDE packages (kdelibs as one big 
package, kdebase as another, etc) up into little ones, each of which 
extracts only the bits of the tarballed sources it needs, with 
dependencies setup on the other bits of the split package as necessary.  
Thus, it's not like we compile one huge kdebase package here, but rather, 
a bunch of little pieces of it. That's why I thought the from-scratch guy 
was more likely to be of direct help than I could be.  However, maybe 
I'll be able be of some help.  We'll see.

First, let's see what (Gentoo split) package that belongs to (-f is full 
regex filename search, so anything with "folderview" in the filename):

$ equery belongs -f folderview
 * Searching for folderview ...
kde-base/plasma-apps-4.3.0 (/usr/share/kde4/services/plasma-applet-
folderview.desktop)
kde-base/plasma-apps-4.3.0 (/usr/lib64/kde4/plasma_applet_folderview.so)

So, it looks like the plasma-apps package.  Makes sense.  That also tells 
me that it's a library and where it's located (on Gentoo/~amd64 at least) 
after installation.

OK, now let's try readelf.  Note that I use (among other LDFLAGS)
--as-needed, so this shouldn't include the "noise" in the form of unused 
but marked as needed libraries that a lot of readelf listings would 
include.  Readelf output fed to grep and cut to strip away the 
unnecessary info:

$ readelf --dynamic /usr/lib64/kde4/plasma_applet_folderview.so | \
grep NEEDED | cut --delimiter=[ --fields=2 | cut --delimiter=] --fields=1

libplasma.so.3
libkonq.so.5
libkworkspace.so.4
libkio.so.5
libkfile.so.4
libsolid.so.4
libX11.so.6
libkdeui.so.5
libkdecore.so.5
libQtDBus.so.4
libQtCore.so.4
libQtGui.so.4
libstdc++.so.6
libm.so.6
libc.so.6

OK, so those are the directly required dependencies as it was compiled 
here.  Note that some of those may be in earlier bits of kdebase, or in 
kdelibs, if you're compiling the monolithic packages, not split packages 
as Gentoo arranges.

OK, now feed that list into equery belongs (piped to cut and then to sort 
--unique):

$ equery b $(readelf --dynamic \
/usr/lib64/kde4/plasma_applet_folderview.so | \
grep NEEDED | cut --delimiter=[ --fields=2 | \
cut --delimiter=] --fields=1) | cut --fields=1 | sort --unique

kde-base/kdelibs-4.3.0
kde-base/libkonq-4.3.0
kde-base/libkworkspace-4.3.0
sys-devel/gcc-4.4.1
sys-libs/glibc-2.10.1
x11-libs/libX11-1.2.2
x11-libs/qt-core-4.5.2
x11-libs/qt-dbus-4.5.2
x11-libs/qt-gui-4.5.2-r2

So it's those (Gentoo) packages that contain the libraries listed above.  
Note that on Gentoo, qt4 is split as well.  All those qt packages are 
therefore simply parts of qt4, with the dependency filled if you have it.

Of course, on a binary distribution, not only will you need the binary 
packages, but for compiling, probably the -devel packages as well.

For the kde packages (besides kdelibs):
$ grep KMNAME /p/kde-base/libkonq/libkonq-4.3.0.ebuild
KMNAME="kdebase-apps"
$ grep KMNAME /p/kde-base/libkworkspace/libkworkspace-4.3.0.ebuild
KMNAME="kdebase-workspace"

So the kde monolithic dependencies would be in the kdelibs, kdebase-apps, 
and kdebase-workspace tarballs (the kdebase-* tarballs probably being 
part of the same kdebase compile).  Of course, it also needs glibc, as a c
++ app, it needs the libstdc++ from whatever gcc you're running, and as 
an X app, it needs libX11.

Hopefully you can pull what you need out of something in there.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

___________________________________________________
This message is from the kde mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.


More information about the kde mailing list