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

Contents of /eclass/subversion.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.64 - (hide annotations) (download)
Sun Apr 26 02:33:36 2009 UTC (4 years, 11 months ago) by arfrever
Branch: MAIN
Changes since 1.63: +16 -3 lines
Update for EAPI="2".

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

  ViewVC Help
Powered by ViewVC 1.1.20