ebuild読み 07 sys-power/powertop

今日は電力消費状況を見たり、最適化を行なってくれるpowertopを読みます。

# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-power/powertop/powertop-1.98.ebuild,v 1.2 2011/10/27 16:21:54 jer Exp $

EAPI="4"

inherit eutils toolchain-funcs
if [[ ${PV} == "9999" ]] ; then
	EGIT_REPO_URI="git://git.kernel.org/pub/scm/status/powertop/powertop.git"
	inherit git-2
	SRC_URI=""
else
	SRC_URI="mirror://kernel/linux/status/${PN}/${P}.tar.bz2"
	KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
fi

いきなり if ${PV} == "9999" ; then とかでてきました。${PV}はebuildのファイル名のバージョンですね。なので、emerge =powertop-9999 の時はこの条件文が真になります。その場合、 EGIT_REPO_URIでgitリポジトリを指定し、git-2のeclassをinheritすることでgitからその時の最新版をチェックアウトしてくる形態になっています。そうでなければ、いつも通りにバージョン番号でtar.bz2を取得するようにSRC_URIを設定します。

DESCRIPTION="tool that helps you find what software is using the most power"
HOMEPAGE="http://www.lesswatts.org/projects/powertop/"

LICENSE="GPL-2"
SLOT="0"
IUSE="unicode"

DEPEND="
	dev-libs/libnl:1.1
	sys-apps/pciutils
	sys-devel/gettext
	sys-libs/ncurses[unicode?]
	sys-libs/zlib
"

sys-libs/ncurses[unicode?]という依存がありますね。これはpowertopがUSE="unicode"であれば、ncursesもUSE="unicode"が必要、powertopがUSE="-unicode"であればncursesは必要だがそのUSEフラグは問わない、という依存になります。長く書くと "unicode? ( sys-libs/ncurses[unicode] ) !unicode? ( sys-libs/ncurses )"というわけです。

RDEPEND="
	${DEPEND}
	net-wireless/bluez
	x11-apps/xset
"

DOCS=( TODO README )

EAPI=4の機能をいかして、DOCSでインストールさせています。

src_prepare() {
	use unicode || sed -i 's:-lncursesw:-lncurses:' Makefile
	epatch "${FILESDIR}"/${PN}-1.98-build.patch
	epatch "${FILESDIR}"/${PN}-1.98-build-cc.patch
	sed -i -r \
		-e '/FLAGS/s: (-O2|-g|-fno-omit-frame-pointer|-fstack-protector|-D_FORTIFY_SOURCE=2)\>: :g' \
		-e '/@\$\(CC\)/s:@::' \
		Makefile || die
}

src_configure() {
	tc-export BUILD_CC CC CXX
	CFLAGS+=" ${CPPFLAGS}" # blah!
}

src_install() {
	default
	keepdir /var/cache/powertop
}

keepdirは作成しておかねばならないディレクトリを指定します。dodirで作っているとシステムへのインストール時に消えてしまうかと思います。

pkg_postinst() {
	echo
	einfo "For PowerTOP to work best, use a Linux kernel with the"
	einfo "tickless idle (NO_HZ) feature enabled (version 2.6.21 or later)"
	echo
}

インストール後にユーザに有用な情報をログ出力しています。