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

Contents of /eclass/subversion.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.62 - (hide annotations) (download)
Sun Apr 26 01:57:14 2009 UTC (5 years, 2 months ago) by arfrever
Branch: MAIN
Changes since 1.61: +3 -1 lines
Run 'svn cleanup' to automatically upgrade working copies.

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

  ViewVC Help
Powered by ViewVC 1.1.20