# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ /var/cvsroot/gentoo-x86/sys-fs/aufs/aufs-9999.ebuild inherit eutils linux-mod cvs ECVS_SERVER="aufs.cvs.sourceforge.net:/cvsroot/aufs" ECVS_MODULE="aufs" ECVS_CO_OPTS="" ECVS_UP_OPTS="-dP" DESCRIPTION="An entirely re-designed and re-implemented Unionfs." HOMEPAGE="http://aufs.sourceforge.net/" SRC_URI="" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="debug fuse hinotify nfsexport robr sec_perm" S="${WORKDIR}/${ECVS_MODULE}" MODULE_NAMES="aufs(misc:${S})" pkg_setup() { # kernel version check if kernel_is lt 2 6 16 ; then eerror "${PN} is being developed and tested on linux-2.6.16 and later." eerror "Make sure you have a proper kernel version!" die "Wrong kernel version" fi get_version # assume no kernel patches will be applied today APPLY_KERNEL_PATCH="n" # Check if sec_perm patch needs to be applied if kernel_is ge 2 6 24 && linux_chkconfig_present "SECURITY" ; then APPLY_SEC_PERM_PATCH="n" if ! grep -qs "EXPORT_SYMBOL(security_inode_permission);" "${KV_DIR}/security/security.c" ; then APPLY_SEC_PERM_PATCH="y" APPLY_KERNEL_PATCH="y" fi # make sure the user is allowing this to happen if [[ APPLY_SEC_PERM_PATCH = "y" ]] && ! use sec_perm; then eerror "${PN} requires that all kernels with CONFIG_SECURITY enabled >= 2.6.24" eerror "be patched. Please enable USE=\"sec_perm\" to allow this patch to be" eerror "applied." die "Invalid configuration" fi # Also check to make sure they aren't enabling it when they don't need to else if use sec_perm ; then eerror "${PN} does not require the sec_perm patch to be applied to your kernel." eerror "Please disabe the sec_perm USE flag: USE=\"-sec_perm\"." die "Invalid configuration" fi fi # If a patch has to be applied if [[ ${APPLY_KERNEL_PATCH} == "y" ]] ; then ewarn "Patching your kernel..." cd ${KV_DIR} # If the sec_perm patch has to be applied if [[ ${APPLY_SEC_PERM_PATCH} == "y" ]] ; then epatch "${FILESDIR}"/${P}-sec_perm-2.6.24.patch fi fi linux-mod_pkg_setup } src_unpack(){ cvs_src_unpack || die cd "${S}" # Enable hinotify in priv_def.mk if use hinotify && kernel_is ge 2 6 18 ; then echo "CONFIG_AUFS_HINOTIFY = y" >> priv_def.mk || die "setting hinotify in priv_def.mk failed!" fi # Disable SYSAUFS for kernel less than 2.6.18 if kernel_is lt 2 6 18 ; then echo "CONFIG_AUFS_SYSAUFS = " >> priv_def.mk || die "unsetting sysaufs in priv_def.mk failed!" fi # Enable nfsexport in priv_def.mk if use nfsexport && kernel_is ge 2 6 18 ; then echo "CONFIG_AUFS_EXPORT = y" >> priv_def.mk || die "setting export in priv_def.mk failed!" fi # Enable aufs readonly-branch in priv_def.mk if use robr ; then echo "CONFIG_AUFS_ROBR = y" >> priv_def.mk || die "setting robr in priv_def.mk failed!" fi # Enable FUSE workaround for AUFS if use fuse ; then echo "CONFIG_AUFS_WORKAROUND_FUSE = y" >> priv_def.mk || die "setting workaround_fuse in priv_def.mk failed!" fi # Enable / Disable debugging if use debug ; then echo "CONFIG_AUFS_DEBUG = y" >> priv_def.mk || die "setting debug in priv_dev.mk failed!" else echo "CONFIG_AUFS_DEBUG = " >> priv_def.mk || die "setting debug in priv_dev.mk failed!" fi # Check if a vserver-kernel is installed if [[ -e ${KV_DIR}/include/linux/vserver ]] ; then einfo "vserver kernel seems to be installed" einfo "using vserver patch" echo "AUFS_DEF_CONFIG = -DVSERVER" >> priv_def.mk || die "setting vserver in priv_def.mk failed!" fi # Check version 2.6.29 if kernel_is ge 2 6 29 ; then einfo "Applying 2.6.29 patch!" epatch "${FILESDIR}"/${P}-compile-fix.patch fi } src_compile() { use x86 && ARCH=i386 use amd64 && ARCH=x86_64 emake KDIR=${KV_DIR} SUBLEVEL=${KV_PATCH} -f local.mk || die "emake failed" } src_install() { cd util exeinto /sbin exeopts -m0500 doexe mount.aufs umount.aufs auplink aulchown doman aufs.5 insinto /etc/default newins etc_default_aufs aufs || die linux-mod_src_install } pkg_postinst() { elog "To be able to use aufs, you have to load the kernel module by typing:" elog "modprobe aufs" elog "For further information refer to the aufs man page" if use sec_perm ; then ewarn "Your kernel has been patched in order to export security" ewarn "permissions. You will need to recompile your kernel with" ewarn "this new patch in order for ${PN} to function." fi linux-mod_pkg_postinst }