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

Diff of /eclass/subversion.eclass

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

Revision 1.59 Revision 1.64
1# Copyright 1999-2008 Gentoo Foundation 1# Copyright 1999-2009 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.59 2008/05/15 13:27:40 zlin Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.64 2009/04/26 02:33:36 arfrever 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# 10#
10# Original Author: Akinori Hattori <hattya@gentoo.org> 11# Original Author: Akinori Hattori <hattya@gentoo.org>
11# 12#
12# @BLURB: The subversion eclass is written to fetch software sources from subversion repositories 13# @BLURB: The subversion eclass is written to fetch software sources from subversion repositories
13# @DESCRIPTION: 14# @DESCRIPTION:
16 17
17inherit eutils 18inherit eutils
18 19
19ESVN="${ECLASS}" 20ESVN="${ECLASS}"
20 21
22if has "${EAPI}" 0 1; then
23 EXPORT_FUNCTIONS src_unpack src_prepare pkg_preinst
24else
21EXPORT_FUNCTIONS src_unpack pkg_preinst 25 EXPORT_FUNCTIONS src_unpack pkg_preinst
26fi
22 27
23DESCRIPTION="Based on the ${ECLASS} eclass" 28DESCRIPTION="Based on the ${ECLASS} eclass"
24 29
25DEPEND="dev-util/subversion 30DEPEND="dev-util/subversion
26 net-misc/rsync" 31 net-misc/rsync"
73# Useful for live svn or trunk svn ebuilds allowing the user to peg 78# Useful for live svn or trunk svn ebuilds allowing the user to peg
74# to a specific revision 79# to a specific revision
75# 80#
76# Note: This should never be set in an ebuild! 81# Note: This should never be set in an ebuild!
77ESVN_REVISION="${ESVN_REVISION:-}" 82ESVN_REVISION="${ESVN_REVISION:-}"
83
84# @ECLASS-VARIABLE: ESVN_USER
85# @DESCRIPTION:
86# User name
87ESVN_USER="${ESVN_USER:-}"
88
89# @ECLASS-VARIABLE: ESVN_PASSWORD
90# @DESCRIPTION:
91# Password
92ESVN_PASSWORD="${ESVN_PASSWORD:-}"
78 93
79# @ECLASS-VARIABLE: ESVN_PROJECT 94# @ECLASS-VARIABLE: ESVN_PROJECT
80# @DESCRIPTION: 95# @DESCRIPTION:
81# project name of your ebuild (= name space) 96# project name of your ebuild (= name space)
82# 97#
168 local protocol="${repo_uri%%:*}" 183 local protocol="${repo_uri%%:*}"
169 184
170 case "${protocol}" in 185 case "${protocol}" in
171 http|https) 186 http|https)
172 if ! built_with_use --missing true -o dev-util/subversion webdav-neon webdav-serf || \ 187 if ! built_with_use --missing true -o dev-util/subversion webdav-neon webdav-serf || \
173 built_with_use --missing false dev-util/subversion nowebdav ; then 188 built_with_use --missing false dev-util/subversion nowebdav; then
174 echo 189 echo
175 eerror "In order to emerge this package, you need to" 190 eerror "In order to emerge this package, you need to"
176 eerror "reinstall Subversion with support for WebDAV." 191 eerror "reinstall Subversion with support for WebDAV."
177 eerror "Subversion requires either Neon or Serf to support WebDAV." 192 eerror "Subversion requires either Neon or Serf to support WebDAV."
178 echo 193 echo
204 if [[ "${ESVN_OPTIONS}" = *-r* ]]; then 219 if [[ "${ESVN_OPTIONS}" = *-r* ]]; then
205 ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please" 220 ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please"
206 ewarn "see \${ESVN_REPO_URI}" 221 ewarn "see \${ESVN_REPO_URI}"
207 fi 222 fi
208 223
224 if has_version ">=dev-util/subversion-1.6.0"; then
225 options="${options} --config-option=config:auth:password-stores="
226 fi
227
209 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\"" 228 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\""
210 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\"" 229 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\""
211 debug-print "${FUNCNAME}: options = \"${options}\"" 230 debug-print "${FUNCNAME}: options = \"${options}\""
212 231
213 if [[ ! -d ${wc_path}/.svn ]]; then 232 if [[ ! -d ${wc_path}/.svn ]]; then
214 if [[ -n ${ESVN_OFFLINE} ]]; then 233 if [[ -n ${ESVN_OFFLINE} ]]; then
215 ewarn "ESVN_OFFLINE cannot be used when the there is no existing checkout." 234 ewarn "ESVN_OFFLINE cannot be used when there is no existing checkout."
216 fi 235 fi
217 # first check out 236 # first check out
218 einfo "subversion check out start -->" 237 einfo "subversion check out start -->"
219 einfo " repository: ${repo_uri}${revision:+@}${revision}" 238 einfo " repository: ${repo_uri}${revision:+@}${revision}"
220 239
221 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}" 240 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}"
222 241
223 mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}." 242 mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}."
224 cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}" 243 cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}"
244 if [[ -n "${ESVN_USER}" ]]; then
245 ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
246 else
225 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}." 247 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
248 fi
226 249
227 elif [[ -n ${ESVN_OFFLINE} ]]; then 250 elif [[ -n ${ESVN_OFFLINE} ]]; then
251 svn cleanup "${wc_path}"
228 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." 252 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
229 if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then 253 if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then
230 die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally." 254 die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally."
231 fi 255 fi
232 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}." 256 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}."
233 else 257 else
258 svn cleanup "${wc_path}"
234 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." 259 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
235 260
236 local esvn_up_freq= 261 local esvn_up_freq=
237 if [[ -n ${ESVN_UP_FREQ} ]]; then 262 if [[ -n ${ESVN_UP_FREQ} ]]; then
238 if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then 263 if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then
251 einfo " new repository: ${repo_uri}${revision:+@}${revision}" 276 einfo " new repository: ${repo_uri}${revision:+@}${revision}"
252 277
253 debug-print "${FUNCNAME}: ${ESVN_SWITCH_CMD} ${options} ${repo_uri}" 278 debug-print "${FUNCNAME}: ${ESVN_SWITCH_CMD} ${options} ${repo_uri}"
254 279
255 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}" 280 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
281 if [[ -n "${ESVN_USER}" ]]; then
282 ${ESVN_SWITCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
283 else
256 ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}" 284 ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
285 fi
257 else 286 else
258 # update working copy 287 # update working copy
259 einfo "subversion update start -->" 288 einfo "subversion update start -->"
260 einfo " repository: ${repo_uri}${revision:+@}${revision}" 289 einfo " repository: ${repo_uri}${revision:+@}${revision}"
261 290
262 debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}" 291 debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}"
263 292
264 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}" 293 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
294 if [[ -n "${ESVN_USER}" ]]; then
295 ${ESVN_UPDATE_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
296 else
265 ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}." 297 ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
298 fi
266 fi 299 fi
267 fi 300 fi
268 fi 301 fi
269 302
270 einfo " working copy: ${wc_path}" 303 einfo " working copy: ${wc_path}"
271 304
272 if ! has "export" ${ESVN_RESTRICT}; then 305 if ! has "export" ${ESVN_RESTRICT}; then
273 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}" 306 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
274 307
275 local S="${S}/${S_dest}" 308 local S="${S}/${S_dest}"
309 mkdir -p "${S}"
276 310
277 # export to the ${WORKDIR} 311 # export to the ${WORKDIR}
278 #* "svn export" has a bug. see http://bugs.gentoo.org/119236 312 #* "svn export" has a bug. see http://bugs.gentoo.org/119236
279 #* svn export . "${S}" || die "${ESVN}: can't export to ${S}." 313 #* svn export . "${S}" || die "${ESVN}: can't export to ${S}."
280 rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}." 314 rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}."
334 fi 368 fi
335} 369}
336 370
337# @FUNCTION: subversion_src_unpack 371# @FUNCTION: subversion_src_unpack
338# @DESCRIPTION: 372# @DESCRIPTION:
339# default src_unpack. fetch and bootstrap. 373# Default src_unpack. Fetch and, in older EAPIs, bootstrap.
340subversion_src_unpack() { 374subversion_src_unpack() {
341 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch." 375 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
376 if has "${EAPI}" 0 1; then
377 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
378 fi
379}
380
381# @FUNCTION: subversion_src_prepare
382# @DESCRIPTION:
383# Default src_prepare. Bootstrap.
384subversion_src_prepare() {
342 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap." 385 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
343} 386}
344 387
345# @FUNCTION: subversion_wc_info 388# @FUNCTION: subversion_wc_info
346# @USAGE: [repo_uri] 389# @USAGE: [repo_uri]

Legend:
Removed from v.1.59  
changed lines
  Added in v.1.64

  ViewVC Help
Powered by ViewVC 1.1.20