diff options
Diffstat (limited to 'sys-fs/aufs/aufs-99999999.2.ebuild')
-rw-r--r-- | sys-fs/aufs/aufs-99999999.2.ebuild | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/sys-fs/aufs/aufs-99999999.2.ebuild b/sys-fs/aufs/aufs-99999999.2.ebuild new file mode 100644 index 00000000..f31f53ef --- /dev/null +++ b/sys-fs/aufs/aufs-99999999.2.ebuild @@ -0,0 +1,199 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header $ + +EAPI="4" +EGIT_REPO_URI="http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git" +EGIT_PROJECT="aufs2" +# BRANCH/COMMIT will be overridden in pkg_setup (according to kernel version) +EGIT_BRANCH="aufs2.2" +EGIT_COMMIT="${EGIT_BRANCH}" +[ -n "${EGIT_OFFLINE:-${ESCM_OFFLINE}}" ] || EGIT_PRUNE=true +EGIT_HAS_SUBMODULES=true +inherit git linux-info eutils + +DESCRIPTION="An entirely re-designed and re-implemented Unionfs" +HOMEPAGE="http://aufs.sourceforge.net/" + +LICENSE="GPL-2" +SLOT="0" +# Since this is a live ebuild with unstable versions in portage we require +# that the user unmasks this ebuild with ACCEPT_KEYWORDS='**' +#KEYWORDS="~amd64 ~x86" +KEYWORDS="" +IUSE="kernel-patch all-patches" +PROPERTIES="live" + +RDEPEND="" +DEPEND="dev-vcs/git[curl]" + +declare -a my_patchlist + +fill_my_patchlist() { + local i + my_patchlist=() + for i + do case "${i}" in + *.patch|*.diff) test -f "${i}" && my_patchlist+=("${i}") + ;; + esac + done + : +} + +apply_my_patch() { + local r + r='' + if [ ${#} -gt 1 ] + then shift + r='-R' + fi + patch ${r} -p1 --dry-run --force <"${1}" >/dev/null || return + einfo "Applying kernel patch ${1}${r:+ reversely}" + patch ${r} -p1 --force --no-backup-if-mismatch <"${1}" >/dev/null || { + eerror "applying kernel patch ${1}${r:+ reversely} failed." + eerror "Since dry run succeeded this is probably a problem with write permissions." + die "With USE=-kernel-patch you avoid automatic patching attempts." + } +} + +apply_my_patchlist() { + local r i + r='' + if [ "${#}" -gt 0 ] + then shift + r='-R' + fi + set -- + for i in "${my_patchlist[@]}" + do if use all-patches || case "${i}" in + aufs*) :;; + *) false;; + esac + then apply_my_patch ${r} "${i}" || set -- "${@}" "${i}" + else einfo "Kernel patch ${i} - skipping as all-patches is not set" + fi + done + for i + do apply_my_patch ${r} "${i}" || \ + ewarn "Kernel patch ${i} cannot be${r:+ reverse} applied - skipping." + done +} + +pkg_setup() { + local msg + linux-info_pkg_setup + + # kernel version check + if kernel_is lt 2 6 26 + then + eerror "${PN} is being developed and tested on linux-2.6.26 and later." + eerror "Make sure you have a proper kernel version!" + die "Wrong kernel version" + fi + + if [ -n "${AUFSBRANCH}" ] + then EGIT_BRANCH="${AUFSBRANCH}" + else if kernel_is lt 3 0 + then [ -n "${KV_PATCH}" ] && EGIT_BRANCH="aufs2.2-${KV_PATCH}" + else [ -n "${KV_MINOR}" ] && EGIT_BRANCH="aufs2.2-${KV_MAJOR}.${KV_MINOR}" + fi + fi + elog + elog "Using aufs branch: ${EGIT_BRANCH}" + elog "If this guess for the branch is wrong, set AUFSBRANCH." + elog "For example, to use the aufs2.2 branch for kernel version 3.0, use:" + elog " AUFSBRANCH=aufs2.2-3.0 emerge -1 aufs" + elog "To use the aufs2.1 branch for kernel version 2.6.39 use:" + elog " AUFSBRANCH=aufs2.1-39 emerge -1 aufs" + msg='' + [ -n "${ESCM_OFFLINE}" ] && msg="${msg} ESCM_OFFLINE=''" + [ -n "${EGIT_OFFLINE}" ] && msg="${msg} EGIT_OFFLINE=''" + if [ -n "${msg}" ] + then + elog "Note that it might be necessary in addition to fetch the newest aufs:" + elog "Set ${msg# } and be sure to be online during emerge." + fi + elog + EGIT_COMMIT="${EGIT_BRANCH}" + + use kernel-patch || return 0 + ( + set -- + cd -- "${KV_DIR}" >/dev/null 2>&1 && \ + fill_my_patchlist *.patch *.diff && apply_my_patchlist -R + ) +} + +src_prepare() { + local i j w v newest all + all="2.2.0 2.2.1 2.2.2 2.2.2.r1" + newest="${all##* }" + v='' + for i in ${GRSECURITYPATCHVER-+} + do case "${i}" in + '+') j="${newest}";; + '*') j="${all}";; + *) w=: + for j in ${all} + do [ "${i}" = "${j}" ] && w=false && continue + done + if ${w} + then warn "GRSECURITYPATCHVER contains bad version ${i}" + else j="${i}" + fi + ;; + esac + v="${v} ${j}" + done + v="${v# }" + elog + elog "Using GRSECURITYPATCHVER: ${v}" + elog "If you want other patches, set GRSECURITYPATCHVER to some or more of:" + elog "${all} +" + elog "The special value + means the newest version (${newest}) and is default." + elog "The special value * means all versions." + elog + for i in ${v} + do j="grsecurity-${i}.patch" + cp -p -- "${FILESDIR}/${j}" "aufs-${j}" || die "copying ${j} failed" + done +} + +src_configure() { + : +} + +src_compile() { + : +} + +src_install() { + local i k dk + i="Documentation/filesystems/aufs/aufs.5" + test -e "${i}" && doman "${i}" + k="$(readlink -f -- "${KV_DIR}")" && [ -n "${k}" ] || k="${KV_DIR}" + dk="${D}/${k}" + dodir "${k}/fs/aufs" + cp -pPR -- fs/aufs/* "${dk}/fs/aufs" + cp -pPR -- include "${dk}" + find "${dk}"/include -name Kbuild -type f -exec rm -v -- '{}' ';' + fill_my_patchlist *.patch *.diff + cp -pPR -- "${my_patchlist[@]}" "${dk}" +} + +pkg_postinst() { + [ "${#my_patchlist[@]}" -eq 0 ] && { + cd -- "${KV_DIR}" >/dev/null 2>&1 && fill_my_patchlist *.patch *.diff + } + if use kernel-patch + then cd -- "${KV_DIR}" >/dev/null 2>&1 || die "cannot cd to ${KV_DIR}" + apply_my_patchlist + elog "Your kernel has been patched. Cleanup and recompile it, selecting" + else elog "You will have to apply the following patch to your kernel:" + elog " cd ${KV_DIR} && cat ${my_patchlist[*]} | patch -p1 --no-backup-if-mismatch" + elog "Then cleanup and recompile your kernel, selecting" + fi + elog " Filesystems/Miscellaneous Filesystems/aufs" + elog "in the configuration phase." +} |