aboutsummaryrefslogtreecommitdiff
blob: 9db6d3a168f727b7b4144a726bc693ad66ad7fae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

# @ECLASS: mozilla-scm-fetch.eclass
# @MAINTAINER:
# Sardem FF7 <sardemff7.pub@gmail.com>
# @BLURB: This eclass provides Mozilla SCM fetching support

MOZ_HG_BASE_URI="http://hg.mozilla.org"

XULRUNNER_HG_MODULE="mozilla-central"
MOZDOM_HG_MODULE="dom-inspector"
THUNDERBIRD_HG_MODULE="comm-central"
LDAP_SDKS_HG_MODULE="projects/ldap-sdks"

# Enigmail CVS stuff
ECVS_USER="guest"
ECVS_PASS="guest"
ECVS_SERVER="mozdev.org:/cvs"
ECVS_MODULE="enigmail/src"

inherit eutils

MOZ_HG_BASE_URI="http://hg.mozilla.org"


# @ECLASS-VARIABLE: XULRUNNER_HG_MODULE
# @DESCRIPTION:
# The xulrunner module to use
#
# Default to mozilla-central, you may want
# to use mozilla-aurora
: ${XULRUNNER_HG_MODULE:=mozilla-central}
MOZDOM_HG_MODULE="dom-inspector"

LICENSE="|| ( MPL-1.1 GPL-2 LGPL-2.1 )"
SLOT="0"
SRC_URI=""
S="${WORKDIR}/${XULRUNNER_HG_MODULE}"

# @ECLASS-VARIABLE: EHG_STORE_DIR
# @DESCRIPTION:
# Mercurial sources store directory. Users may override this in /etc/make.conf
: ${EHG_STORE_DIR:=${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/hg-src}


# @ECLASS-VARIABLE: EHG_QUIET
# @DESCRIPTION:
# Force the Mercurial commands to be quiet

# @ECLASS-VARIABLE: EHG_CLONE_CMD
: ${EHG_CLONE_CMD:=hg clone ${EHG_QUIET:+--quiet} --pull --noupdate}

# @ECLASS-VARIABLE: EHG_PULL_CMD
: ${EHG_PULL_CMD:=hg pull ${EHG_QUIET:+--quiet}}

# @ECLASS-VARIABLE: EHG_OFFLINE
# @DESCRIPTION:
# Should be non-empty if offline to avoid cloning/updating
: ${EHG_OFFLINE:=${ESCM_OFFLINE}}

function moz_hg_fetch {
	[[ -n "${EHG_OFFLINE}" ]] && return
	debug-print-function ${FUNCNAME} ${*}

	local repo=${1}
	local module="$(basename "${repo}")"


	# Should be set but blank to prevent using $HOME/.hgrc
	export HGRCPATH=

	# Check ${EHG_STORE_DIR} directory:
	addwrite "$(dirname "${EHG_STORE_DIR}")" || die "addwrite failed"
	if [[ ! -d "${EHG_STORE_DIR}" ]]; then
		mkdir -p "${EHG_STORE_DIR}" || die "failed to create ${EHG_STORE_DIR}"
		chmod -f g+rw "${EHG_STORE_DIR}" || \
			die "failed to chown ${EHG_STORE_DIR}"
	fi

	# Create project directory:
	mkdir -p "${EHG_STORE_DIR}/mozilla" || \
		die "failed to create ${EHG_STORE_DIR}/mozilla"
	chmod -f g+rw "${EHG_STORE_DIR}/mozilla" || \
		echo "Warning: failed to chmod g+rw mozilla"
	cd "${EHG_STORE_DIR}/mozilla" || \
		die "failed to cd to ${EHG_STORE_DIR}/mozilla"

	# Clone/update repository:
	if [[ ! -d "${module}" ]]; then
		einfo "Cloning ${repo} to ${EHG_STORE_DIR}/mozilla/${module}"
		${EHG_CLONE_CMD} "${repo}" "${module}" || {
			rm -rf "${module}"
			die "failed to clone ${repo}"
		}
		cd "${module}"
	else
		einfo "Updating ${EHG_STORE_DIR}/mozilla/${module} from ${repo}"
		cd "${module}" || die "failed to cd to ${module}"
		${EHG_PULL_CMD} || die "update failed"
	fi
}

function moz_hg_unpack {
	debug-print-function ${FUNCNAME} ${*}

	local module="$(basename "${1}")"
	local dest="${WORKDIR}/${2:-${module}}"


	# Should be set but blank to prevent using $HOME/.hgrc
	export HGRCPATH=

	# Checkout working copy:
	einfo "Creating working directory for ${module} (target revision: ${EHG_REVISION})"
	hg archive \
		${EHG_QUIET_CMD_OPT} \
		--rev="${EHG_REVISION}" \
		-R "${EHG_STORE_DIR}/mozilla/${module}" \
		"${dest}" || die "hg clone failed"
	einfo "Work directory: ${dest}"
}