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

Diff of /eclass/subversion.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.63 Revision 1.70
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2011 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.63 2009/04/26 02:18:09 arfrever Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.70 2011/08/22 04:46:32 vapier Exp $
4 4
5# @ECLASS: subversion.eclass 5# @ECLASS: subversion.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Akinori Hattori <hattya@gentoo.org> 7# Akinori Hattori <hattya@gentoo.org>
8# Bo Ørsted Andresen <zlin@gentoo.org> 8# Bo Ørsted Andresen <zlin@gentoo.org>
9# Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org> 9# Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org>
10# 10# @AUTHOR:
11# Original Author: Akinori Hattori <hattya@gentoo.org> 11# Original Author: Akinori Hattori <hattya@gentoo.org>
12#
13# @BLURB: The subversion eclass is written to fetch software sources from subversion repositories 12# @BLURB: The subversion eclass is written to fetch software sources from subversion repositories
14# @DESCRIPTION: 13# @DESCRIPTION:
15# The subversion eclass provides functions to fetch, patch and bootstrap 14# The subversion eclass provides functions to fetch, patch and bootstrap
16# software sources from subversion repositories. 15# software sources from subversion repositories.
17 16
18inherit eutils 17inherit eutils
19 18
20ESVN="${ECLASS}" 19ESVN="${ECLASS}"
21 20
21case "${EAPI:-0}" in
22 0|1)
22EXPORT_FUNCTIONS src_unpack pkg_preinst 23 EXPORT_FUNCTIONS src_unpack pkg_preinst
24 ;;
25 *)
26 EXPORT_FUNCTIONS src_unpack src_prepare pkg_preinst
27 ;;
28esac
23 29
24DESCRIPTION="Based on the ${ECLASS} eclass" 30DESCRIPTION="Based on the ${ECLASS} eclass"
25 31
26DEPEND="dev-util/subversion 32SUBVERSION_DEPEND="dev-vcs/subversion
27 net-misc/rsync" 33 net-misc/rsync"
34
35if [[ -z "${ESVN_DISABLE_DEPENDENCIES}" ]]; then
36 DEPEND="${SUBVERSION_DEPEND}"
37fi
28 38
29# @ECLASS-VARIABLE: ESVN_STORE_DIR 39# @ECLASS-VARIABLE: ESVN_STORE_DIR
30# @DESCRIPTION: 40# @DESCRIPTION:
31# subversion sources store directory. Users may override this in /etc/make.conf 41# subversion sources store directory. Users may override this in /etc/make.conf
32[[ -z ${ESVN_STORE_DIR} ]] && ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/svn-src" 42[[ -z ${ESVN_STORE_DIR} ]] && ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/svn-src"
130# this should be a space delimited list of subversion eclass features to 140# this should be a space delimited list of subversion eclass features to
131# restrict. 141# restrict.
132# export) 142# export)
133# don't export the working copy to S. 143# don't export the working copy to S.
134ESVN_RESTRICT="${ESVN_RESTRICT:-}" 144ESVN_RESTRICT="${ESVN_RESTRICT:-}"
145
146# @ECLASS-VARIABLE: ESVN_DISABLE_DEPENDENCIES
147# @DESCRIPTION:
148# Set this variable to a non-empty value to disable the automatic inclusion of
149# Subversion in dependencies.
150ESVN_DISABLE_DEPENDENCIES="${ESVN_DISABLE_DEPENDENCIES:-}"
135 151
136# @ECLASS-VARIABLE: ESVN_OFFLINE 152# @ECLASS-VARIABLE: ESVN_OFFLINE
137# @DESCRIPTION: 153# @DESCRIPTION:
138# Set this variable to a non-empty value to disable the automatic updating of 154# Set this variable to a non-empty value to disable the automatic updating of
139# an svn source tree. This is intended to be set outside the subversion source 155# an svn source tree. This is intended to be set outside the subversion source
178 # check for the protocol 194 # check for the protocol
179 local protocol="${repo_uri%%:*}" 195 local protocol="${repo_uri%%:*}"
180 196
181 case "${protocol}" in 197 case "${protocol}" in
182 http|https) 198 http|https)
183 if ! built_with_use --missing true -o dev-util/subversion webdav-neon webdav-serf || \ 199 if ! built_with_use -o dev-vcs/subversion webdav-neon webdav-serf; then
184 built_with_use --missing false dev-util/subversion nowebdav; then
185 echo 200 echo
186 eerror "In order to emerge this package, you need to" 201 eerror "In order to emerge this package, you need to"
187 eerror "reinstall Subversion with support for WebDAV." 202 eerror "reinstall Subversion with support for WebDAV."
188 eerror "Subversion requires either Neon or Serf to support WebDAV." 203 eerror "Subversion requires either Neon or Serf to support WebDAV."
189 echo 204 echo
203 if [[ ! -d ${ESVN_STORE_DIR} ]]; then 218 if [[ ! -d ${ESVN_STORE_DIR} ]]; then
204 debug-print "${FUNCNAME}: initial checkout. creating subversion directory" 219 debug-print "${FUNCNAME}: initial checkout. creating subversion directory"
205 mkdir -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}." 220 mkdir -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}."
206 fi 221 fi
207 222
208 cd "${ESVN_STORE_DIR}" || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}" 223 pushd "${ESVN_STORE_DIR}" > /dev/null || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}"
209 224
210 local wc_path="$(subversion__get_wc_path "${repo_uri}")" 225 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
211 local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion" 226 local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion"
212 227
213 [[ -n "${revision}" ]] && options="${options} -r ${revision}" 228 [[ -n "${revision}" ]] && options="${options} -r ${revision}"
215 if [[ "${ESVN_OPTIONS}" = *-r* ]]; then 230 if [[ "${ESVN_OPTIONS}" = *-r* ]]; then
216 ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please" 231 ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please"
217 ewarn "see \${ESVN_REPO_URI}" 232 ewarn "see \${ESVN_REPO_URI}"
218 fi 233 fi
219 234
220 if has_version ">=dev-util/subversion-1.6.0"; then 235 if has_version ">=dev-vcs/subversion-1.6.0"; then
221 options="${options} --config-option=config:auth:password-stores=" 236 options="${options} --config-option=config:auth:password-stores="
222 fi 237 fi
223 238
224 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\"" 239 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\""
225 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\"" 240 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\""
242 else 257 else
243 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}." 258 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
244 fi 259 fi
245 260
246 elif [[ -n ${ESVN_OFFLINE} ]]; then 261 elif [[ -n ${ESVN_OFFLINE} ]]; then
262 svn upgrade "${wc_path}" &>/dev/null
247 svn cleanup "${wc_path}" 263 svn cleanup "${wc_path}" &>/dev/null
248 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." 264 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
249 if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then 265 if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then
250 die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally." 266 die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally."
251 fi 267 fi
252 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}." 268 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}."
253 else 269 else
270 svn upgrade "${wc_path}" &>/dev/null
254 svn cleanup "${wc_path}" 271 svn cleanup "${wc_path}" &>/dev/null
255 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." 272 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
256 273
257 local esvn_up_freq= 274 local esvn_up_freq=
258 if [[ -n ${ESVN_UP_FREQ} ]]; then 275 if [[ -n ${ESVN_UP_FREQ} ]]; then
259 if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then 276 if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then
308 #* "svn export" has a bug. see http://bugs.gentoo.org/119236 325 #* "svn export" has a bug. see http://bugs.gentoo.org/119236
309 #* svn export . "${S}" || die "${ESVN}: can't export to ${S}." 326 #* svn export . "${S}" || die "${ESVN}: can't export to ${S}."
310 rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}." 327 rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}."
311 fi 328 fi
312 329
330 popd > /dev/null
331
313 echo 332 echo
314} 333}
315 334
316# @FUNCTION: subversion_bootstrap 335# @FUNCTION: subversion_bootstrap
317# @DESCRIPTION: 336# @DESCRIPTION:
364 fi 383 fi
365} 384}
366 385
367# @FUNCTION: subversion_src_unpack 386# @FUNCTION: subversion_src_unpack
368# @DESCRIPTION: 387# @DESCRIPTION:
369# default src_unpack. fetch and bootstrap. 388# Default src_unpack. Fetch and, in older EAPIs, bootstrap.
370subversion_src_unpack() { 389subversion_src_unpack() {
371 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch." 390 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
391 if has "${EAPI:-0}" 0 1; then
392 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
393 fi
394}
395
396# @FUNCTION: subversion_src_prepare
397# @DESCRIPTION:
398# Default src_prepare. Bootstrap.
399subversion_src_prepare() {
372 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap." 400 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
373} 401}
374 402
375# @FUNCTION: subversion_wc_info 403# @FUNCTION: subversion_wc_info
376# @USAGE: [repo_uri] 404# @USAGE: [repo_uri]

Legend:
Removed from v.1.63  
changed lines
  Added in v.1.70

  ViewVC Help
Powered by ViewVC 1.1.20