試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

mfiler2のebuildを4.0.6に合わせる

(2008/6/16)新しいバージョンは
http://cid-3f9be5b1cd4a806c.skydrive.live.com/browse.aspx/%e5%85%ac%e9%96%8b/Gentoo%20Linux%20ebuild/app-misc/mfiler2
にアップロードした。
以下、バージョン4.0.6向けのebuildに関する記述。


主な変更点としては、ビルドシステム側の幾つかの変更に合わせている部分のみなのだが、ebuild側では色々と書き方を変えた部分もある。
今回も外部パッチは使用していない。
ファイル名: mfiler2-4.0.6.ebuild

# Copyright 1999-2008 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"

COMMON_DEPEND="virtual/libiconv
	>=sys-libs/ncurses-5
	>=dev-lang/ruby-1.8
	migemo? (
		>=app-text/cmigemo-1.3
		onig? ( >=dev-libs/oniguruma-4.6.1 )
	)"
RDEPEND="${COMMON_DEPEND}
	gtk? ( >=dev-ruby/ruby-gtk2-0.15.0 )"
DEPEND="${COMMON_DEPEND}
	>=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}"
	sed -i 's:^CFLAGS=.*::' configure || die "sed failed"
	sed -i 's:cd onig-:#:' Makefile.in || die "sed failed"
	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:' \
				-e 's:Onig\(UChar\):\1:g' isearch.cpp || die "sed failed"
			# we don't use external oniguruma
			sed -i 's:\(LIBONIG=\)-lonig:\1:' configure || die "sed failed"
		fi
	else
		sed -i -e 's:onig-4.6.1/.libs/libonig.a::' \
			-e 's:-I onig-4.6.1::' \
			configure || die "sed failed"
	fi
	# inclusion of string.h is lacked
	local name
	for name in extra hash vector; do
		mv minato_${name}.h{,.orig}
		echo "#include <string.h>" > minato_${name}.h
		cat minato_${name}.h.orig >> minato_${name}.h
	done
	# don't install mdnd if "gtk" USE flag is disabled
	use gtk || sed -i 's:$(INSTALL) -m 755 mdnd $(bindir)::' Makefile.in
}

src_compile() {
	if use migemo && ! use onig; then
		local rbinc=$(ruby -r rbconfig -e 'print Config::CONFIG["archdir"]')
		CFLAGS="${CFLAGS} -I${rbinc}"
		export ac_cv_lib_onig_onig_new="yes"
	fi
	use !migemo && export ac_cv_lib_migemo_migemo_query="no"
	export CC="$(tc-getCC) ${CFLAGS}" CXX="$(tc-getCXX) ${CXXFLAGS}"
	econf --sysconfdir=/etc/mfiler2 || die "econf failed"
	emake -j1 || die "emake failed"
}

src_install() {
	einstall sysconfdir="${D}"/etc/mfiler2 || die "einstall failed"
	dodoc LICENSE README README.utf8.jp
	dohtml *.html
}

以下、その他の覚え書き。

  • Ruby組み込み版鬼車を使用する場合の検出のために、configureスクリプトのCFLAGS変数定義部分を削除し、「$(ruby -r rbconfig -e 'print Config::CONFIG["archdir"]')」をヘッダファイル探索パスに加えるようにした
  • configureスクリプトではmigemoが無効化できない(あると自動で有効になる)が、「export ac_cv_lib_migemo_migemo_query="no"」のようにして検出結果のキャッシュを指定することで「検出できなかった」ことにできるのを「USE="-migemo"」の処理に利用している
  • RDEPEND(実行時に必要なパッケージ)とDEPEND(ビルド時に必要なパッケージ)の記述をより厳密にするために、共通して使用されるものを別の変数(COMMON_DEPEND)に入れておいて両方から参照する形*1をとることにした。

*1:公式の色々なebuildでもよく使われている手法