2013年11月21日木曜日

mediatomb コンパイル

Fedora 19 環境で mediatomb をコンパイルした時のメモ

●入手元
入手元も後から再確認したため、実際とは違うかも。

mediatomb-0.12.1
http://mediatomb.cc/pages/download

mediatomb-seek.patch
http://sourceforge.net/p/mediatomb/patches/19/

mediatomb-0.12.1-gcc46.patch
http://sourceforge.net/p/mediatomb/patches/25/

mediatomb-0.12.1.tonewjs.patch
mediatomb-0.12.1.jsparse.patch
http://sourceforge.net/p/mediatomb/patches/31/


libav_0.7_support.patch
https://launchpadlibrarian.net/71985647/libav_0.7_support.patch

libavformat_0.11_support.patch
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=677959

timeseek.patch (ファイル名は適当)
http://www.ongs.net/ossan/diary/?date=20110923


●追加導入
mediatomb のWebページの Requirement の S/W と devel パッケージ
後から確認しているため、一部間違っているかも。。。
すべて yum で導入

・sqlite
sqlite-devel-3.8.0.2-4.fc19.i686
sqlite-3.8.0.2-4.fc19.i686

・MariaDB
mariadb-libs-5.5.33a-1.fc19.i686
mariadb-5.5.33a-1.fc19.i686
mariadb-devel-5.5.33a-1.fc19.i686
mariadb-server-5.5.33a-1.fc19.i686

・expat
expat-devel-2.1.0-5.fc19.i686
expat-2.1.0-5.fc19.i686

・zlib
zlib-devel-1.2.7-10.fc19.i686
zlib-1.2.7-10.fc19.i686

・file  ( libmagic )
file-devel-5.11-11.fc19.i686
file-libs-5.11-11.fc19.i686
file-5.11-11.fc19.i686


・js
js-devel-1.8.5-13.fc19.i686
js-1.8.5-13.fc19.i686

・taglib
taglib-devel-1.9.1-1.fc19.i686
taglib-1.9.1-1.fc19.i686

・libexif
libexif-0.6.21-4.fc19.i686
libexif-devel-0.6.21-4.fc19.i686

・curl
curl-7.29.0-12.fc19.i686
libcurl-devel-7.29.0-12.fc19.i686
libcurl-7.29.0-12.fc19.i686

・ffmpeg 関連
ffmpeg-libs-1.2.4-2.fc19.i686
ffmpeg-devel-1.2.4-2.fc19.i686
ffmpegthumbnailer-2.0.8-4.fc19.i686
ffmpeg-compat-0.6.7-1.fc19.i686
ffmpeg-1.2.4-2.fc19.i686
ffmpegthumbnailer-devel-2.0.8-4.fc19.i686
ffmpeg-compat-devel-0.6.7-1.fc19.i686

・lastfmlib
lastfmlib-0.4.0-7.fc19.i686
lastfmlib-devel-0.4.0-7.fc19.i686

●パッチ適用
各 patch ファイルは、 mediatombのソースを展開してできる mediatomb-0.12.1 ディレクトリと
同じレベルに配置して下記のスクリプトを実行。

libavformat については 0.7 -> 0.11 の順で適用
最後の time-seek.patch の 3つの HUNK のうち、
真ん中の1つ ( static int _parse_npt 関数 ) は
なぜか適用失敗。 
原因がわからなかったので、転記して組み込み(笑)

echo
echo "patch : mediatomb-seek.patch"
patch -p0 < ../mediatomb-seek.patch

echo
echo "patch : mediatomb-0.12.1-gcc46.patch"
patch -p1 < ../mediatomb-0.12.1-gcc46.patch

echo
echo "patch : mediatomb-0.12.1.tonewjs.patch"
patch -p1 < ../mediatomb-0.12.1.tonewjs.patch

echo
echo "patch : mediatomb-0.12.1.jsparse.patch"
patch -p1 < ../mediatomb-0.12.1.jsparse.patch

echo
echo "patch :libav_0.7_support.patch"
patch -p1 < ../libav_0.7_support.patch

echo
echo "patch : libavformat_0.11_support.patch"
patch -p1 < ../libavformat_0.11_support.patch

# timeseek.patch は一部適用失敗するが、その部分のソースを追記すればよい
echo
echo "patch : timeseek.patch"
patch -p0 < ../timeseek.patch

●ビルド
mediatomb-0.12.1 ディレクトリに移動し下記のコマンドを実施

./configure
make -j2

なお、 mediatomb の Documentation には、 チェックアウトしたソースを使う場合には
autoreconf -i をする、という記載もあったが、今回はダウンロード版なので実施しない。
(実施するとコンパイルが通らなかった)

たまたま 2並列実行可能な PC だったため、  make に -j2 オプションを指定

いくつか警告 ( search の代わりに this->search を使う、など)がでたが
無事コンパイル成功

●インストール
通常であれば make install するところだが、
今回は初回に yum で導入しているため、それを手動差し替え

mv /bin/mediatomb /bin/mediatomb.org
cp mediatomb-0.12.1/build/mediatomb /bin/mediatomb.YYYYmmdd
ln -s /bin/mediatomb.YYYYmmdd /bin/mediatomb

●起動
systemctl start mediatomb.service

/var/log/mediatomb のログを確認し、エラー等がないことを確認



まとめるとこんなもんだけど、ずいぶん時間がかかった。。。
何回コンパイルしたかもう忘れた~

パッチを作成してくださった皆様と、
各種情報をネット上に公開してくださっている皆様に感謝です!




0 件のコメント:

コメントを投稿