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

Contents of /eclass/mercurial.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Sat May 20 02:43:01 2006 UTC (8 years, 1 month ago) by agriffis
Branch: MAIN
add mercurial.eclass, similar to cvs.eclass etc

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/subversion.eclass,v 1.28 2006/03/20 15:01:59 hattya 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_CLONE_CMD:=hg clone} # clone cmd
21 : ${EHG_PULL_CMD:=hg pull -u} # pull cmd
22
23 # should be set but blank to prevent using $HOME/.hgrc
24 export HGRCPATH=
25
26 function mercurial_fetch {
27 declare repo=${1:-$EHG_REPO_URI} proj=${2:-${PN/-hg}}
28 repo=${repo%/} # remove trailing slash
29 [[ -n $repo ]] || die "EHG_REPO_URI is empty"
30
31 if [[ ! -d ${EHG_STORE_DIR} ]]; then
32 ebegin "create ${EHG_STORE_DIR}"
33 addwrite / &&
34 mkdir -p "${EHG_STORE_DIR}" &&
35 chmod -f o+rw "${EHG_STORE_DIR}" &&
36 export SANDBOX_WRITE="${SANDBOX_WRITE%:/}"
37 eend $? || die
38 fi
39
40 cd "${EHG_STORE_DIR}" || die "can't chdir to ${EHG_STORE_DIR}"
41 addwrite "$(pwd -P)"
42
43 if [[ ! -d ${proj}/${repo##*/} ]]; then
44 # first check out
45 ebegin "${EHG_CLONE_CMD} ${repo}"
46 mkdir -p "${proj}" &&
47 chmod -f o+rw "${proj}" &&
48 cd "${proj}" &&
49 ${EHG_CLONE_CMD} "${repo}" &&
50 cd "${repo##*/}"
51 eend $? || die
52 else
53 # update working copy
54 ebegin "${EHG_PULL_CMD} ${repo}"
55 cd "${proj}/${repo##*/}" &&
56 ${EHG_PULL_CMD}
57 eend $? || die
58 fi
59
60 # use rsync instead of cp for --exclude
61 ebegin "rsync to ${S}"
62 mkdir -p "${S}" &&
63 rsync -av --delete --exclude=.hg/ . "${S}"
64 eend $? || die
65 }
66
67 function mercurial_src_unpack {
68 mercurial_fetch
69 }

  ViewVC Help
Powered by ViewVC 1.1.20