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 のログを確認し、エラー等がないことを確認
まとめるとこんなもんだけど、ずいぶん時間がかかった。。。
何回コンパイルしたかもう忘れた~
パッチを作成してくださった皆様と、
各種情報をネット上に公開してくださっている皆様に感謝です!