Binary compatiblity for liboxygenstyle.so
Andras Mantia
amantia at kde.org
Sat Feb 25 18:28:07 GMT 2012
On Saturday, February 25, 2012 11:42:13 AM Hugo Pereira Da Costa wrote:
> > I tend to think proper soversion bumping would be a good solution.
>
> In both cases it does not fix (sorry for repeating myself) the true
> issue, which is that your plugin_path is not consistent with your
> LD_LIBRARY_PATH.
Both you and Thomas believe the problem is on my side, namely my configuration is wrong.
I believe it is not (I use this kind of config for years, no real problem except the oxygen issue).
Let's take a look at it (long mail ahead):
- system Qt and KDE is in /usr and /usr/lib64 (Qt 4.8.0 and KDE 4.8.0)
- self compiled Qt is in /data/development/sources/qt (Qt 4.8.0 branch)
- I have a symlink from /opt/qt4 to the above path
- self compiled KDE is in /opt/kde4 (KDE master)
- I run the attached script instead of startkde to bring up the KDE session from KDM
When the session is up and running, here are the important variables/settings:
qmake -query
QT_INSTALL_PREFIX:/data/development/sources/qt
QT_INSTALL_DATA:/data/development/sources/qt
QT_INSTALL_DOCS:/data/development/sources/qt/doc
QT_INSTALL_HEADERS:/data/development/sources/qt/include
QT_INSTALL_LIBS:/data/development/sources/qt/lib
QT_INSTALL_BINS:/data/development/sources/qt/bin
QT_INSTALL_PLUGINS:/data/development/sources/qt/plugins
QT_INSTALL_IMPORTS:/data/development/sources/qt/imports
QT_INSTALL_TRANSLATIONS:/data/development/sources/qt/translations
QT_INSTALL_CONFIGURATION:/etc/xdg
QT_INSTALL_EXAMPLES:/data/development/sources/qt/examples
QT_INSTALL_DEMOS:/data/development/sources/qt/demos
QMAKE_MKSPECS:/data/development/sources/qt/mkspecs
QMAKE_VERSION:2.01a
QT_VERSION:4.8.0
Looks fine.
--------------------------------------------------------------------------------
printenv | grep PATH
MANPATH=/usr/local/man:/usr/share/man:/opt/kde3/share/man
LD_LIBRARY_PATH=/opt/kde4/lib64:/opt/qt4/lib64://opt/qt4/lib:/usr/lib64:
XNLSPATH=/usr/share/X11/nls
PATH=/data/development/sources/qt/bin:/opt/kde4/bin:/opt/qt4/bin:/encrypted/home/andris/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/NX/bin:/usr/lib/qt3/bin
XCURSOR_PATH=/opt/kde4/share/icons::~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons
PKG_CONFIG_PATH=/opt/kde4/lib64/pkgconfig/:
WINDOWPATH=7
QT_PLUGIN_PATH=/opt/qt4/plugins:/opt/kde4/lib64/kde4/plugins::/encrypted/home/andris/.kde4/lib64/kde4/plugins/:/opt/kde4/lib64/kde4/plugins/
LD_LIBRARY_PATH first points to my own KDE, QT_PLUGIN_PATH also points to the right place.
--------------------------------------------------------------------------------
printenv |grep DIR
TMPDIR=/tmp
QTDIR=/opt/qt4
KDEDIR=/opt/kde4
XDG_CONFIG_DIRS=/etc/xdg
NXDIR=/usr/NX
JAVA_BINDIR=/usr/lib64/jvm/jre/bin
KDEDIRS=/opt/kde4
QT_SYSTEM_DIR=/usr/share/desktop-data
XDG_DATA_DIRS=/opt/kde4/share:/usr/local/share:/usr/share:/etc/opt/kde3/share:/opt/kde3/share:/opt/kde4/share
Even XDG_DATA_DIRS is fine.
--------------------------------------------------------------------------------
printenv | grep QT
QTDIR=/opt/qt4
QT_IM_MODULE=xim
QT_SYSTEM_DIR=/usr/share/desktop-data
QT_PLUGIN_PATH=/opt/qt4/plugins:/opt/kde4/lib64/kde4/plugins::/encrypted/home/andris/.kde4/lib64/kde4/plugins/:/opt/kde4/lib64/kde4/plugins/
QT_IM_SWITCHER=imsw-multi
--------------------------------------------------------------------------------
cat ~/.config/Trolltech.conf
[Qt%20Plugin%20Cache%204.8.debug]
... (unrelated plugins)
opt\kde4\lib64\kde4\plugins\styles\oxygen.so=40800, 0, x86_64 linux g++-4 full-config, 2012-02-24T08:23:12
....
usr\lib64\kde4\plugins\styles\oxygen.so=40800, 0, x86_64 linux g++-4 full-config, 2012-01-24T03:55:08
[Qt%20Factory%20Cache%204.8]
...
com.trolltech.Qt.QStyleFactoryInterface%3A\opt\kde4\lib64\kde4\plugins\styles\oxygen.so=2012-02-24T08:23:12, Oxygen
...
com.trolltech.Qt.QStyleFactoryInterface%3A\usr\lib64\kde4\plugins\styles\oxygen.so=2012-01-24T03:55:08, Oxygen
...
[qt]
Palette\active=#221f1e, #dfdcd9, #fdfdfd, #e2dfdd, #6a6663, #b3aba7, #1f1c1b, #ffffff, #221f1e, #ffffff, #d6d2d0, #3d3b39, #43ace8, #ffffff, #0057ae, #644a9b, #f8f7f6, #000000, #181513, #e7fdff
Palette\inactive=#221f1e, #dfdcd9, #fdfdfd, #e2dfdd, #6a6663, #b3aba7, #1f1c1b, #ffffff, #221f1e, #ffffff, #d6d2d0, #3d3b39, #94caef, #221f1e, #0057ae, #644a9b, #f8f7f6, #000000, #181513, #e7fdff
Palette\disabled=#908d8b, #d6d2ce, #f2f1f1, #d9d5d3, #65615f, #aba4a0, #a9a7a7, #ffffff, #969391, #f4f4f4, #cdc8c6, #3c3a38, #cdc8c6, #908d8b, #97bcdf, #c1b6d7, #eeece9, #000000, #181513, #e7fdff
KWinPalette\activeBackground=#6a9ad5
KWinPalette\activeBlend=#608cc2
KWinPalette\activeForeground=#ffffff
KWinPalette\frame=#d6d2d0
KWinPalette\activeTitleBtnBg=#d6d2d0
KWinPalette\inactiveBackground=#d6d2d0
KWinPalette\inactiveBlend=#c3bfbd
KWinPalette\inactiveForeground=#6b6968
KWinPalette\inactiveFrame=#d6d2d0
KWinPalette\inactiveTitleBtnBg=#d6d2d0
KDE\contrast=7
font="DejaVu Sans,10,-1,5,50,0,0,0,0,0"
GUIEffects=none
--------------------------------------------------------------------------------
There is no Trolltech.conf in /etc or /usr, but there is one in /.config.
It contains:
[Qt%20Plugin%20Cache%204.8.false]
usr\lib64\kde4\plugins\kauth\backend\kauth_backend_plugin.so=40800, 0, x86_64 linux g++-4 full-config, 2012-01-23T20:46:39
usr\lib64\kde4\plugins\kauth\helper\kauth_helper_plugin.so=40800, 0, x86_64 linux g++-4 full-config, 2012-01-23T20:46:39
--------------------------------------------------------------------------------
ldd /usr/bin/kwrite
linux-vdso.so.1 => (0x00007fff4c7ff000)
libkdeinit4_kwrite.so => /opt/kde4/lib64/libkdeinit4_kwrite.so (0x00007f179d1e9000)
libc.so.6 => /lib64/libc.so.6 (0x00007f179ce5a000)
libktexteditor.so.4 => /opt/kde4/lib64/libktexteditor.so.4 (0x00007f179cc0a000)
libkio.so.5 => /opt/kde4/lib64/libkio.so.5 (0x00007f179c6b6000)
libkparts.so.4 => /opt/kde4/lib64/libkparts.so.4 (0x00007f179c44a000)
libQtNetwork.so.4 => //opt/qt4/lib/libQtNetwork.so.4 (0x00007f179c0ac000)
libQtXml.so.4 => //opt/qt4/lib/libQtXml.so.4 (0x00007f179be53000)
libnepomukutils.so.4 => /opt/kde4/lib64/libnepomukutils.so.4 (0x00007f179bc01000)
libnepomuk.so.4 => /opt/kde4/lib64/libnepomuk.so.4 (0x00007f179b900000)
libkdeui.so.5 => /opt/kde4/lib64/libkdeui.so.5 (0x00007f179b162000)
libQtGui.so.4 => //opt/qt4/lib/libQtGui.so.4 (0x00007f179a11e000)
libQtSvg.so.4 => //opt/qt4/lib/libQtSvg.so.4 (0x00007f1799ea3000)
libsoprano.so.4 => /opt/kde4/lib64/libsoprano.so.4 (0x00007f1799b99000)
libkdecore.so.5 => /opt/kde4/lib64/libkdecore.so.5 (0x00007f1799637000)
libQtCore.so.4 => //opt/qt4/lib/libQtCore.so.4 (0x00007f17990a2000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1798e85000)
libQtDBus.so.4 => //opt/qt4/lib/libQtDBus.so.4 (0x00007f1798be2000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f17988d8000)
libm.so.6 => /lib64/libm.so.6 (0x00007f1798681000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f179846b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f179d402000)
libnepomukquery.so.4 => /opt/kde4/lib64/libnepomukquery.so.4 (0x00007f179820c000)
libz.so.1 => /lib64/libz.so.1 (0x00007f1797ff4000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f1797deb000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f1797bcf000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f179788e000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f179767b000)
libXft.so.2 => /usr/lib64/libXft.so.2 (0x00007f1797466000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f1797262000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f179705c000)
libXpm.so.4 => /usr/lib64/libXpm.so.4 (0x00007f1796e4a000)
libstreamanalyzer.so.0 => /opt/kde4/lib64/libstreamanalyzer.so.0 (0x00007f1796aee000)
libstreams.so.0 => /opt/kde4/lib64/libstreams.so.0 (0x00007f1796866000)
libsolid.so.4 => /opt/kde4/lib64/libsolid.so.4 (0x00007f1796541000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007f1796338000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f1796133000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f1795f28000)
libsopranoclient.so.1 => /opt/kde4/lib64/libsopranoclient.so.1 (0x00007f1795cdc000)
libqca.so.2 => /opt/kde4/lib64/libqca.so.2 (0x00007f1795953000)
libattica.so.0.3 => /opt/kde4/lib64/libattica.so.0.3 (0x00007f1795648000)
libdbusmenu-qt.so.2 => /opt/kde4/lib64/libdbusmenu-qt.so.2 (0x00007f1795416000)
libXtst.so.6 => /usr/lib64/libXtst.so.6 (0x00007f179520f000)
libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007f1795004000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f1794dfd000)
libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f1794bf8000)
librt.so.1 => /lib64/librt.so.1 (0x00007f17949f0000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f17946f8000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007f17944ce000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f1794242000)
libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007f1793ff2000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f1793dbc000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f1793bad000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f1793987000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f1793770000)
libfam.so.0 => /usr/lib64/libfam.so.0 (0x00007f1793568000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f1793364000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f179315f000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f1792f42000)
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f1792be5000)
libHUpnp.so.1 => /usr/lib64/libHUpnp.so.1 (0x00007f17928cd000)
libudev.so.0 => /lib64/libudev.so.0 (0x00007f17926bd000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x00007f179247f000)
libffi.so.4 => /usr/lib64/libffi.so.4 (0x00007f1792277000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f179204d000)
libQtSolutions_SOAP-2.7.so.1 => /usr/lib64/libQtSolutions_SOAP-2.7.so.1 (0x00007f1791e28000)
--------------------------------------------------------------------------------
Now let's run a KDE app from /usr/bin.
usr/bin/kwrite
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::setCompositionMode: Painter not active
/usr/bin/kwrite: symbol lookup error: /usr/lib64/kde4/plugins/styles/oxygen.so: undefined symbol: _ZN6Oxygen7TileSetC1ERK7QPixmapiiii
--------------------------------------------------------------------------------
Ok, now let's change Trolltech.conf:
- remove all cache sections, leave only the [qt] part
-add to [qt] part:
4.8\libraryPath=/opt/kde4/lib64/kde4/plugins
And run the app again;
/usr/bin/kwrite
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::setCompositionMode: Painter not active
/usr/bin/kwrite: symbol lookup error: /usr/lib64/kde4/plugins/styles/oxygen.so: undefined symbol: _ZN6Oxygen7TileSetC1ERK7QPixmapiiii
No luck. Same with "libraryPath=/opt/kde4/lib64/kde4/plugins" or
"4.8\libraryPath=/opt/kde4/lib64/kde4/plugins".
http://blog.volker-lanz.de/tag/trolltech-conf suggest the above would be a solution, but it is not working.
Now let's run the same strace, search for Trolltech.conf:
[...]
stat("/encrypted/home/andris/.config/Trolltech.conf", {st_mode=S_IFREG|0644, st_size=2526, ...}) = 0
lstat("/encrypted/home/andris/.config/Trolltech.conf", {st_mode=S_IFREG|0644, st_size=2526, ...}) = 0
open("/encrypted/home/andris/.config/Trolltech.conf", O_RDWR|O_CREAT|O_CLOEXEC, 0666) = 9
fcntl(9, F_SETFD, FD_CLOEXEC) = 0
close(9) = 0
open("/encrypted/home/andris/.config/Trolltech.conf", O_RDWR|O_CREAT|O_CLOEXEC, 0666) = 9
[...]
lstat("/etc/xdg/Trolltech.conf", 0x7fff1f519fa0) = -1 ENOENT (No such file or directory)
open("/etc/xdg/Trolltech.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/xdg/Trolltech.conf", 0x7fff1f51a1c0) = -1 ENOENT (No such file or directory)
[...]
So my Trolltech.conf is used, no other Trolltech.conf
Now let's run strace on /usr/bin/kwrite . It is very long
(full log: http://paste.kde.org/429194/), let's see here only the
part where the oxygen plugin is opened from the wrong place:
read(6, "\1\10\225\0\250\r\0\0\37\0\0\0\0\0\0\0\2406\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
read(6, "SelectionBox.foreground:\t#221f1e"..., 9920) = 9920
read(6, 0x63bee4, 4096) = -1 EAGAIN (Resource temporarily unavailable)
read(6, 0x63bee4, 4096) = -1 EAGAIN (Resource temporarily unavailable)
stat("/encrypted/home/andris/.config/Trolltech.conf", {st_mode=S_IFREG|0644, st_size=7398, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2195, ...}) = 0
lstat("/etc/xdg/Trolltech.conf", 0x7fff6be029b0) = -1 ENOENT (No such file or directory)
open("/etc/xdg/Trolltech.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/xdg/Trolltech.conf", 0x7fff6be02bd0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2195, ...}) = 0
stat("/usr/lib64/kde4/plugins/styles/.", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/usr/lib64/kde4/plugins/styles", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 7
statfs("/usr/lib64/kde4/plugins/styles/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=7686165, f_bfree=1538192, f_bavail=1147742, f_files=1957888, f_ffree=1514679, f_fsid={-1476075080, -621563074}, f_namelen=255, f_frsize=4096}) = 0
getdents(7, /* 3 entries */, 32768) = 80
getdents(7, /* 0 entries */, 32768) = 0
close(7) = 0
lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/lib64", {st_mode=S_IFDIR|0755, st_size=180224, ...}) = 0
lstat("/usr/lib64/kde4", {st_mode=S_IFDIR|0755, st_size=49152, ...}) = 0
lstat("/usr/lib64/kde4/plugins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/lib64/kde4/plugins/styles", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/usr/lib64/kde4/plugins/styles/oxygen.so", {st_mode=S_IFREG|0755, st_size=764080, ...}) = 0
stat("/usr/lib64/kde4/plugins/styles/oxygen.so", {st_mode=S_IFREG|0755, st_size=764080, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2195, ...}) = 0
stat("/data/development/sources/qt/plugins/styles/.", 0x7fff6be02c50) = -1 ENOENT (No such file or directory)
stat("/opt/kde4/lib64/kde4/plugins/styles/.", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/opt/kde4/lib64/kde4/plugins/styles", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 7
statfs("/opt/kde4/lib64/kde4/plugins/styles/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=7686165, f_bfree=1538192, f_bavail=1147742, f_files=1957888, f_ffree=1514679, f_fsid={-1476075080, -621563074}, f_namelen=255, f_frsize=4096}) = 0
getdents(7, /* 4 entries */, 32768) = 120
getdents(7, /* 0 entries */, 32768) = 0
close(7) = 0
lstat("/opt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/opt/kde4", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/opt/kde4/lib64", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0
lstat("/opt/kde4/lib64/kde4", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0
lstat("/opt/kde4/lib64/kde4/plugins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/opt/kde4/lib64/kde4/plugins/styles", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/opt/kde4/lib64/kde4/plugins/styles/oxygen.so", {st_mode=S_IFREG|0755, st_size=10694350, ...}) = 0
stat("/opt/kde4/lib64/kde4/plugins/styles/oxygen.so", {st_mode=S_IFREG|0755, st_size=10694350, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2195, ...}) = 0
lstat("/opt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/opt/kde4", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/opt/kde4/lib64", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0
lstat("/opt/kde4/lib64/kde4", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0
lstat("/opt/kde4/lib64/kde4/plugins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/opt/kde4/lib64/kde4/plugins/styles", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/opt/kde4/lib64/kde4/plugins/styles/phasestyle.so", {st_mode=S_IFREG|0755, st_size=1023171, ...}) = 0
stat("/opt/kde4/lib64/kde4/plugins/styles/phasestyle.so", {st_mode=S_IFREG|0755, st_size=1023171, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2195, ...}) = 0
stat("/usr/bin/styles/.", 0x7fff6be02c50) = -1 ENOENT (No such file or directory)
open("/usr/lib64/kde4/plugins/styles/oxygen.so", O_RDONLY) = 7
read(7, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\21\2\0\0\0\0\0"..., 832) = 832
fstat(7, {st_mode=S_IFREG|0755, st_size=764080, ...}) = 0
mmap(NULL, 2859224, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 7, 0) = 0x7f35ea350000
mprotect(0x7f35ea402000, 2097152, PROT_NONE) = 0
mmap(0x7f35ea602000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 7, 0xb2000) = 0x7f35ea602000
close(7) = 0
open("/opt/kde4/lib64/liboxygenstyle.so.4", O_RDONLY) = 7
read(7, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\211\0\0\0\0\0\0"..., 832) = 832
So it tries to open the plugin from /usr/ even though the variables and Trolltech.conf being configured correctly.
Nothing new, this is what we saw when it was crashing.
Tell me what do I do wrongly, and I'm willing to apologize and fix my system.
Andras
-------------- next part --------------
A non-text attachment was scrubbed...
Name: startkde4
Type: application/x-shellscript
Size: 579 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20120225/ce1b18b5/attachment.bin>
More information about the kde-core-devel
mailing list