[[diary/Kojima]]
・xcb-utils-0.3.8 のメモ
しばらくハマっていたのでまとめを兼ねて。
xcb-util-0.3.6パッケージにはこれだけのライブラリが含まれているのに,
-rwxr-xr-x root/root 14380 usr/lib64/libxcb-aux.so.0.0.0
-rwxr-xr-x root/root 18867 usr/lib64/libxcb-event.so.1.0.0
-rwxr-xr-x root/root 8905 usr/lib64/libxcb-property.so.1.0.0
-rwxr-xr-x root/root 23071 usr/lib64/libxcb-icccm.so.1.0.0
-rwxr-xr-x root/root 18764 usr/lib64/libxcb-image.so.0.0.0
-rwxr-xr-x root/root 10514 usr/lib64/libxcb-keysyms.so.1.0.0
-rwxr-xr-x root/root 9323 usr/lib64/libxcb-reply.so.1.0.0
-rwxr-xr-x root/root 17627 usr/lib64/libxcb-render-util.so.0.0.0
xcb-utils-0.3.8パッケージには
-rwxr-xr-x root/root 29214 usr/lib64/libxcb-util.so.0.0.0
しか入っていない.
0.3.6のうち,いくつかのライブラリは個別のパッケージに分割され,
xcb-util-image, xcb-util-keysyms, xcb-util-renderutil, xcb-util-wm の
4つのパッケージが増えていて,それぞれ以下のようなライブラリが入っている.
xcb-util-image:
-rwxr-xr-x root/root 18812 usr/lib64/libxcb-image.so.0.0.0
xcb-util-keysyms:
-rwxr-xr-x root/root 10586 usr/lib64/libxcb-keysyms.so.1.0.0
xcb-util-renderutil:
-rwxr-xr-x root/root 17627 usr/lib64/libxcb-render-util.so.0.0.0
xcb-util-wm:
-rwxr-xr-x root/root 24284 usr/lib64/libxcb-icccm.so.4.0.0
-rwxr-xr-x root/root 64243 usr/lib64/libxcb-ewmh.so.1.0.0
0.3.6と比べると,libxcb-util と libxcb-ewmh が増えて,
libxcb-aux,libxcb-event, libxcb-property, libxcb-reply の4つが無くなっている.
このうちaux,event,propertyの機能はutilに統合されたようで,これらのライブラリの
pkgconfigファイルには
Name: XCB Aux library
Description: XCB convenient functions
Version: 0.3.8
Requires: xcb
Libs: -L${libdir} -lxcb-util
Cflags: -I${includedir}
みたいにxcb-utilをリンクするような記載がある.
ただし,既に libxcb-aux.so.0.0.0 をリンクするようにビルドされてしまっているバイナリには
pkgconfigの設定は効力を及ぼさないので,とりあえずの回避策として
ln -sf libxcb-util.so.0 libxcb-aux.so.0
ln -sf libxcb-util.so.0 libxcb-event.so.0
ln -sf libxcb-util.so.0 libxcb-property.so.0
のシンボリックリンクを貼ることで回避できそう.実用上は,libxcb-eventとlibxcb-propertyを
リンクしているバイナリは(Plamo64-1.0の範囲では)無さそうなので,libxcb-auxのリンクが
解決できればいい模様
libxcb-auxのリンクを必要とするパッケージは結構ある.多分、後述のlibstartup-notification経由で
Xfceのバイナリの多くにリンクされてしまっている模様。
libxcb-aux.so.0 used by these binaries
compiz(/usr/bin/compiz)
gtk-window-decorator(/usr/bin/gtk-window-decorator)
wnckprop(/usr/bin/wnckprop)
wnck-urgency-monitor(/usr/bin/wnck-urgency-monitor)
Thunar(/usr/bin/Thunar)
ristretto(/usr/bin/ristretto)
thunar-volman-settings(/usr/bin/thunar-volman-settings)
xfce4-appfinder(/usr/bin/xfce4-appfinder)
xfce4-mixer(/usr/bin/xfce4-mixer)
xfce4-notes-settings(/usr/bin/xfce4-notes-settings)
....
一方,libtoolsが参照する la ファイルにも libxcb-auxを参照しているものがある.
$ grep libxcb-aux /usr/lib64/lib*.la
/usr/lib64/libI810XvMC.la:dependency_libs=' /usr/lib64/libdrm.la -lrt
/usr/lib64/libXvMC.la /usr/lib64/libXv.la /usr/lib64/libXext.la
/usr/lib64/libXfixes.la /usr/lib64/libX11-xcb.la /usr/lib64/libX11.la -ldl
/usr/lib64/libxcb-dri2.la /usr/lib64/libxcb-aux.la /usr/lib64/libxcb.la
/usr/lib64/libXau.la /usr/lib64/libXdmcp.la'
/usr/lib64/libIntelXvMC.la:dependency_libs=' /usr/lib64/libXvMC.la
/usr/lib64/libXv.la /usr/lib64/libXext.la /usr/lib64/libXfixes.la
/usr/lib64/libX11-xcb.la /usr/lib64/libX11.la -ldl /usr/lib64/libxcb-dri2.la
/usr/lib64/libxcb-aux.la /usr/lib64/libxcb.la /usr/lib64/libXau.la
/usr/lib64/libXdmcp.la -lpthread /usr/lib64/libdrm_intel.la /usr/lib64/libdrm.la -lrt'
/usr/lib64/libstartup-notification-1.la:dependency_libs=' /usr/lib64/libxcb-aux.la
/usr/lib64/libX11-xcb.la /usr/lib64/libX11.la -ldl /usr/lib64/libxcb.la
/usr/lib64/libXau.la /usr/lib64/libXdmcp.la'
libtoolsがこれらを参照すると,存在しなくなった /usr/lib64/libxcb-aux.la を読み込もうと
してエラーになるので,早めに更新しておく必要がある.
- 前のlibxcb-xlibの時も結構大変な目に遭ったが、XCB回りはまだまだ罠が多そうだ。 -- [[kojima]] &new{2012-02-26 (日) 00:33:52};
#comment