2016/11/04

LightDM 1.20.0を暫定的にビルド&インストール成功

LightDM 1.20.0のビルドが出来るように暫定的な対処を続けた結果、最後までビルドできるようになり、/usr/local以下にインストールできました。細かいところは省きますが、次のような問題がありました。
  1. Shared object "libXi.so.7" not found」というエラーが出る。 
  2. No rule to make target 'liblightdm-gobject-1.deps', needed by 'all-am'. Stop.」というエラーが出る。
  3. libsystem.c:29:21: fatal error: xcb/xcb.h: No such file or directory」というエラーが出る。
  4. libsystem.c:138:1: error: conflicting types for 'setgroups'」というエラーが出る。
1番目の問題は昨日から出ているものです。GNU libtoolを使っているようなのですが、「libtool --config」で確認すると「shlibpath_var=LD_LIBRARY_PATH」になっていました。shlibpath_varはマニュアルでは「The environment variable that tells the dynamic linker where to find shared libraries. 」と説明されています。要するに環境変数LD_LIBRARY_PATHを設定しておかなければならないという事なのでしょうか。この環境変数でパスを指定したらうまくいったので、正式な対処方法は不明ですが、暫定的にこの方法で対応します。

2番目の問題はLightDMが提供するビルド方法の問題ではないかと思います。提供されるtarballにはこのファイルが含まれているのですが「make distclean」をしたときに消されてしまうのですが、消してはいけないファイルなのではないでしょうか。当面は「make distclean」した後にtarballから復活させることにします。

3番目の問題はconfigureに関わる問題のようです。このファイルは/usr/X11R7/includeにあるのですが検索対象になっていないようです。非標準ディレクトリと見做されているのでしょうか。configure実行時に指定する環境変数CPPFLAGSに追加しておくことにします。

4番目の問題はGNU拡張とNetBSD標準との差異が原因と思われます。LightDMはLINUX上で開発されたと思われますが、NetBSDなどとの移植性に注意を払っていない印象を受けます。移植性を確保するというのは難しい課題であることは認めます。ややもすると自分の開発環境で問題なければ、それで良しとしてしまいがちです。この問題に対処するため「__NetBSD__」が定義されている否かで条件コンパイルするようにして暫定的な対処をおこないました。

以上の問題を解決し、以下のコマンドでビルドが成功し、/usr/local以下へのインストールにも成功しました。次はWIPを参考にして自前のpkgsrcを作ってみようと思います。
# cd lightdm-1.20.0
# env CPPFLAGS='-I/usr/pkg/include -I/usr/X11R7/include' ./configure
# end LD_LIBRARY_PATH='/usr/pkg/lib:/usr/X11R7/lib:/usr/lib' gmake
# gmake install

0 件のコメント:

コメントを投稿