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

Contents of /eclass/mercurial.eclass

Parent Directory Parent Directory | Revision Log Revision Log


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

1 agriffis 1.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