+++ /dev/null
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-inherit eutils linux-mod
-
-DESCRIPTION="An entirely re-designed and re-implemented Unionfs."
-HOMEPAGE="http://aufs.sourceforge.net/"
-SRC_URI="http://dev.gentooexperimental.org/~tommy/distfiles/${P}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE="debug fuse hinotify nfs nfsexport robr sec_perm"
-
-S="${WORKDIR}"/aufs
-
-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
-
- # Check for applicability of lhash patch for NFS branch support
- if use nfs && kernel_is ge 2 6 19 ; then
- APPLY_LHASH_PATCH="n"
- # If lhash patch is not applied
- if ! grep -qs "EXPORT_SYMBOL(__lookup_hash);" "${KV_DIR}/fs/namei.c" \
- && ! grep -qs "struct dentry * __lookup_hash(struct qstr *name, struct dentry * base, struct nameidata *nd);" "${KV_DIR}/fs/namei.h" ; then
- APPLY_LHASH_PATCH="y"
- APPLY_KERNEL_PATCH="y"
- 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
-
- # if the lhash patch has to be applied
- if [[ ${APPLY_LHASH_PATCH} == "y" ]] ; then
- if kernel_is ge 2 6 24 ; then
- epatch "${FILESDIR}"/${PN}-lhash-2.6.24.patch
- else
- if kernel_is ge 2 6 22 ; then
- epatch "${FILESDIR}"/${PN}-lhash-2.6.22.patch
- else
- epatch "${FILESDIR}"/${PN}-lhash-2.6.19.patch
- fi
- fi
- fi
- fi
-
- linux-mod_pkg_setup
-}
-
-src_unpack(){
- unpack ${A}
- 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 lhash in priv_def.mk
- if use nfs && kernel_is ge 2 6 19 ; then
- echo "CONFIG_AUFS_LHASH_PATCH = y" >> priv_def.mk || die "setting lhash 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
-}
-
-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 || die
- doman aufs.5 || die
- 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 || use nfs; 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
-}