[[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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS