mfiler2-3.2.1.ebuild
安定版のバージョンが3.2.1になっているので、これに合わせるついでにebuildも多少いじってみた。
- 各種修正を全てsedで行い、外部パッチを用いないようにした(修正の量が少ないことと、差分を取って配置してなどとやるのが面倒なのが理由)
- configureスクリプトにRuby関係の情報を渡す必要がなくなったので、この部分は外した
- ソースに付属していたnet-sshなどが無くなっているので、依存パッケージから外した
- dev-lang/rubyをUSE=cjkでビルドした場合(OnigUCharの関係で)ビルドエラーになるため、USE=onigを付けたとしてもRuby付属の鬼車を使用する*1ように修正
- 「#else if defined(HAVE_NCURSES_H)」の部分でしつこく警告が出るので、「#elif」になるように修正
- mdndは、USE=gtkのときにのみインストールするようにした
配置場所はローカルOverlayのapp-misc/の下などに。
ファイル名: mfiler2-3.2.1.ebuild
# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils DESCRIPTION="a two pane file manager under UNIX console." HOMEPAGE="http://www.geocities.jp/daisuke530221jp/" SRC_URI="http://www.geocities.jp/daisuke530221jp/${P}.tgz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="migemo onig gtk" RESTRICT="strip" RDEPEND="virtual/libiconv >=sys-libs/ncurses-5 >=dev-lang/ruby-1.8 migemo? ( >=app-text/cmigemo-1.3 onig? ( >=dev-libs/oniguruma-4.6.1 ) ) gtk? ( >=dev-ruby/ruby-gtk2-0.15.0 )" DEPEND="${RDEPEND} >=sys-devel/libtool-1.5" pkg_setup() { if use migemo && ! use onig; then if has_version "=dev-lang/ruby-1.8.6-r1"; then # ruby-1.8.6-r1 lacks "cjk" USE flag eerror eerror "C/Migemo support requires oniguruma library" eerror "You need to enable \"onig\" use flag" eerror " or install other version of Ruby with USE=cjk enabled" eerror die "Please enable \"onig\" use flag or install other version of Ruby with USE=cjk" elif ! built_with_use dev-lang/ruby cjk; then eerror eerror "C/Migemo support requires oniguruma library" eerror "You need to enable \"onig\" use flag" eerror " or rebuild dev-lang/ruby with USE=cjk enabled" eerror die "Please enable \"onig\" use flag or rebuild dev-lang/ruby with USE=cjk" fi elif use migemo && use onig && built_with_use dev-lang/ruby cjk; then ewarn ewarn "Oniguruma(version 2) is embedded in Ruby" ewarn "We'll use oniguruma in Ruby (NOT \"dev-lang/oniguruma\")" ewarn fi } src_unpack() { unpack ${A} cd "${S}" # We don't use bundled origuruma sed -i 's|\(LIBONIG=\)onig-4.6.1/.libs/libonig.a|\1|' Makefile.in sed -i -e 's/\(INCONIG=\)-I onig-4.6.1/\1/' -e 's/^$(LIBONIG):$//' -e 's/cd onig-/#/' Makefile.in if use migemo; then if ! use onig || built_with_use dev-lang/ruby cjk; then # embedded version of oniguruma (Ruby/oniguruma) sed -i -e 's/const \(OnigUChar\)/\1/g' -e 's/Onig\(UChar\)/\1/g' isearch.cpp else # official version of oniguruma sed -i 's|\(LIBONIG=\)|\1-lonig|' Makefile.in fi else # Disable C/Migemo if "migemo" USE flag is disabled sed -i -e 's/#define HAVE_MIGEMO_H 1//' -e 's/-lmigemo//' configure fi # Inclusion of string.h is lacked local name for name in extra hash string vector; do mv minato_${name}.h{,.orig} echo "#include <string.h>" > minato_${name}.h cat minato_${name}.h.orig >> minato_${name}.h done # Fix for "warning: extra tokens at end of #else directive" (else if > elif) sed -i 's/\(#el\)se \(if\)/\1\2/' minato_curses.h # Don't install mdnd if "gtk" USE flag is disabled use gtk || sed -i 's/$(INSTALL) -m 755 mdnd $(bindir)//' Makefile.in } src_compile() { export CC="$(tc-getCC) ${CFLAGS}" CXX="$(tc-getCXX) ${CXXFLAGS}" econf --sysconfdir=/etc/mfiler2 || die "econf failed" emake || die "emake failed" } src_install() { einstall sysconfdir="${D}"/etc/mfiler2 || die "einstall failed" dodoc README README.utf8.jp dohtml *.html }
以下は、その他のメモ。
- パッチを使用する代わりにsedで置換している部分は実は結構汚い。
- C/Migemoがインストール済みのときにUSEフラグで無効にする場合のconfigureの修正は特に汚いが、一応無効にはできているようだ。
- 「inherit eutils」は、built_with_use()関数(パッケージにUSEフラグを指定してインストールしたかを調べる)のために必要
- ファイルの先頭に「#include
」の行を追加するのに、下のような手順を用いた。*2 - 元ファイルの退避
- echoでinclude行を書く
- 退避していたファイルをcatで追加書き込み
- x86_64でwkf-1.3.9/ディレクトリのconfigureスクリプトが通らない不具合は残っている。ebuildでは、econf()関数*3が自動的に下のように更新を行うため、手動でlibtoolize --copy --forceする必要はない。
* econf: updating mfiler2-3.2.1/wkf-1.3.9/config.sub with /usr/share/gnuconfig/config.sub * econf: updating mfiler2-3.2.1/wkf-1.3.9/config.guess with /usr/share/gnuconfig/config.guess
*1:「sed -i -e 's/const \(OnigUChar\)/\1/g' -e 's/Onig\(UChar\)/\1/g' isearch.cpp」の修正を行う
*2:関連した操作として、「CompizのVideo PlaybackプラグインとMPlayer」では、新しいバージョンのMPlayerではそのままではパッチの当たらない部分があったので、その前後をheadとtailで書き出し、パッチの当たらない部分をヒアドキュメントで書き出して新しいパッチを作成して適用する、ということを行った。これは、差分を取り直さずに古いパッチを再利用するのが目的