2015-05-19

mkvtoolnix-7.9.0のXBPSパッケージ化

ひさしぶりの自作XBPSパッケージ。
ビデオ・オーディオコンテナのMatroskaのファイル作成・メンテナンスツールのmkvtoolnixをパッケージ化してみました。
# Template file for 'mkvtoolnix'

pkgname=mkvtoolnix
version=7.9.0
revision=1
short_desc="Matroska tools"
license="GPLv2"
maintainer="user"
homepage="https://www.bunkus.org/videotools/mkvtoolnix/"

distfiles="https://www.bunkus.org/videotools/mkvtoolnix/sources/${pkgname}-${version}.tar.xz"
checksum=39788fa57d9cebd6ea3be9db58dbf8a10fd7c96ad8fa4f79bdf4dadca77bba4a

build_style=configure
configure_args="--prefix=/usr --enable-qt --enable-wxwidgets --enable-gui --with-gettext"

hostmakedepends="clang libebml-devel libogg-devel boost-devel libflac-devel wxWidgets-devel libmagic lzo-devel libmatroska-devel qt5-devel libvorbis-devel pkg-config libcurl-devel git"

makedepends="ruby"

lib32disabled=yes

post_configure() {
    if [ -d ./rubygems ] ; then
        git pull
    else       
        git clone git://github.com/rubygems/rubygems.git
    fi
}

pre_build() {
    cd rubygems
    ruby setup.rb

    cd ..
    gem install drake
}

do_build() {
    case ${XBPS_MACHINE} in
        "i686" ) ./drake -j1 ;;
        "x86_64" ) ./drake -j2 ;;
        * ) ./drake -j1 ;;
    esac
}

do_install() {
    vmkdir /usr/bin
    vbin src/mkvmerge
    vbin src/mkvinfo
    vbin src/mkvextract
    vbin src/mkvpropedit
    vbin src/mkvtoolnix-gui/mkvtoolnix-gui

    vmkdir /usr/share/man/man1
    vman doc/man/mkvmerge.1
    vman doc/man/mkvinfo.1
    vman doc/man/mkvextract.1
    vman doc/man/mkvpropedit.1
    vman doc/man/mkvtoolnix-gui.1
   
    vmkdir /usr/share/man/de/man1
    vmkdir /usr/share/man/ja/man1
    vmkdir /usr/share/man/nl/man1
    vmkdir /usr/share/man/uk/man1
    vmkdir /usr/share/man/zh_CN/man1
   
    vinstall doc/man/de/mkvmerge.1 644 /usr/share/man/de/man1/mkvmerge.1
    vinstall doc/man/de/mkvinfo.1 644 /usr/share/man/de/man1/mkvinfo.1
    vinstall doc/man/de/mkvextract.1 644 /usr/share/man/de/man1/mkvextract.1
    vinstall doc/man/de/mkvpropedit.1 644 /usr/share/man/de/man1/mkvpropedit.1
    vinstall doc/man/de/mkvtoolnix-gui.1 644 /usr/share/man/de/man1/mkvtoolnix-gui.1
    vinstall doc/man/ja/mkvmerge.1 644 /usr/share/man/ja/man1/mkvmerge.1
    vinstall doc/man/ja/mkvinfo.1 644 /usr/share/man/ja/man1/mkvinfo.1
    vinstall doc/man/ja/mkvextract.1 644 /usr/share/man/ja/man1/mkvextract.1
    vinstall doc/man/ja/mkvpropedit.1 644 /usr/share/man/ja/man1/mkvpropedit.1
    vinstall doc/man/ja/mkvtoolnix-gui.1 644 /usr/share/man/ja/man1/mkvtoolnix-gui.1
    vinstall doc/man/nl/mkvmerge.1 644 /usr/share/man/nl/man1/mkvmerge.1
    vinstall doc/man/nl/mkvinfo.1 644 /usr/share/man/nl/man1/mkvinfo.1
    vinstall doc/man/nl/mkvextract.1 644 /usr/share/man/nl/man1/mkvextract.1
    vinstall doc/man/nl/mkvpropedit.1 644 /usr/share/man/nl/man1/mkvpropedit.1
    vinstall doc/man/nl/mkvtoolnix-gui.1 644 /usr/share/man/nl/man1/mkvtoolnix-gui.1
    vinstall doc/man/uk/mkvmerge.1 644 /usr/share/man/uk/man1/mkvmerge.1
    vinstall doc/man/uk/mkvinfo.1 644 /usr/share/man/uk/man1/mkvinfo.1
    vinstall doc/man/uk/mkvextract.1 644 /usr/share/man/uk/man1/mkvextract.1
    vinstall doc/man/uk/mkvpropedit.1 644 /usr/share/man/uk/man1/mkvpropedit.1
    vinstall doc/man/uk/mkvtoolnix-gui.1 644 /usr/share/man/uk/man1/mkvtoolnix-gui.1
    vinstall doc/man/zh_CN/mkvmerge.1 644 /usr/share/man/zh_CN/man1/mkvmerge.1
    vinstall doc/man/zh_CN/mkvinfo.1 644 /usr/share/man/zh_CN/man1/mkvinfo.1
    vinstall doc/man/zh_CN/mkvextract.1 644 /usr/share/man/zh_CN/man1/mkvextract.1
    vinstall doc/man/zh_CN/mkvpropedit.1 644 /usr/share/man/zh_CN/man1/mkvpropedit.1
    vinstall doc/man/zh_CN/mkvtoolnix-gui.1 644 /usr/share/man/zh_CN/man1/mkvtoolnix-gui.1
    vmkdir /usr/share/locale/ca/LC_MESSAGES
    vmkdir /usr/share/locale/cs/LC_MESSAGES
    vmkdir /usr/share/locale/de/LC_MESSAGES
    vmkdir /usr/share/locale/es/LC_MESSAGES
    vmkdir /usr/share/locale/eu/LC_MESSAGES
    vmkdir /usr/share/locale/fr/LC_MESSAGES
    vmkdir /usr/share/locale/it/LC_MESSAGES
    vmkdir /usr/share/locale/ja/LC_MESSAGES
    vmkdir /usr/share/locale/lt/LC_MESSAGES
    vmkdir /usr/share/locale/nl/LC_MESSAGES
    vmkdir /usr/share/locale/pl/LC_MESSAGES
    vmkdir /usr/share/locale/pt/LC_MESSAGES
    vmkdir /usr/share/locale/pt_BR/LC_MESSAGES
    vmkdir /usr/share/locale/ru/LC_MESSAGES
    vmkdir /usr/share/locale/sr/LC_MESSAGES
    vmkdir /usr/share/locale/sv/LC_MESSAGES
    vmkdir /usr/share/locale/tr/LC_MESSAGES
    vmkdir /usr/share/locale/uk/LC_MESSAGES
    vmkdir /usr/share/locale/zh_CN/LC_MESSAGES
    vmkdir /usr/share/locale/zh_TW/LC_MESSAGES
    vinstall po/ca.mo 644 /usr/share/locale/ca/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/cs.mo 644 /usr/share/locale/cs/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/de.mo 644 /usr/share/locale/de/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/es.mo 644 /usr/share/locale/es/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/eu.mo 644 /usr/share/locale/eu/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/fr.mo 644 /usr/share/locale/fr/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/it.mo 644 /usr/share/locale/it/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/ja.mo 644 /usr/share/locale/ja/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/lt.mo 644 /usr/share/locale/lt/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/nl.mo 644 /usr/share/locale/nl/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/pl.mo 644 /usr/share/locale/pl/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/pt.mo 644 /usr/share/locale/pt/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/pt_BR.mo 644 /usr/share/locale/pt_BR/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/ru.mo 644 /usr/share/locale/ru/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/sr.mo 644 /usr/share/locale/sr/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/sv.mo 644 /usr/share/locale/sv/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/tr.mo 644 /usr/share/locale/tr/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/uk.mo 644 /usr/share/locale/uk/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/zh_CN.mo 644 /usr/share/locale/zh_CN/LC_MESSAGES/mkvtoolnix.mo
    vinstall po/zh_TW.mo 644 /usr/share/locale/zh_TW/LC_MESSAGES/mkvtoolnix.mo

}


