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

Diff of /eclass/subversion.eclass

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

Revision 1.75 Revision 1.77
1# Copyright 1999-2012 Gentoo Foundation 1# Copyright 1999-2012 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.75 2012/02/21 18:03:49 jlec Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.77 2012/06/10 10:08:36 hattya 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>
9# Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org>
10# @AUTHOR: 8# @AUTHOR:
11# Original Author: Akinori Hattori <hattya@gentoo.org> 9# Original Author: Akinori Hattori <hattya@gentoo.org>
12# @BLURB: The subversion eclass is written to fetch software sources from subversion repositories 10# @BLURB: The subversion eclass is written to fetch software sources from subversion repositories
13# @DESCRIPTION: 11# @DESCRIPTION:
14# The subversion eclass provides functions to fetch, patch and bootstrap 12# The subversion eclass provides functions to fetch, patch and bootstrap
152# @ECLASS-VARIABLE: ESVN_OFFLINE 150# @ECLASS-VARIABLE: ESVN_OFFLINE
153# @DESCRIPTION: 151# @DESCRIPTION:
154# Set this variable to a non-empty value to disable the automatic updating of 152# Set this variable to a non-empty value to disable the automatic updating of
155# an svn source tree. This is intended to be set outside the subversion source 153# an svn source tree. This is intended to be set outside the subversion source
156# tree by users. 154# tree by users.
157ESVN_OFFLINE="${ESVN_OFFLINE:-${ESCM_OFFLINE}}" 155ESVN_OFFLINE="${ESVN_OFFLINE:-${EVCS_OFFLINE}}"
158 156
159# @ECLASS-VARIABLE: ESVN_UMASK 157# @ECLASS-VARIABLE: ESVN_UMASK
160# @DESCRIPTION: 158# @DESCRIPTION:
161# Set this variable to a custom umask. This is intended to be set by users. 159# Set this variable to a custom umask. This is intended to be set by users.
162# By setting this to something like 002, it can make life easier for people 160# By setting this to something like 002, it can make life easier for people
201 199
202 [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}" 200 [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}"
203 201
204 # check for the protocol 202 # check for the protocol
205 local protocol="${repo_uri%%:*}" 203 local protocol="${repo_uri%%:*}"
206
207 case "${protocol}" in 204 case "${protocol}" in
208 http|https) 205 http|https)
209 if ! built_with_use -o dev-vcs/subversion webdav-neon webdav-serf; then 206 if ! built_with_use -o dev-vcs/subversion webdav-neon webdav-serf; then
210 echo 207 echo
211 eerror "In order to emerge this package, you need to" 208 eerror "In order to emerge this package, you need to"
274 271
275 elif [[ -n ${ESVN_OFFLINE} ]]; then 272 elif [[ -n ${ESVN_OFFLINE} ]]; then
276 svn upgrade "${wc_path}" &>/dev/null 273 svn upgrade "${wc_path}" &>/dev/null
277 svn cleanup "${wc_path}" &>/dev/null 274 svn cleanup "${wc_path}" &>/dev/null
278 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." 275 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
276
279 if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then 277 if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then
280 die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally." 278 die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally."
281 fi 279 fi
282 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}." 280 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}."
283 else 281 else
362 #* svn export . "${S}" || die "${ESVN}: can't export to ${S}." 360 #* svn export . "${S}" || die "${ESVN}: can't export to ${S}."
363 rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}." 361 rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}."
364 fi 362 fi
365 363
366 popd > /dev/null 364 popd > /dev/null
367
368 echo 365 echo
369} 366}
370 367
371# @FUNCTION: subversion_bootstrap 368# @FUNCTION: subversion_bootstrap
372# @DESCRIPTION: 369# @DESCRIPTION:
377 fi 374 fi
378 375
379 cd "${S}" 376 cd "${S}"
380 377
381 if [[ -n ${ESVN_PATCHES} ]]; then 378 if [[ -n ${ESVN_PATCHES} ]]; then
379 local patch fpatch
382 einfo "apply patches -->" 380 einfo "apply patches -->"
383
384 local patch fpatch
385
386 for patch in ${ESVN_PATCHES}; do 381 for patch in ${ESVN_PATCHES}; do
387 if [[ -f ${patch} ]]; then 382 if [[ -f ${patch} ]]; then
388 epatch "${patch}" 383 epatch "${patch}"
389
390 else 384 else
391 for fpatch in ${FILESDIR}/${patch}; do 385 for fpatch in ${FILESDIR}/${patch}; do
392 if [[ -f ${fpatch} ]]; then 386 if [[ -f ${fpatch} ]]; then
393 epatch "${fpatch}" 387 epatch "${fpatch}"
394
395 else 388 else
396 die "${ESVN}: ${patch} not found" 389 die "${ESVN}: ${patch} not found"
397
398 fi 390 fi
399 done 391 done
400
401 fi 392 fi
402 done 393 done
403
404 echo 394 echo
405 fi 395 fi
406 396
407 if [[ -n ${ESVN_BOOTSTRAP} ]]; then 397 if [[ -n ${ESVN_BOOTSTRAP} ]]; then
408 einfo "begin bootstrap -->" 398 einfo "begin bootstrap -->"
409
410 if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then 399 if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then
411 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}" 400 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}"
412 eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP." 401 eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP."
413
414 else 402 else
415 einfo " bootstrap with command: ${ESVN_BOOTSTRAP}" 403 einfo " bootstrap with command: ${ESVN_BOOTSTRAP}"
416 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP." 404 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP."
417
418 fi 405 fi
419 fi 406 fi
420} 407}
421 408
422# @FUNCTION: subversion_src_unpack 409# @FUNCTION: subversion_src_unpack
423# @DESCRIPTION: 410# @DESCRIPTION:
424# Default src_unpack. Fetch and, in older EAPIs, bootstrap. 411# Default src_unpack. Fetch and, in older EAPIs, bootstrap.
425subversion_src_unpack() { 412subversion_src_unpack() {
426 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch." 413 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
427 if has "${EAPI:-0}" 0 1; then 414 if has "${EAPI:-0}" 0 1; then
428 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap." 415 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
429 fi 416 fi
430} 417}
431 418
471# 458#
472subversion__svn_info() { 459subversion__svn_info() {
473 local target="${1}" 460 local target="${1}"
474 local key="${2}" 461 local key="${2}"
475 462
476 env LC_ALL=C svn info \
477 ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" \ 463 env LC_ALL=C svn info ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${target}" \
478 "${target}" | grep -i "^${key}" | cut -d" " -f2- 464 | grep -i "^${key}" \
465 | cut -d" " -f2-
479} 466}
480 467
481## -- subversion__get_repository_uri() --------------------------------------- # 468## -- subversion__get_repository_uri() --------------------------------------- #
482# 469#
483# param $1 - a repository URI. 470# param $1 - a repository URI.
484subversion__get_repository_uri() { 471subversion__get_repository_uri() {
485 local repo_uri="${1}" 472 local repo_uri="${1}"
486 473
487 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}" 474 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
488
489 if [[ -z ${repo_uri} ]]; then 475 if [[ -z ${repo_uri} ]]; then
490 die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty." 476 die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty."
491 fi 477 fi
492
493 # delete trailing slash 478 # delete trailing slash
494 if [[ -z ${repo_uri##*/} ]]; then 479 if [[ -z ${repo_uri##*/} ]]; then
495 repo_uri="${repo_uri%/}" 480 repo_uri="${repo_uri%/}"
496 fi 481 fi
497
498 repo_uri="${repo_uri%@*}" 482 repo_uri="${repo_uri%@*}"
499 483
500 echo "${repo_uri}" 484 echo "${repo_uri}"
501} 485}
502 486
514## -- subversion__get_peg_revision() ----------------------------------------- # 498## -- subversion__get_peg_revision() ----------------------------------------- #
515# 499#
516# param $1 - a repository URI. 500# param $1 - a repository URI.
517subversion__get_peg_revision() { 501subversion__get_peg_revision() {
518 local repo_uri="${1}" 502 local repo_uri="${1}"
503 local peg_rev=
519 504
520 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}" 505 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
521
522 # repo_uri has peg revision ? 506 # repo_uri has peg revision?
523 if [[ ${repo_uri} != *@* ]]; then 507 if [[ ${repo_uri} = *@* ]]; then
508 peg_rev="${repo_uri##*@}"
509 debug-print "${FUNCNAME}: peg_rev = ${peg_rev}"
510 else
524 debug-print "${FUNCNAME}: repo_uri does not have a peg revision." 511 debug-print "${FUNCNAME}: repo_uri does not have a peg revision."
525 fi 512 fi
526
527 local peg_rev=
528 [[ ${repo_uri} = *@* ]] && peg_rev="${repo_uri##*@}"
529
530 debug-print "${FUNCNAME}: peg_rev = ${peg_rev}"
531 513
532 echo "${peg_rev}" 514 echo "${peg_rev}"
533} 515}
534 516
535# @FUNCTION: subversion_pkg_preinst 517# @FUNCTION: subversion_pkg_preinst

Legend:
Removed from v.1.75  
changed lines
  Added in v.1.77

  ViewVC Help
Powered by ViewVC 1.1.20