summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorBertrand Jacquin <beber@meleeweb.net>2005-10-25 20:06:16 +0000
committerBertrand Jacquin <beber@meleeweb.net>2005-10-25 20:06:16 +0000
commita2c4da6c6d7651cbd09564ea6f5ad49e471f3afd (patch)
treed5cdbaa53faa200779b6643ff7e6a8da99130fcc /eclass
parentUpdate digest (diff)
downloadportage-a2c4da6c6d7651cbd09564ea6f5ad49e471f3afd.tar.xz
Some new ebuilds
Diffstat (limited to 'eclass')
-rw-r--r--eclass/git.eclass136
1 files changed, 136 insertions, 0 deletions
diff --git a/eclass/git.eclass b/eclass/git.eclass
new file mode 100644
index 00000000..db130615
--- /dev/null
+++ b/eclass/git.eclass
@@ -0,0 +1,136 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+# Nonofficial eclass by Ycarus. For new version look here : http://gentoo.zugaina.org/
+# This is a modified version of the subversion eclass
+
+## --------------------------------------------------------------------------- #
+# Author: Ycarus <ycarus@zugaina.org>
+#
+# The git eclass is written to fetch the software sources from
+# git repositories like the cvs eclass.
+#
+#
+# Description:
+# If you use this eclass, the ${S} is ${WORKDIR}/${P}.
+# It is necessary to define the EGIT_REPO_URI variables at least.
+#
+## --------------------------------------------------------------------------- #
+
+inherit eutils
+
+ECLASS="git"
+INHERITED="${INHERITED} ${ECLASS}"
+EGIT="git.eclass"
+
+EXPORT_FUNCTIONS src_unpack
+
+HOMEPAGE="http://kernel.org/pub/software/scm/git/"
+DESCRIPTION="GIT eclass"
+
+
+## -- add cogito in DEPEND
+#
+DEPEND="dev-util/cogito"
+
+
+## -- EGIT_STORE_DIR: subversion sources store directory
+#
+EGIT_STORE_DIR="${DISTDIR}/git-src"
+
+
+## -- EGIT_FETCH_CMD: subversion fetch command
+#
+# default: git checkout
+#
+[ -z "${EGIT_FETCH_CMD}" ] && EGIT_FETCH_CMD="cg-clone"
+[ -z "${EGIT_UPDATE_CMD}" ] && EGIT_UPDATE_CMD="cg-update"
+
+
+## -- EGIT_REPO_URI: repository uri
+#
+[ -z "${EGIT_REPO_URI}" ] && EGIT_REPO_URI=""
+
+
+## -- EGIT_PROJECT: project name of your ebuild
+#
+# git eclass will check out the subversion repository like:
+#
+# ${EGIT_STORE_DIR}/${EGIT_PROJECT}/${EGIT_REPO_URI##*/}
+#
+#
+# default: ${PN/-git}.
+#
+[ -z "${EGIT_PROJECT}" ] && EGIT_PROJECT="${PN/-git}"
+
+
+## -- git_fetch() ------------------------------------------------- #
+
+function git_fetch() {
+ # EGIT_REPO_URI is empty.
+ [ -z "${EGIT_REPO_URI}" ] && die "${EGIT}: EGIT_REPO_URI is empty."
+ EGIT_REPO_URI="${EGIT_REPO_URI} ${EGIT_PROJECT}"
+ # check for the protocol.
+ case ${EGIT_REPO_URI%%:*} in
+ rsync) ;;
+ ssh) ;;
+ *)
+ die "${EGITN}: fetch from "${EGIT_REPO_URI%:*}" is not yet implemented."
+ ;;
+ esac
+
+ if [ ! -d "${EGIT_STORE_DIR}" ]; then
+ debug-print "${FUNCNAME}: initial checkout. creating git directory"
+
+ addwrite /
+ mkdir -p "${EGIT_STORE_DIR}" || die "${EGIT}: can't mkdir ${EGIT_STORE_DIR}."
+ chmod -f o+rw "${EGIT_STORE_DIR}" || die "${EGIT}: can't chmod ${EGIT_STORE_DIR}."
+ export SANDBOX_WRITE="${SANDBOX_WRITE%%:/}"
+ fi
+
+ cd -P "${EGIT_STORE_DIR}" || die "${EGIT}: 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_CO_DIR="${EGIT_PROJECT}/${EGIT_PROJECT}"
+ if [ ! -d "${EGIT_CO_DIR}/.git" ]; then
+ # first check out
+ einfo "git check out start -->"
+ einfo " checkout from: ${EGIT_REPO_URI}"
+
+ mkdir -p "${EGIT_PROJECT}" || die "${EGIT}: can't mkdir ${EGIT_PROJECT}."
+ chmod -f o+rw "${EGIT_PROJECT}" || die "${EGIT}: can't chmod ${EGIT_PROJECT}."
+ cd "${EGIT_PROJECT}"
+ ${EGIT_FETCH_CMD} ${EGIT_REPO_URI} || die "${EGIT}: can't fetch from ${EGIT_REPO_URI}."
+
+ einfo " checkouted in: ${EGIT_STORE_DIR}/${EGIT_CO_DIR}"
+
+ else
+ # update working copy
+ einfo "git update start -->"
+ einfo " update from: ${EGIT_REPO_URI}"
+ cd "${EGIT_CO_DIR}"
+ ${EGIT_UPDATE_CMD} || die "${EGIT}: can't update from ${EGIT_REPO_URI}."
+ einfo " updated in: ${EGIT_STORE_DIR}/${EGIT_CO_DIR}"
+
+ fi
+
+ # copy to the ${WORKDIR}
+ cp -Rf "${EGIT_STORE_DIR}/${EGIT_CO_DIR}" "${S}" || die "${EGIT}: can't copy to ${S}."
+ einfo " copied to: ${S}"
+ echo
+
+}
+
+## -- git_src_unpack() ------------------------------------------------ #
+
+function git_src_unpack() {
+
+ if [ "${A}" != "" ]; then
+ unpack ${A}
+ fi
+ git_fetch || die "${EGIT}: unknown problem in git_fetch()."
+}