inherit eutils versionator EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_preinst pkg_postinst ZEN="zen.eclass" ARCH_LIST="-alpha -arm -avr32 -blackfin -cris -frv -h8300 -ia64 -m32r -m68k -m68knommu -mips -parisc -powerpc -ppc -s390 -sh -sh64 -sparc -sparc64 -um -v850 x86 -xtensa" DESCRIPTION="Zen-Sources" LICENSE="GPL-2" KEYWORDS="amd64 ~ppc ~sparc x86 ~hppa ~mips ~ppc64 ~alpha ~ia64" PROVIDE="virtual/linux-sources" SLOT="0" IUSE="symlink ${ARCH_LIST}" RESTRICT="nomirror" DEPEND=">=dev-util/git-1.5" ZEN_REV=${PR/r/} KV=${PV/_rc/-rc}-zen${ZEN_REV} S=${WORKDIR}/linux-${KV} EGIT_TAG=v${KV} EGIT_REPO_URI="git://repo.or.cz/linux-2.6/zen-sources.git" EGIT_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/git-src" EGIT_FETCH_CMD="git clone --bare" EGIT_UPDATE_CMD="git fetch -f -u" EGIT_DIFFSTAT_CMD="git diff --stat" : ${EGIT_OPTIONS:=} : ${EGIT_PROJECT:=${PN/-git}} : ${EGIT_BRANCH:=master} : ${EGIT_TREE:=${EGIT_BRANCH}} : ${EGIT_TAG:=} git_fetch() { local EGIT_CLONE_DIR [[ -z ${EGIT_REPO_URI} ]] && die "${ZEN}: EGIT_REPO_URI is empty." if [[ ! -d ${EGIT_STORE_DIR} ]] ; then addwrite / mkdir -p "${EGIT_STORE_DIR}" \ || die "${ZEN}: can't mkdir ${EGIT_STORE_DIR}." chmod -f o+rw "${EGIT_STORE_DIR}" \ || die "${ZEN}: can't chmod ${EGIT_STORE_DIR}." export SANDBOX_WRITE="${SANDBOX_WRITE%%:/}" fi cd -P "${EGIT_STORE_DIR}" || die "${ZEN}: can't chdir to ${EGIT_STORE_DIR}" EGIT_STORE_DIR=${PWD} # every time addwrite "${EGIT_STORE_DIR}" [[ -z ${EGIT_REPO_URI##*/} ]] && EGIT_REPO_URI="${EGIT_REPO_URI%/}" EGIT_CLONE_DIR="${EGIT_PROJECT}" export GIT_DIR="${EGIT_CLONE_DIR}" if [[ ! -d ${EGIT_CLONE_DIR} ]] ; then ${EGIT_FETCH_CMD} ${EGIT_OPTIONS} "${EGIT_REPO_URI}" ${EGIT_PROJECT} \ || die "${ZEN}: can't fetch from ${EGIT_REPO_URI}." git config remote.origin.url "${EGIT_REPO_URI}" else git config remote.origin.url "${EGIT_REPO_URI}" local oldsha1=$(git rev-parse ${EGIT_BRANCH}) ${EGIT_UPDATE_CMD} ${EGIT_OPTIONS} origin ${EGIT_BRANCH}:${EGIT_BRANCH} \ || die "${ZEN}: can't update from ${EGIT_REPO_URI}." ${EGIT_DIFFSTAT_CMD} ${oldsha1}..${EGIT_BRANCH} | cat fi mkdir -p "${S}" if [[ -n ${EGIT_TAG} ]]; then git archive --format=tar ${EGIT_TAG} | ( cd "${S}" ; tar xf - ) else git archive --format=tar ${EGIT_TREE} | ( cd "${S}" ; tar xf - ) fi cd ${S} local exclude exclude=$(echo ${ARCH_LIST} | sed s/-//g | sed s/s390//) for arch in ${exclude}; do if ! use ${arch}; then rm -r arch/${arch}; rm -r include/asm-${arch} fi done } postinst_sources() { if use symlink; then eselect kernel set linux-${KV} fi } zen-sources_src_unpack() { git_fetch || die "${ZEN}: unknown problem in git_fetch()." } zen-sources_src_compile() { cd "${S}" } zen-sources_src_install() { dodir /usr/src mv ${WORKDIR}/linux* ${D}/usr/src/ } zen-sources_pkg_postinst() { postinst_sources einfo einfo "Zen-Sources brought to you by:" einfo einfo "Miguel Boton " einfo "Ryan Hope " }