/[gentoo-x86]/eclass/mercurial.eclass
Gentoo

Contents of /eclass/mercurial.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations) (download)
Thu Jun 8 15:47:17 2006 UTC (8 years, 5 months ago) by agriffis
Branch: MAIN
Changes since 1.1: +22 -17 lines
Update mercurial.eclass per conversation with zzam, http://article.gmane.org/gmane.linux.gentoo.devel/38465

1 # Copyright 1999-2006 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/mercurial.eclass,v 1.1 2006/05/20 02:43:01 agriffis Exp $
4
5 # mercurial: Fetch sources from mercurial repositories, similar to cvs.eclass.
6 # To use this from an ebuild, set EHG_REPO_URI in your ebuild. Then either
7 # leave the default src_unpack or call mercurial_src_unpack.
8
9 inherit eutils
10
11 EXPORT_FUNCTIONS src_unpack
12
13 DEPEND="dev-util/mercurial net-misc/rsync"
14 EHG_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/hg-src"
15
16 # This must be set by the ebuild
17 : ${EHG_REPO_URI:=} # repository uri
18
19 # These can be set by the ebuild but are usually fine as-is
20 : ${EHG_PROJECT:=$PN} # dir under EHG_STORE_DIR
21 : ${EHG_CLONE_CMD:=hg clone} # clone cmd
22 : ${EHG_PULL_CMD:=hg pull -u} # pull cmd
23
24 # should be set but blank to prevent using $HOME/.hgrc
25 export HGRCPATH=
26
27 function mercurial_fetch {
28 declare repo=${1:-$EHG_REPO_URI}
29 repo=${repo%/} # remove trailing slash
30 [[ -n $repo ]] || die "EHG_REPO_URI is empty"
31 declare module=${2:-${repo##*/}}
32
33 if [[ ! -d ${EHG_STORE_DIR} ]]; then
34 ebegin "create ${EHG_STORE_DIR}"
35 addwrite / &&
36 mkdir -p "${EHG_STORE_DIR}" &&
37 chmod -f o+rw "${EHG_STORE_DIR}" &&
38 export SANDBOX_WRITE="${SANDBOX_WRITE%:/}"
39 eend $? || die
40 fi
41
42 pushd "${EHG_STORE_DIR}" >/dev/null \
43 || die "can't chdir to ${EHG_STORE_DIR}"
44 addwrite "$(pwd -P)"
45
46 if [[ ! -d ${EHG_PROJECT}/${module} ]]; then
47 # first check out
48 ebegin "${EHG_CLONE_CMD} ${repo}"
49 mkdir -p "${EHG_PROJECT}" &&
50 chmod -f o+rw "${EHG_PROJECT}" &&
51 cd "${EHG_PROJECT}" &&
52 ${EHG_CLONE_CMD} "${repo}" "${module}" &&
53 cd "${module}"
54 eend $? || die
55 else
56 # update working copy
57 ebegin "${EHG_PULL_CMD} ${repo}"
58 cd "${EHG_PROJECT}/${module}" &&
59 ${EHG_PULL_CMD}
60 eend $? || die
61 fi
62
63 # use rsync instead of cp for --exclude
64 ebegin "rsync to ${WORKDIR}/${module}"
65 mkdir -p "${WORKDIR}/${module}" &&
66 rsync -a --delete --exclude=.hg/ . "${WORKDIR}/${module}"
67 eend $? || die
68
69 popd >/dev/null
70 }
71
72 function mercurial_src_unpack {
73 mercurial_fetch
74 }

  ViewVC Help
Powered by ViewVC 1.1.20