blob: e7e8fad16962242b77d486bb5bbd1a255100340c [file] [log] [blame]
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=5
inherit versionator eutils toolchain-funcs linux-info autotools flag-o-matic
DESCRIPTION="Misc tools bundled with kernel sources"
HOMEPAGE="https://kernel.org/"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~x86"
IUSE="static-libs tcpd"
MY_PV="${PV/_/-}"
MY_PV="${MY_PV/-pre/-git}"
LINUX_V=$(get_version_component_range 1-2)
if [ ${PV/_rc} != ${PV} ]; then
LINUX_VER=$(get_version_component_range 1-2).$(($(get_version_component_range 3)-1))
PATCH_VERSION=$(get_version_component_range 1-3)
LINUX_PATCH=patch-${PV//_/-}.bz2
SRC_URI="mirror://kernel/linux/kernel/v${LINUX_V}/testing/${LINUX_PATCH}
mirror://kernel/linux/kernel/v${LINUX_V}/testing/v${PATCH_VERSION}/${LINUX_PATCH}"
elif [ $(get_version_component_count) == 4 ]; then
# stable-release series
LINUX_VER=$(get_version_component_range 1-3)
LINUX_PATCH=patch-${PV}.bz2
SRC_URI="mirror://kernel/linux/kernel/v${LINUX_V}/${LINUX_PATCH}"
else
LINUX_VER=${PV}
fi
LINUX_SOURCES=linux-${LINUX_VER}.tar.bz2
SRC_URI="${SRC_URI} mirror://kernel/linux/kernel/v${LINUX_V}/${LINUX_SOURCES}"
# pmtools also provides turbostat
# sysfsutils and glib for usbip - remove sysfsutils in 3.7 or 3.8
RDEPEND="sys-apps/hwids
>=sys-fs/sysfsutils-2
>=dev-libs/glib-2.6
tcpd? ( sys-apps/tcp-wrappers )
!sys-power/pmtools
!net-misc/usbip"
DEPEND="${RDEPEND}
virtual/pkgconfig"
S="${WORKDIR}/linux-${LINUX_VER}"
# All of these are integrated with the kernel build system,
# No make install, and ideally build with with the root Makefile
TARGETS_SIMPLE=(
Documentation/accounting/getdelays.c
Documentation/cgroups/cgroup_event_listener.c
Documentation/laptops/dslm.c
Documentation/laptops/hpfall.c
Documentation/networking/timestamping/timestamping.c
Documentation/watchdog/src/watchdog-simple.c
tools/lguest/lguest.c
tools/vm/page-types.c
tools/vm/slabinfo.c
usr/gen_init_cpio.c
)
# tools/hv/hv_kvp_daemon.c - broken in 3.7 by missing linux/hyperv.h userspace
# Documentation/networking/ifenslave.c - obsolete
# Documentation/ptp/testptp.c - pending linux-headers-3.0
# These have a broken make install, no DESTDIR
TARGET_MAKE_SIMPLE=(
tools/firewire:nosy-dump
tools/power/x86/turbostat:turbostat
tools/power/x86/x86_energy_perf_policy:x86_energy_perf_policy
Documentation/misc-devices/mei:mei-amt-version
)
# tools/perf - covered by dev-utils/perf
# tools/usb - testcases only
# tools/virtio - testcaes only
#for _pattern in {Documentation,scripts,tools,usr,include,lib,"arch/*/include",Makefile,Kbuild,Kconfig}; do
src_unpack() {
unpack ${LINUX_SOURCES}
MY_A=
for _AFILE in ${A}; do
[[ ${_AFILE} == ${LINUX_SOURCES} ]] && continue
[[ ${_AFILE} == ${LINUX_PATCH} ]] && continue
MY_A="${MY_A} ${_AFILE}"
done
[[ -n ${MY_A} ]] && unpack ${MY_A}
}
src_prepare() {
if [[ -n ${LINUX_PATCH} ]]; then
epatch "${DISTDIR}"/${LINUX_PATCH}
fi
pushd drivers/staging/usbip/userspace >/dev/null &&
eautoreconf -i -f -v &&
popd >/dev/null || die "usbip"
sed -i \
-e '/^nosy-dump.*LDFLAGS/d' \
-e '/^nosy-dump.*CFLAGS/d' \
-e '/^nosy-dump.*CPPFLAGS/s,CPPFLAGS =,CPPFLAGS +=,g' \
"${S}"/tools/firewire/Makefile
}
kernel_asm_arch() {
a="${1:${ARCH}}"
case ${a} in
# Merged arches
x86|amd64) echo x86 ;;
ppc*) echo powerpc ;;
# Non-merged
alpha|arm|ia64|m68k|mips|sh|sparc*) echo ${1} ;;
*) die "TODO: Update the code for your asm-ARCH symlink" ;;
esac
}
src_configure() {
cd drivers/staging/usbip/userspace && \
econf \
$(use_enable static-libs static) \
$(use tcpd || echo --without-tcp-wrappers) \
--with-usbids-dir=/usr/share/misc
}
src_compile() {
local karch=$(kernel_asm_arch "${ARCH}")
# This is the minimal amount needed to start building host binaries.
#emake allmodconfig ARCH=${karch}
#emake prepare modules_prepare ARCH=${karch}
#touch Module.symvers
# Now we can start building
for s in ${TARGETS_SIMPLE[@]} ; do
dir=$(dirname $s) src=$(basename $s) bin=${src%.c}
einfo "Building $s => $bin"
emake -f /dev/null M=${dir} ARCH=${karch} ${s%.c}
done
for t in ${TARGET_MAKE_SIMPLE[@]} ; do
dir=${t/:*} target=${t/*:}
einfo "Building $dir => $target"
emake -C $dir ARCH=${karch} $target
done
emake -C drivers/staging/usbip/userspace
}
src_install() {
into /usr
for s in ${TARGETS_SIMPLE[@]} ; do
dir=$(dirname $s) src=$(basename $s) bin=${src%.c}
einfo "Installing $s => $bin"
dosbin ${dir}/${bin}
done
for t in ${TARGET_MAKE_SIMPLE[@]} ; do
dir=${t/:*} target=${t/*:}
einfo "Installing $dir => $target"
dosbin ${dir}/${target}
done
pushd drivers/staging/usbip/userspace >/dev/null \
|| die "Missing usbip/userspace"
emake DESTDIR="${D}" install
newdoc README README.usbip
newdoc AUTHORS AUTHORS.usbip
dodoc ../usbip_protocol.txt
popd >/dev/null
newconfd "${FILESDIR}"/hpfall.confd hpfall
newinitd "${FILESDIR}"/hpfall.initd hpfall
prune_libtool_files
}
pkg_postinst() {
echo
elog "The cpupower utility is maintained separately at sys-power/cpupower"
}