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

Contents of /eclass/subversion.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.63 - (hide annotations) (download)
Sun Apr 26 02:18:09 2009 UTC (5 years, 4 months ago) by arfrever
Branch: MAIN
Changes since 1.62: +28 -6 lines
Support ESVN_USER and ESVN_PASSWORD variables.

1 arfrever 1.61 # Copyright 1999-2009 Gentoo Foundation
2 hattya 1.1 # Distributed under the terms of the GNU General Public License v2
3 arfrever 1.63 # $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.62 2009/04/26 01:57:14 arfrever Exp $
4 hattya 1.1
5 zlin 1.46 # @ECLASS: subversion.eclass
6     # @MAINTAINER:
7     # Akinori Hattori <hattya@gentoo.org>
8     # Bo ├śrsted Andresen <zlin@gentoo.org>
9 arfrever 1.61 # Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org>
10 swegener 1.23 #
11 zlin 1.46 # Original Author: Akinori Hattori <hattya@gentoo.org>
12 hattya 1.1 #
13 zlin 1.46 # @BLURB: The subversion eclass is written to fetch software sources from subversion repositories
14     # @DESCRIPTION:
15     # The subversion eclass provides functions to fetch, patch and bootstrap
16     # software sources from subversion repositories.
17 hattya 1.1
18 hattya 1.8 inherit eutils
19 hattya 1.1
20 zlin 1.46 ESVN="${ECLASS}"
21 hattya 1.1
22 zlin 1.50 EXPORT_FUNCTIONS src_unpack pkg_preinst
23 hattya 1.1
24 hattya 1.5 DESCRIPTION="Based on the ${ECLASS} eclass"
25 hattya 1.1
26 zlin 1.46 DEPEND="dev-util/subversion
27     net-misc/rsync"
28 hattya 1.1
29 zlin 1.46 # @ECLASS-VARIABLE: ESVN_STORE_DIR
30     # @DESCRIPTION:
31     # 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"
33    
34     # @ECLASS-VARIABLE: ESVN_FETCH_CMD
35     # @DESCRIPTION:
36     # subversion checkout command
37 hattya 1.25 ESVN_FETCH_CMD="svn checkout"
38    
39 zlin 1.46 # @ECLASS-VARIABLE: ESVN_UPDATE_CMD
40     # @DESCRIPTION:
41     # subversion update command
42 hattya 1.25 ESVN_UPDATE_CMD="svn update"
43 hattya 1.1
44 cardoe 1.48 # @ECLASS-VARIABLE: ESVN_SWITCH_CMD
45     # @DESCRIPTION:
46     # subversion switch command
47     ESVN_SWITCH_CMD="svn switch"
48    
49 zlin 1.46 # @ECLASS-VARIABLE: ESVN_OPTIONS
50     # @DESCRIPTION:
51     # the options passed to checkout or update. If you want a specific revision see
52     # ESVN_REPO_URI instead of using -rREV.
53     ESVN_OPTIONS="${ESVN_OPTIONS:-}"
54    
55     # @ECLASS-VARIABLE: ESVN_REPO_URI
56     # @DESCRIPTION:
57     # repository uri
58 hattya 1.1 #
59 zlin 1.46 # e.g. http://foo/trunk, svn://bar/trunk, svn://bar/branch/foo@1234
60 hattya 1.12 #
61     # supported protocols:
62     # http://
63     # https://
64     # svn://
65 hattya 1.33 # svn+ssh://
66 hattya 1.1 #
67 zlin 1.46 # to peg to a specific revision, append @REV to the repo's uri
68     ESVN_REPO_URI="${ESVN_REPO_URI:-}"
69 hattya 1.1
70 cardoe 1.47 # @ECLASS-VARIABLE: ESVN_REVISION
71     # @DESCRIPTION:
72     # User configurable revision checkout or update to from the repository
73     #
74     # Useful for live svn or trunk svn ebuilds allowing the user to peg
75     # to a specific revision
76     #
77     # Note: This should never be set in an ebuild!
78     ESVN_REVISION="${ESVN_REVISION:-}"
79    
80 arfrever 1.63 # @ECLASS-VARIABLE: ESVN_USER
81     # @DESCRIPTION:
82     # User name
83     ESVN_USER="${ESVN_USER:-}"
84    
85     # @ECLASS-VARIABLE: ESVN_PASSWORD
86     # @DESCRIPTION:
87     # Password
88     ESVN_PASSWORD="${ESVN_PASSWORD:-}"
89    
90 zlin 1.46 # @ECLASS-VARIABLE: ESVN_PROJECT
91     # @DESCRIPTION:
92     # project name of your ebuild (= name space)
93 hattya 1.1 #
94     # subversion eclass will check out the subversion repository like:
95     #
96     # ${ESVN_STORE_DIR}/${ESVN_PROJECT}/${ESVN_REPO_URI##*/}
97     #
98     # so if you define ESVN_REPO_URI as http://svn.collab.net/repo/svn/trunk or
99     # http://svn.collab.net/repo/svn/trunk/. and PN is subversion-svn.
100     # it will check out like:
101     #
102     # ${ESVN_STORE_DIR}/subversion/trunk
103     #
104 hattya 1.33 # this is not used in order to declare the name of the upstream project.
105     # so that you can declare this like:
106     #
107     # # jakarta commons-loggin
108     # ESVN_PROJECT=commons/logging
109     #
110 hattya 1.1 # default: ${PN/-svn}.
111 zlin 1.46 ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}"
112 hattya 1.1
113 zlin 1.46 # @ECLASS-VARIABLE: ESVN_BOOTSTRAP
114     # @DESCRIPTION:
115 hattya 1.8 # bootstrap script or command like autogen.sh or etc..
116 zlin 1.46 ESVN_BOOTSTRAP="${ESVN_BOOTSTRAP:-}"
117 hattya 1.1
118 zlin 1.46 # @ECLASS-VARIABLE: ESVN_PATCHES
119     # @DESCRIPTION:
120     # subversion eclass can apply patches in subversion_bootstrap().
121 peper 1.43 # you can use regexp in this variable like *.diff or *.patch or etc.
122     # NOTE: patches will be applied before ESVN_BOOTSTRAP is processed.
123 hattya 1.8 #
124 zlin 1.46 # Patches are searched both in ${PWD} and ${FILESDIR}, if not found in either
125     # location, the installation dies.
126     ESVN_PATCHES="${ESVN_PATCHES:-}"
127 hattya 1.33
128 zlin 1.46 # @ECLASS-VARIABLE: ESVN_RESTRICT
129     # @DESCRIPTION:
130 hattya 1.39 # this should be a space delimited list of subversion eclass features to
131     # restrict.
132 hattya 1.33 # export)
133     # don't export the working copy to S.
134 zlin 1.46 ESVN_RESTRICT="${ESVN_RESTRICT:-}"
135 hattya 1.45
136 zlin 1.49 # @ECLASS-VARIABLE: ESVN_OFFLINE
137     # @DESCRIPTION:
138     # 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
140     # tree by users.
141     ESVN_OFFLINE="${ESVN_OFFLINE:-${ESCM_OFFLINE}}"
142    
143 zlin 1.52 # @ECLASS-VARIABLE: ESVN_UP_FREQ
144     # @DESCRIPTION:
145     # Set the minimum number of hours between svn up'ing in any given svn module. This is particularly
146     # useful for split KDE ebuilds where we want to ensure that all submodules are compiled for the same
147     # revision. It should also be kept user overrideable.
148     ESVN_UP_FREQ="${ESVN_UP_FREQ:=}"
149    
150 zlin 1.50 # @ECLASS-VARIABLE: ESCM_LOGDIR
151     # @DESCRIPTION:
152     # User configuration variable. If set to a path such as e.g. /var/log/scm any
153     # package inheriting from subversion.eclass will record svn revision to
154     # ${CATEGORY}/${PN}.log in that path in pkg_preinst. This is not supposed to be
155     # set by ebuilds/eclasses. It defaults to empty so users need to opt in.
156     ESCM_LOGDIR="${ESCM_LOGDIR:=}"
157    
158 zlin 1.46 # @FUNCTION: subversion_fetch
159     # @USAGE: [repo_uri] [destination]
160     # @DESCRIPTION:
161     # Wrapper function to fetch sources from subversion via svn checkout or svn update,
162     # depending on whether there is an existing working copy in ${ESVN_STORE_DIR}.
163     #
164     # Can take two optional parameters:
165     # repo_uri - a repository URI. default is ESVN_REPO_URI.
166     # destination - a check out path in S.
167     subversion_fetch() {
168 zlin 1.54 local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")"
169 cardoe 1.47 local revision="$(subversion__get_peg_revision "${1:-${ESVN_REPO_URI}}")"
170 hattya 1.39 local S_dest="${2}"
171 hattya 1.25
172 zlin 1.51 if [[ -z ${repo_uri} ]]; then
173     die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty."
174     fi
175    
176 cardoe 1.47 [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}"
177    
178 hattya 1.33 # check for the protocol
179 hattya 1.39 local protocol="${repo_uri%%:*}"
180 hattya 1.1
181 hattya 1.33 case "${protocol}" in
182 vapier 1.24 http|https)
183 hollow 1.58 if ! built_with_use --missing true -o dev-util/subversion webdav-neon webdav-serf || \
184 arfrever 1.63 built_with_use --missing false dev-util/subversion nowebdav; then
185 hattya 1.34 echo
186 vapier 1.24 eerror "In order to emerge this package, you need to"
187 hollow 1.58 eerror "reinstall Subversion with support for WebDAV."
188     eerror "Subversion requires either Neon or Serf to support WebDAV."
189 hattya 1.34 echo
190 hollow 1.58 die "${ESVN}: reinstall Subversion with support for WebDAV."
191 vapier 1.24 fi
192     ;;
193 hattya 1.33 svn|svn+ssh)
194     ;;
195 hattya 1.5 *)
196 zlin 1.46 die "${ESVN}: fetch from '${protocol}' is not yet implemented."
197 hattya 1.5 ;;
198     esac
199 hattya 1.1
200 hattya 1.38 addread "/etc/subversion"
201     addwrite "${ESVN_STORE_DIR}"
202    
203 zlin 1.46 if [[ ! -d ${ESVN_STORE_DIR} ]]; then
204 hattya 1.17 debug-print "${FUNCNAME}: initial checkout. creating subversion directory"
205 hattya 1.33 mkdir -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}."
206 hattya 1.1 fi
207    
208 hattya 1.33 cd "${ESVN_STORE_DIR}" || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}"
209 hattya 1.1
210 hattya 1.39 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
211 hattya 1.38 local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion"
212 hattya 1.1
213 cardoe 1.47 [[ -n "${revision}" ]] && options="${options} -r ${revision}"
214    
215     if [[ "${ESVN_OPTIONS}" = *-r* ]]; then
216     ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please"
217     ewarn "see \${ESVN_REPO_URI}"
218     fi
219    
220 arfrever 1.61 if has_version ">=dev-util/subversion-1.6.0"; then
221     options="${options} --config-option=config:auth:password-stores="
222     fi
223    
224 hattya 1.39 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\""
225 hattya 1.25 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\""
226 hattya 1.38 debug-print "${FUNCNAME}: options = \"${options}\""
227 joker 1.37
228 zlin 1.46 if [[ ! -d ${wc_path}/.svn ]]; then
229 zlin 1.53 if [[ -n ${ESVN_OFFLINE} ]]; then
230 arfrever 1.63 ewarn "ESVN_OFFLINE cannot be used when there is no existing checkout."
231 zlin 1.53 fi
232 hattya 1.1 # first check out
233     einfo "subversion check out start -->"
234 cardoe 1.47 einfo " repository: ${repo_uri}${revision:+@}${revision}"
235 hattya 1.1
236 hattya 1.39 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}"
237    
238     mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}."
239     cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}"
240 arfrever 1.63 if [[ -n "${ESVN_USER}" ]]; then
241     ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
242     else
243     ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
244     fi
245 hattya 1.12
246 zlin 1.49 elif [[ -n ${ESVN_OFFLINE} ]]; then
247 arfrever 1.62 svn cleanup "${wc_path}"
248 zlin 1.49 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
250     die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally."
251     fi
252 zlin 1.56 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}."
253 hattya 1.1 else
254 arfrever 1.62 svn cleanup "${wc_path}"
255 peper 1.44 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
256 hattya 1.45
257 zlin 1.52 local esvn_up_freq=
258     if [[ -n ${ESVN_UP_FREQ} ]]; then
259     if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then
260     die "${ESVN}: ESVN_UP_FREQ must be an integer value corresponding to the minimum number of hours between svn up."
261     elif [[ -z $(find "${wc_path}/.svn/entries" -mmin "+$((ESVN_UP_FREQ*60))") ]]; then
262 zlin 1.56 einfo "Fetching disabled since ${ESVN_UP_FREQ} hours has not passed since last update."
263     einfo "Using existing repository copy at revision ${ESVN_WC_REVISION}."
264 zlin 1.52 esvn_up_freq=no_update
265     fi
266     fi
267    
268     if [[ -z ${esvn_up_freq} ]]; then
269     if [[ ${ESVN_WC_URL} != $(subversion__get_repository_uri "${repo_uri}") ]]; then
270 zlin 1.57 einfo "subversion switch start -->"
271 zlin 1.52 einfo " old repository: ${ESVN_WC_URL}@${ESVN_WC_REVISION}"
272     einfo " new repository: ${repo_uri}${revision:+@}${revision}"
273 cardoe 1.48
274 zlin 1.52 debug-print "${FUNCNAME}: ${ESVN_SWITCH_CMD} ${options} ${repo_uri}"
275 hattya 1.34
276 zlin 1.52 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
277 arfrever 1.63 if [[ -n "${ESVN_USER}" ]]; then
278     ${ESVN_SWITCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
279     else
280     ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
281     fi
282 zlin 1.52 else
283     # update working copy
284     einfo "subversion update start -->"
285     einfo " repository: ${repo_uri}${revision:+@}${revision}"
286 hattya 1.25
287 zlin 1.52 debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}"
288 hattya 1.39
289 zlin 1.52 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
290 arfrever 1.63 if [[ -n "${ESVN_USER}" ]]; then
291     ${ESVN_UPDATE_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
292     else
293     ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
294     fi
295 zlin 1.52 fi
296 cardoe 1.48 fi
297 peper 1.43 fi
298 hattya 1.1
299 hattya 1.39 einfo " working copy: ${wc_path}"
300 hattya 1.33
301     if ! has "export" ${ESVN_RESTRICT}; then
302 hattya 1.39 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
303    
304     local S="${S}/${S_dest}"
305 zlin 1.60 mkdir -p "${S}"
306 hattya 1.33
307     # export to the ${WORKDIR}
308     #* "svn export" has a bug. see http://bugs.gentoo.org/119236
309     #* svn export . "${S}" || die "${ESVN}: can't export to ${S}."
310     rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}."
311     fi
312 hattya 1.1
313 hattya 1.8 echo
314 hattya 1.1 }
315    
316 zlin 1.46 # @FUNCTION: subversion_bootstrap
317     # @DESCRIPTION:
318     # Apply patches in ${ESVN_PATCHES} and run ${ESVN_BOOTSTRAP} if specified.
319     subversion_bootstrap() {
320 hattya 1.33 if has "export" ${ESVN_RESTRICT}; then
321     return
322     fi
323 hattya 1.1
324 hattya 1.8 cd "${S}"
325    
326 zlin 1.46 if [[ -n ${ESVN_PATCHES} ]]; then
327 hattya 1.15 einfo "apply patches -->"
328 hattya 1.12
329 peper 1.43 local patch fpatch
330 hattya 1.45
331 peper 1.43 for patch in ${ESVN_PATCHES}; do
332 zlin 1.46 if [[ -f ${patch} ]]; then
333 peper 1.43 epatch "${patch}"
334 hattya 1.45
335 hattya 1.8 else
336 peper 1.43 for fpatch in ${FILESDIR}/${patch}; do
337 zlin 1.46 if [[ -f ${fpatch} ]]; then
338 peper 1.43 epatch "${fpatch}"
339 hattya 1.45
340 hattya 1.8 else
341 peper 1.43 die "${ESVN}: ${patch} not found"
342 hattya 1.45
343 hattya 1.8 fi
344     done
345 hattya 1.45
346 hattya 1.8 fi
347     done
348 hattya 1.45
349 hattya 1.8 echo
350     fi
351    
352 zlin 1.46 if [[ -n ${ESVN_BOOTSTRAP} ]]; then
353 hattya 1.8 einfo "begin bootstrap -->"
354 hattya 1.12
355 zlin 1.46 if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then
356 hattya 1.8 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}"
357     eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP."
358 hattya 1.45
359 hattya 1.8 else
360 peper 1.43 einfo " bootstrap with command: ${ESVN_BOOTSTRAP}"
361 hattya 1.8 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP."
362 hattya 1.45
363 hattya 1.1 fi
364     fi
365     }
366    
367 zlin 1.46 # @FUNCTION: subversion_src_unpack
368     # @DESCRIPTION:
369     # default src_unpack. fetch and bootstrap.
370     subversion_src_unpack() {
371 hattya 1.34 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
372     subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
373 hattya 1.1 }
374 hattya 1.33
375 zlin 1.46 # @FUNCTION: subversion_wc_info
376     # @USAGE: [repo_uri]
377 cardoe 1.47 # @RETURN: ESVN_WC_URL, ESVN_WC_ROOT, ESVN_WC_UUID, ESVN_WC_REVISION and ESVN_WC_PATH
378 zlin 1.46 # @DESCRIPTION:
379     # Get svn info for the specified repo_uri. The default repo_uri is ESVN_REPO_URI.
380 hattya 1.39 #
381 zlin 1.46 # The working copy information on the specified repository URI are set to
382 hattya 1.45 # ESVN_WC_* variables.
383 zlin 1.46 subversion_wc_info() {
384 zlin 1.54 local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")"
385 hattya 1.39 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
386    
387     debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
388     debug-print "${FUNCNAME}: wc_path = ${wc_path}"
389    
390 zlin 1.46 if [[ ! -d ${wc_path} ]]; then
391 hattya 1.39 return 1
392     fi
393    
394 cardoe 1.47 export ESVN_WC_URL="$(subversion__svn_info "${wc_path}" "URL")"
395     export ESVN_WC_ROOT="$(subversion__svn_info "${wc_path}" "Repository Root")"
396     export ESVN_WC_UUID="$(subversion__svn_info "${wc_path}" "Repository UUID")"
397     export ESVN_WC_REVISION="$(subversion__svn_info "${wc_path}" "Revision")"
398 hattya 1.45 export ESVN_WC_PATH="${wc_path}"
399 hattya 1.39 }
400    
401     ## -- Private Functions
402    
403     ## -- subversion__svn_info() ------------------------------------------------- #
404     #
405 zlin 1.46 # param $1 - a target.
406     # param $2 - a key name.
407 hattya 1.39 #
408 zlin 1.46 subversion__svn_info() {
409 hattya 1.39 local target="${1}"
410     local key="${2}"
411    
412     env LC_ALL=C svn info "${target}" | grep -i "^${key}" | cut -d" " -f2-
413     }
414    
415     ## -- subversion__get_repository_uri() --------------------------------------- #
416     #
417 zlin 1.46 # param $1 - a repository URI.
418     subversion__get_repository_uri() {
419 zlin 1.54 local repo_uri="${1}"
420 hattya 1.39
421     debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
422 hattya 1.33
423 zlin 1.46 if [[ -z ${repo_uri} ]]; then
424 hattya 1.39 die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty."
425     fi
426 hattya 1.33
427     # delete trailing slash
428 zlin 1.46 if [[ -z ${repo_uri##*/} ]]; then
429 hattya 1.33 repo_uri="${repo_uri%/}"
430     fi
431    
432 cardoe 1.47 repo_uri="${repo_uri%@*}"
433 hattya 1.39
434     echo "${repo_uri}"
435     }
436    
437     ## -- subversion__get_wc_path() ---------------------------------------------- #
438     #
439 zlin 1.46 # param $1 - a repository URI.
440     subversion__get_wc_path() {
441 cardoe 1.47 local repo_uri="$(subversion__get_repository_uri "${1}")"
442 hattya 1.39
443     debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
444    
445     echo "${ESVN_STORE_DIR}/${ESVN_PROJECT}/${repo_uri##*/}"
446     }
447    
448 cardoe 1.47 ## -- subversion__get_peg_revision() ----------------------------------------- #
449 hattya 1.39 #
450 zlin 1.46 # param $1 - a repository URI.
451 cardoe 1.47 subversion__get_peg_revision() {
452 hattya 1.39 local repo_uri="${1}"
453    
454     debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
455    
456     # repo_uri has peg revision ?
457 zlin 1.46 if [[ ${repo_uri} != *@* ]]; then
458 hattya 1.39 debug-print "${FUNCNAME}: repo_uri does not have a peg revision."
459 hattya 1.33 fi
460 zlin 1.49
461 cardoe 1.47 local peg_rev=
462     [[ ${repo_uri} = *@* ]] && peg_rev="${repo_uri##*@}"
463 hattya 1.33
464 hattya 1.39 debug-print "${FUNCNAME}: peg_rev = ${peg_rev}"
465    
466 cardoe 1.47 echo "${peg_rev}"
467 hattya 1.33 }
468 zlin 1.50
469     # @FUNCTION: subversion_pkg_preinst
470 zlin 1.55 # @USAGE: [repo_uri]
471 zlin 1.50 # @DESCRIPTION:
472     # Log the svn revision of source code. Doing this in pkg_preinst because we
473     # want the logs to stick around if packages are uninstalled without messing with
474     # config protection.
475     subversion_pkg_preinst() {
476     local pkgdate=$(date "+%Y%m%d %H:%M:%S")
477 zlin 1.55 subversion_wc_info "${1:-${ESVN_REPO_URI}}"
478 zlin 1.50 if [[ -n ${ESCM_LOGDIR} ]]; then
479     local dir="${ROOT}/${ESCM_LOGDIR}/${CATEGORY}"
480     if [[ ! -d ${dir} ]]; then
481     mkdir -p "${dir}" || \
482     eerror "Failed to create '${dir}' for logging svn revision to '${PORTDIR_SCM}'"
483     fi
484     local logmessage="svn: ${pkgdate} - ${PF}:${SLOT} was merged at revision ${ESVN_WC_REVISION}"
485     if [[ -d ${dir} ]]; then
486     echo "${logmessage}" >> "${dir}/${PN}.log"
487     else
488     eerror "Could not log the message '${logmessage}' to '${dir}/${PN}.log'"
489     fi
490     fi
491 zlin 1.51 }

  ViewVC Help
Powered by ViewVC 1.1.20