HOME / コンピュータTips / Solaris / コンパイル / jd
Date: 2008/07/26 | | Tags: Solaris opensolaris Software compile コンパイル
Linux用の2chビューア、jdを、Solaris用にコンパイルする。
例によって、下記からダウンロード
jdは依存が多い。
必要なファイルは、
JPClibsigc++-2.2.2J01.pkg JPCcairomm-1.4.8J01.pkg JPCglibmm2-2.14.2J01.pkg JPCgtkmm2-2.12.7J01.pkg JPCjd-2.0.0,REV=2008.07.22J01.pkg
これらを順にダウンロードしてから、インストール。
サンプルのスクリプトがあるので
/opt/JPC/bin/jd.sh
環境変数をセットしてるだけなので、直接、何かしらの方法でセットされていれば、それを先に実行する必要がある。
幾つかのライブラリ(libsigc++や、glibmm、gtkmm)などは、標準のものがある。残念ながらSolarisの標準のパッケージは、これらの必要バージョンを満たさない。従って必ずLD_LIBRARY_PATHの順番を意識して設定しておくこと。
gzip -dc jd-2.0.0-20080722.tgz | tar xvf -
gmakeは必須である。
ライブラリとして、下記のものが必要。
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/sfw/bin:/opt/sfw/bin:\ /opt/csw/bin:/opt/SUNWspro/bin:/usr/ccs/bin ; export PATH LD_LIBRARY_PATH=/lib:/usr/lib/amd64:/usr/lib:/usr/sfw/lib/amd64:\ /usr/sfw/lib:/opt/sfw/lib:/opt/csw/lib/amd64:/opt/csw/lib:\ /usr/X11/lib/amd64:/usr/X11/lib:/usr/openwin/lib/amd64:\ /usr/openwin/lib ; export LD_LIBRARY_PATH PKG_CONFIG_PATH=/opt/JPC/lib/pkgconfig:/usr/lib/pkgconfig:\ /opt/csw/lib/pkgconfig ; export PKG_CONFIG_PATH ./autogen.sh ./configure \ --prefix=/opt/JPC \
パッチを宛ててコンパイルをする。
misctime.cpp.patchloader.cpp.patchconfigure.in.patch
このままでは、/opt/JPCにインストールされてしまうので、泥縄であるが、JPCを一次的に待避させる。
いったん依存関係のあるものをアンインストール
pkgrm JPCgtkmm2 JPCglibmm2 JPClibsigc++ JPCcairomm
待避して依存関係のあるものをインストール、
mv /opt/JPC /opt/JPC.orig pkgadd -d JPClibsigc++-2.2.2J01.pkg pkgadd -d JPCcairomm-1.4.8J01.pkg pkgadd -d JPCglibmm2-2.14.2J01.pkg pkgadd -d JPCgtkmm2-2.12.7J01.pkg
本体をインストールまえに、Makefileを書き換え。
install-desktopDATAに下記の記述があるので
test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)"
これに書き換え。
test -d "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)"
※-dに注目、下記も同じ。install-iconDATAに下記の記述があるので
test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)"
これに書き換え。
test -d "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)"
インストール。
gmake install
依存関係のあるパッケージをアンインストール
pkgrm JPCgtkmm2 JPCglibmm2 JPClibsigc++ JPCcairomm
すると若干のゴミはあるかもしれないが、残りは今回入れた本体のみであるはず。
rm -rf ../install_root/ mkdir -p ../install_root/opt mv /opt/JPC ../install_root/opt/ mv /opt/JPC.orig /opt/JPC
おわったら、依存物を間違いなくインストール・・・と言いたいが、ここは一度ぐっとまつ。
ここで ../install_rootにインストール後のイメージが出来ている。
cd ../install_root
prototypeを作成
pkgproto . > prototype
出来たprototypeファイルから、prototypeのエントリを削除する。
f none prototype 0644 root root
その上で、下記の2行を追加。依存関係があるので注意。
i pkginfo i depend
cat <<__END > ../depend P JPClibsigc++ typesafe callback system for standard C++ P JPCglibmm2 a C++ API for parts of glib that are useful for C++. P JPCcairomm A C++ API for cairo P JPCgtkmm2 a C++ API for GTK+ __END cp ../depend .
cat <<__END > ../pkginfo PKG=JPCjd NAME=jd for LINUX. 2ch browser ARCH=i86pc VERSION=2.0.0-beta080418 CATEGORY=library DESC=jd for LINUX. 2ch browser VENDOR=JPC CLASSES=none BASEDIR=/ __END cp ../pkginfo .
../../make_package.sh 01
pkgmk -r `pwd` pushd /var/spool/pkg/ pkgtrans -s . パッケージ名.pkg
割愛(笑