以前のwxWidgetsのタイプもconfigureオプションで指定すれば作成できるようですが、今回はQT5のGUIにしました。
今後xbps-srcのオプションで指定できるように改良したいと思います。

初めて知ったのですがmkvtoolnixはconfigureはいつもと同じだけど、ビルドとインストールにRubyを使っているのでそのままだxbps-srcですんなりとパッケージの作成ができません。
Ruby全然使ったことがないんだけどどうしよ?。
と焦りましたがたいしたコマンド入力していないのでなんとかなりました。

ビルド開始前(pre_build())でRubygemsというコンパイルアプリケーション?をgithubから入手しインストールしています。

その後drakeというコンパイル用のファイルをインストールします。

ビルド時(do_build())では./drakeにコンパイル時に使うCPUのコア数をオプションで指定します。
非力なマシンにVoid Linuxをインストールして使うことを想定(自分だけど)してアーキテクチャによって(i686とx86_64)によって使用コア数を変えるようにしてあります。
i686では1コア、x86_64では2コアに設定してあります。

環境によっては4コアなどにも設定できますが、それに比例してRAMの使用量も上がります。
仮想環境で4コア&2GB RAMで試したところ、RAMを使いきってスワップ使い始めたので1コアで大体500MBくらいメモリを使うようです。

インストールはそのままだとbootstrap環境内に直接インストールしてしまい、パッケージ作成すると空のパッケージが出来上がってしまうので、手動でインストール先を指定しています。
幸いなことにdrakeによるインストールは標準出力にファイルのインストール先を表示してくれたのでそれを使いxbps-src template用に修正。

出来上がったtemplateファイルを使い無事にパッケージが出来上がりました。
(x86_64のみで確認)

実際に起動してる。


ユーザーごとに設定するロケールをja_JP.UTF-8にしていないのでmkvtoolnixの環境設定で日本語にしていますがすべて英語表示です。
Linux MintにインストールしたUbuntuのパッケージはひらがなとカタカナが文字化けして□になっていたので英語表示のほうが今のところはいいんじゃないかと思います。
ソースコードの言語ファイルも念の為確認しましたが、UTF-8でファイル内の日本語も化けていなかったのでGUI作成ツール側の問題かと思います。

テンプレートファイル置き場
https://sites.google.com/site/voidlinuxmemo/xbps-src-tenpureto/mtoolnix

0 件のコメント:

コメントを投稿