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

Contents of /eclass/subversion.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.66 - (hide annotations) (download)
Wed Apr 29 22:47:08 2009 UTC (5 years, 7 months ago) by scarabeus
Branch: MAIN
Changes since 1.65: +2 -2 lines
Typo++. Well sometimes copy/pasto just does not work.

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 scarabeus 1.66 # $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.65 2009/04/29 22:26:31 scarabeus 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 scarabeus 1.65 EXPORTED_FUNCTIONS="src_unpack pkg_preinst"
23     case "${EAPI:-0}" in
24     2) EXPORTED_FUNCTIONS="${EXPORTED_FUNCTIONS} src_prepare" ;;
25     1|0) ;;
26     *) die "Unknown EAPI, Bug eclass maintainers." ;;
27     esac
28     EXPORT_FUNCTIONS ${EXPORTED_FUNCTIONS}
29 hattya 1.1
30 hattya 1.5 DESCRIPTION="Based on the ${ECLASS} eclass"
31 hattya 1.1
32 zlin 1.46 DEPEND="dev-util/subversion
33     net-misc/rsync"
34 hattya 1.1
35 zlin 1.46 # @ECLASS-VARIABLE: ESVN_STORE_DIR
36     # @DESCRIPTION:
37     # subversion sources store directory. Users may override this in /etc/make.conf
38     [[ -z ${ESVN_STORE_DIR} ]] && ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/svn-src"
39    
40     # @ECLASS-VARIABLE: ESVN_FETCH_CMD
41     # @DESCRIPTION:
42     # subversion checkout command
43 hattya 1.25 ESVN_FETCH_CMD="svn checkout"
44    
45 zlin 1.46 # @ECLASS-VARIABLE: ESVN_UPDATE_CMD
46     # @DESCRIPTION:
47     # subversion update command
48 hattya 1.25 ESVN_UPDATE_CMD="svn update"
49 hattya 1.1
50 cardoe 1.48 # @ECLASS-VARIABLE: ESVN_SWITCH_CMD
51     # @DESCRIPTION:
52     # subversion switch command
53     ESVN_SWITCH_CMD="svn switch"
54    
55 zlin 1.46 # @ECLASS-VARIABLE: ESVN_OPTIONS
56     # @DESCRIPTION:
57     # the options passed to checkout or update. If you want a specific revision see
58     # ESVN_REPO_URI instead of using -rREV.
59     ESVN_OPTIONS="${ESVN_OPTIONS:-}"
60    
61     # @ECLASS-VARIABLE: ESVN_REPO_URI
62     # @DESCRIPTION:
63     # repository uri
64 hattya 1.1 #
65 zlin 1.46 # e.g. http://foo/trunk, svn://bar/trunk, svn://bar/branch/foo@1234
66 hattya 1.12 #
67     # supported protocols:
68     # http://
69     # https://
70     # svn://
71 hattya 1.33 # svn+ssh://
72 hattya 1.1 #
73 zlin 1.46 # to peg to a specific revision, append @REV to the repo's uri
74     ESVN_REPO_URI="${ESVN_REPO_URI:-}"
75 hattya 1.1
76 cardoe 1.47 # @ECLASS-VARIABLE: ESVN_REVISION
77     # @DESCRIPTION:
78     # User configurable revision checkout or update to from the repository
79     #
80     # Useful for live svn or trunk svn ebuilds allowing the user to peg
81     # to a specific revision
82     #
83     # Note: This should never be set in an ebuild!
84     ESVN_REVISION="${ESVN_REVISION:-}"
85    
86 arfrever 1.63 # @ECLASS-VARIABLE: ESVN_USER
87     # @DESCRIPTION:
88     # User name
89     ESVN_USER="${ESVN_USER:-}"
90    
91     # @ECLASS-VARIABLE: ESVN_PASSWORD
92     # @DESCRIPTION:
93     # Password
94     ESVN_PASSWORD="${ESVN_PASSWORD:-}"
95    
96 zlin 1.46 # @ECLASS-VARIABLE: ESVN_PROJECT
97     # @DESCRIPTION:
98     # project name of your ebuild (= name space)
99 hattya 1.1 #
100     # subversion eclass will check out the subversion repository like:
101     #
102     # ${ESVN_STORE_DIR}/${ESVN_PROJECT}/${ESVN_REPO_URI##*/}
103     #
104     # so if you define ESVN_REPO_URI as http://svn.collab.net/repo/svn/trunk or
105     # http://svn.collab.net/repo/svn/trunk/. and PN is subversion-svn.
106     # it will check out like:
107     #
108     # ${ESVN_STORE_DIR}/subversion/trunk
109     #
110 hattya 1.33 # this is not used in order to declare the name of the upstream project.
111     # so that you can declare this like:
112     #
113     # # jakarta commons-loggin
114     # ESVN_PROJECT=commons/logging
115     #
116 hattya 1.1 # default: ${PN/-svn}.
117 zlin 1.46 ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}"
118 hattya 1.1
119 zlin 1.46 # @ECLASS-VARIABLE: ESVN_BOOTSTRAP
120     # @DESCRIPTION:
121 hattya 1.8 # bootstrap script or command like autogen.sh or etc..
122 zlin 1.46 ESVN_BOOTSTRAP="${ESVN_BOOTSTRAP:-}"
123 hattya 1.1
124 zlin 1.46 # @ECLASS-VARIABLE: ESVN_PATCHES
125     # @DESCRIPTION:
126     # subversion eclass can apply patches in subversion_bootstrap().
127 peper 1.43 # you can use regexp in this variable like *.diff or *.patch or etc.
128     # NOTE: patches will be applied before ESVN_BOOTSTRAP is processed.
129 hattya 1.8 #
130 zlin 1.46 # Patches are searched both in ${PWD} and ${FILESDIR}, if not found in either
131     # location, the installation dies.
132     ESVN_PATCHES="${ESVN_PATCHES:-}"
133 hattya 1.33
134 zlin 1.46 # @ECLASS-VARIABLE: ESVN_RESTRICT
135     # @DESCRIPTION:
136 hattya 1.39 # this should be a space delimited list of subversion eclass features to
137     # restrict.
138 hattya 1.33 # export)
139     # don't export the working copy to S.
140 zlin 1.46 ESVN_RESTRICT="${ESVN_RESTRICT:-}"
141 hattya 1.45
142 zlin 1.49 # @ECLASS-VARIABLE: ESVN_OFFLINE
143     # @DESCRIPTION:
144     # Set this variable to a non-empty value to disable the automatic updating of
145     # an svn source tree. This is intended to be set outside the subversion source
146     # tree by users.
147     ESVN_OFFLINE="${ESVN_OFFLINE:-${ESCM_OFFLINE}}"
148    
149 zlin 1.52 # @ECLASS-VARIABLE: ESVN_UP_FREQ
150     # @DESCRIPTION:
151     # Set the minimum number of hours between svn up'ing in any given svn module. This is particularly
152     # useful for split KDE ebuilds where we want to ensure that all submodules are compiled for the same
153     # revision. It should also be kept user overrideable.
154     ESVN_UP_FREQ="${ESVN_UP_FREQ:=}"
155    
156 zlin 1.50 # @ECLASS-VARIABLE: ESCM_LOGDIR
157     # @DESCRIPTION:
158     # User configuration variable. If set to a path such as e.g. /var/log/scm any
159     # package inheriting from subversion.eclass will record svn revision to
160     # ${CATEGORY}/${PN}.log in that path in pkg_preinst. This is not supposed to be
161     # set by ebuilds/eclasses. It defaults to empty so users need to opt in.
162     ESCM_LOGDIR="${ESCM_LOGDIR:=}"
163    
164 zlin 1.46 # @FUNCTION: subversion_fetch
165     # @USAGE: [repo_uri] [destination]
166     # @DESCRIPTION:
167     # Wrapper function to fetch sources from subversion via svn checkout or svn update,
168     # depending on whether there is an existing working copy in ${ESVN_STORE_DIR}.
169     #
170     # Can take two optional parameters:
171     # repo_uri - a repository URI. default is ESVN_REPO_URI.
172     # destination - a check out path in S.
173     subversion_fetch() {
174 zlin 1.54 local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")"
175 cardoe 1.47 local revision="$(subversion__get_peg_revision "${1:-${ESVN_REPO_URI}}")"
176 hattya 1.39 local S_dest="${2}"
177 hattya 1.25
178 zlin 1.51 if [[ -z ${repo_uri} ]]; then
179     die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty."
180     fi
181    
182 cardoe 1.47 [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}"
183    
184 hattya 1.33 # check for the protocol
185 hattya 1.39 local protocol="${repo_uri%%:*}"
186 hattya 1.1
187 hattya 1.33 case "${protocol}" in
188 vapier 1.24 http|https)
189 hollow 1.58 if ! built_with_use --missing true -o dev-util/subversion webdav-neon webdav-serf || \
190 arfrever 1.63 built_with_use --missing false dev-util/subversion nowebdav; then
191 hattya 1.34 echo
192 vapier 1.24 eerror "In order to emerge this package, you need to"
193 hollow 1.58 eerror "reinstall Subversion with support for WebDAV."
194     eerror "Subversion requires either Neon or Serf to support WebDAV."
195 hattya 1.34 echo
196 hollow 1.58 die "${ESVN}: reinstall Subversion with support for WebDAV."
197 vapier 1.24 fi
198     ;;
199 hattya 1.33 svn|svn+ssh)
200     ;;
201 hattya 1.5 *)
202 zlin 1.46 die "${ESVN}: fetch from '${protocol}' is not yet implemented."
203 hattya 1.5 ;;
204     esac
205 hattya 1.1
206 hattya 1.38 addread "/etc/subversion"
207     addwrite "${ESVN_STORE_DIR}"
208    
209 zlin 1.46 if [[ ! -d ${ESVN_STORE_DIR} ]]; then
210 hattya 1.17 debug-print "${FUNCNAME}: initial checkout. creating subversion directory"
211 hattya 1.33 mkdir -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}."
212 hattya 1.1 fi
213    
214 hattya 1.33 cd "${ESVN_STORE_DIR}" || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}"
215 hattya 1.1
216 hattya 1.39 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
217 hattya 1.38 local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion"
218 hattya 1.1
219 cardoe 1.47 [[ -n "${revision}" ]] && options="${options} -r ${revision}"
220    
221     if [[ "${ESVN_OPTIONS}" = *-r* ]]; then
222     ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please"
223     ewarn "see \${ESVN_REPO_URI}"
224     fi
225    
226 arfrever 1.61 if has_version ">=dev-util/subversion-1.6.0"; then
227     options="${options} --config-option=config:auth:password-stores="
228     fi
229    
230 hattya 1.39 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\""
231 hattya 1.25 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\""
232 hattya 1.38 debug-print "${FUNCNAME}: options = \"${options}\""
233 joker 1.37
234 zlin 1.46 if [[ ! -d ${wc_path}/.svn ]]; then
235 zlin 1.53 if [[ -n ${ESVN_OFFLINE} ]]; then
236 arfrever 1.63 ewarn "ESVN_OFFLINE cannot be used when there is no existing checkout."
237 zlin 1.53 fi
238 hattya 1.1 # first check out
239     einfo "subversion check out start -->"
240 cardoe 1.47 einfo " repository: ${repo_uri}${revision:+@}${revision}"
241 hattya 1.1
242 hattya 1.39 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}"
243    
244     mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}."
245     cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}"
246 arfrever 1.63 if [[ -n "${ESVN_USER}" ]]; then
247     ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
248     else
249     ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
250     fi
251 hattya 1.12
252 zlin 1.49 elif [[ -n ${ESVN_OFFLINE} ]]; then
253 arfrever 1.62 svn cleanup "${wc_path}"
254 zlin 1.49 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
255     if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then
256     die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally."
257     fi
258 zlin 1.56 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}."
259 hattya 1.1 else
260 arfrever 1.62 svn cleanup "${wc_path}"
261 peper 1.44 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
262 hattya 1.45
263 zlin 1.52 local esvn_up_freq=
264     if [[ -n ${ESVN_UP_FREQ} ]]; then
265     if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then
266     die "${ESVN}: ESVN_UP_FREQ must be an integer value corresponding to the minimum number of hours between svn up."
267     elif [[ -z $(find "${wc_path}/.svn/entries" -mmin "+$((ESVN_UP_FREQ*60))") ]]; then
268 zlin 1.56 einfo "Fetching disabled since ${ESVN_UP_FREQ} hours has not passed since last update."
269     einfo "Using existing repository copy at revision ${ESVN_WC_REVISION}."
270 zlin 1.52 esvn_up_freq=no_update
271     fi
272     fi
273    
274     if [[ -z ${esvn_up_freq} ]]; then
275     if [[ ${ESVN_WC_URL} != $(subversion__get_repository_uri "${repo_uri}") ]]; then
276 zlin 1.57 einfo "subversion switch start -->"
277 zlin 1.52 einfo " old repository: ${ESVN_WC_URL}@${ESVN_WC_REVISION}"
278     einfo " new repository: ${repo_uri}${revision:+@}${revision}"
279 cardoe 1.48
280 zlin 1.52 debug-print "${FUNCNAME}: ${ESVN_SWITCH_CMD} ${options} ${repo_uri}"
281 hattya 1.34
282 zlin 1.52 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
283 arfrever 1.63 if [[ -n "${ESVN_USER}" ]]; then
284     ${ESVN_SWITCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
285     else
286     ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
287     fi
288 zlin 1.52 else
289     # update working copy
290     einfo "subversion update start -->"
291     einfo " repository: ${repo_uri}${revision:+@}${revision}"
292 hattya 1.25
293 zlin 1.52 debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}"
294 hattya 1.39
295 zlin 1.52 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
296 arfrever 1.63 if [[ -n "${ESVN_USER}" ]]; then
297     ${ESVN_UPDATE_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
298     else
299     ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
300     fi
301 zlin 1.52 fi
302 cardoe 1.48 fi
303 peper 1.43 fi
304 hattya 1.1
305 hattya 1.39 einfo " working copy: ${wc_path}"
306 hattya 1.33
307     if ! has "export" ${ESVN_RESTRICT}; then
308 hattya 1.39 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
309    
310     local S="${S}/${S_dest}"
311 zlin 1.60 mkdir -p "${S}"
312 hattya 1.33
313     # export to the ${WORKDIR}
314     #* "svn export" has a bug. see http://bugs.gentoo.org/119236
315     #* svn export . "${S}" || die "${ESVN}: can't export to ${S}."
316     rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}."
317     fi
318 hattya 1.1
319 hattya 1.8 echo
320 hattya 1.1 }
321    
322 zlin 1.46 # @FUNCTION: subversion_bootstrap
323     # @DESCRIPTION:
324     # Apply patches in ${ESVN_PATCHES} and run ${ESVN_BOOTSTRAP} if specified.
325     subversion_bootstrap() {
326 hattya 1.33 if has "export" ${ESVN_RESTRICT}; then
327     return
328     fi
329 hattya 1.1
330 hattya 1.8 cd "${S}"
331    
332 zlin 1.46 if [[ -n ${ESVN_PATCHES} ]]; then
333 hattya 1.15 einfo "apply patches -->"
334 hattya 1.12
335 peper 1.43 local patch fpatch
336 hattya 1.45
337 peper 1.43 for patch in ${ESVN_PATCHES}; do
338 zlin 1.46 if [[ -f ${patch} ]]; then
339 peper 1.43 epatch "${patch}"
340 hattya 1.45
341 hattya 1.8 else
342 peper 1.43 for fpatch in ${FILESDIR}/${patch}; do
343 zlin 1.46 if [[ -f ${fpatch} ]]; then
344 peper 1.43 epatch "${fpatch}"
345 hattya 1.45
346 hattya 1.8 else
347 peper 1.43 die "${ESVN}: ${patch} not found"
348 hattya 1.45
349 hattya 1.8 fi
350     done
351 hattya 1.45
352 hattya 1.8 fi
353     done
354 hattya 1.45
355 hattya 1.8 echo
356     fi
357    
358 zlin 1.46 if [[ -n ${ESVN_BOOTSTRAP} ]]; then
359 hattya 1.8 einfo "begin bootstrap -->"
360 hattya 1.12
361 zlin 1.46 if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then
362 hattya 1.8 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}"
363     eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP."
364 hattya 1.45
365 hattya 1.8 else
366 peper 1.43 einfo " bootstrap with command: ${ESVN_BOOTSTRAP}"
367 hattya 1.8 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP."
368 hattya 1.45
369 hattya 1.1 fi
370     fi
371     }
372    
373 zlin 1.46 # @FUNCTION: subversion_src_unpack
374     # @DESCRIPTION:
375 arfrever 1.64 # Default src_unpack. Fetch and, in older EAPIs, bootstrap.
376 zlin 1.46 subversion_src_unpack() {
377 hattya 1.34 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
378 scarabeus 1.66 has src_prepare ${EXPORTED_FUNCTIONS} || subversion_src_prepare
379 arfrever 1.64 }
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