# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/app-laptop/hdapsd/hdapsd-20060409-r2.ebuild,v 1.1 2008/03/30 22:29:51 welp Exp $ inherit eutils linux-info PROTECT_VER="2" DESCRIPTION="IBM ThinkPad Harddrive Active Protection disk head parking daemon" HOMEPAGE="http://hdaps.sourceforge.net/" #http://www.thinkwiki.org/wiki/HDAPS #http://article.gmane.org/gmane.linux.drivers.hdaps.devel/1045 #SRC_URI="mirror://gentoo/${P}.c.bz2 # mirror://gentoo/hdaps_protect-patches-${PROTECT_VER}.tar.bz2" LICENSE="GPL-2" SLOT="0" KEYWORDS="~x86" IUSE="" RDEPEND="" S="${WORKDIR}" src_unpack() { cp ${FILESDIR}/${P}.c ${WORKDIR} } src_compile() { # We require the hdaps module; problem is that it can come from either # kernel sources or from the tp_smapi package. This hack is required because # the linux-info eclass doesn't export any more suitable config checkers. # Here we just skip calling its pkg_setup() in case the module is provided # by the package. if ! has_version app-laptop/tp_smapi || ! built_with_use app-laptop/tp_smapi hdaps; then CONFIG_CHECK="SENSORS_HDAPS" ERROR_SENSORS_HDAPS="${P} requires support for HDAPS (CONFIG_SENSORS_HDAPS or app-laptop/tp_smapi)" linux-info_pkg_setup fi cd "${WORKDIR}" gcc ${CFLAGS} "${P}".c -o hdapsd || die "failed to compile" } src_install() { dosbin "${WORKDIR}"/hdapsd newconfd "${FILESDIR}"/hdapsd.conf hdapsd newinitd "${FILESDIR}"/hdapsd.init hdapsd # Install our kernel patches # dodoc *.patch "${FILESDIR}"/hdaps-Z60m.patch insinto /usr/share/${PN} doins "${FILESDIR}"/*.patch } # Yes, this sucks as the source location may change, kernel sources may not be # installed, but we try our best anyway kernel_patched() { get_version if grep -qs "ata_id_has_unload" "${KERNEL_DIR}"/include/linux/ata.h ; then einfo "Your kernel has already been patched for blk_freeze" return 0 fi return 1 } pkg_config() { kernel_patched && return 0 local dir="${ROOT}/usr/share/${PN}/" local p="hdaps_protect-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}.patch" # We need to find our FILESDIR as it's now lost if [[ ! -e ${dir}/${p} ]] ; then eerror "We don't have a patch for kernel ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} yet" return 1 fi if [[ ! -d ${KERNEL_DIR} ]] ; then eerror "Kernel sources not found!" return 1 fi cd "${KERNEL_DIR}" epatch "${dir}/${p}" # This is just a nice to have for me as I use a Z60m myself if ! grep -q "Z60m" "${KERNEL_DIR}"/drivers/hwmon/hdaps.c ; then epatch "${dir}"/hdaps-Z60m.patch.gz fi einfo "Now you should rebuild your kernel, its modules" einfo "and then install them." } pkg_postinst(){ [[ -n $(ls "${ROOT}"/sys/block/*/queue/protect 2>/dev/null) ]] && return 0 if ! kernel_patched ; then ewarn "Your kernel has NOT been patched for blk_freeze" elog "The ebuild can attempt to patch your kernel like so" elog " emerge --config =${PF}" fi elog "You can change the default frequency by modifing the following file:" elog "/sys/devices/platform/hdaps/sampling_rate" }