# Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/x11-misc/i3status/i3status-2.4.ebuild,v 1.4 2012/03/24 17:28:33 phajdan.jr Exp $ EAPI=4 inherit toolchain-funcs versionator DESCRIPTION="generates a status bar for dzen2, xmobar or similar" HOMEPAGE="http://i3wm.org/i3status/" SRC_URI="http://i3wm.org/${PN}/${P}.tar.bz2" LICENSE="BSD" SLOT="0" KEYWORDS="amd64 x86" IUSE="+caps" RDEPEND="dev-libs/confuse media-libs/alsa-lib net-wireless/wireless-tools" DEPEND="${RDEPEND} caps? ( sys-libs/libcap )" # borrowed from GSoC2010_Gentoo_Capabilities by constanze and flameyeys # @FUNCTION: fcaps # @USAGE: fcaps {uid:gid} {file-mode} {cap1[,cap2,...]} {file} # @RETURN: 0 if all okay; non-zero if failure and fallback # @DESCRIPTION: # fcaps sets the specified capabilities in the effective and permitted set of # the given file. In case of failure fcaps sets the given file-mode. # Requires versionator.eclass fcaps() { local uid_gid=$1 local perms=$2 local capset=$3 local path=$4 local res chmod $perms $path && \ chown $uid_gid $path res=$? use caps || return $res #set the capability setcap "$capset=ep" "$path" &> /dev/null #check if the capabilitiy got set correctly setcap -v "$capset=ep" "$path" &> /dev/null res=$? if [ $res -ne 0 ]; then ewarn "Failed to set capabilities. Probable reason is missing kernel support." ewarn "Your kernel must have _FS_SECURITY enabled (e.g. EXT4_FS_SECURITY)" ewarn "where is the filesystem to store ${path}" if ! version_is_at_least 2.6.33 "$(uname -r)"; then ewarn "For kernel 2.6.32 or older, you will also need to enable" ewarn "SECURITY_FILE_CAPABILITIES." fi ewarn ewarn "Falling back to suid now..." chmod u+s ${path} fi return $res } pkg_setup() { tc-export CC } src_prepare() { sed -e "/@echo/d" -e "s:@\$(:\$(:g" -e "/setcap/d" \ -e '/CFLAGS+=-g/d' -i Makefile || die } pkg_postinst() { fcaps 0:users 550 cap_net_admin "${ROOT}"/usr/bin/${PN} elog "You need to install x11-misc/xmobar or x11-misc/dzen to use ${PN}." elog "Please refer to manual: man ${PN}" }