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

Contents of /eclass/subversion.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.59 - (hide annotations) (download)
Thu May 15 13:27:40 2008 UTC (6 years, 2 months ago) by zlin
Branch: MAIN
Changes since 1.58: +4 -4 lines
Print checkout dir when svn update fails.

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

  ViewVC Help
Powered by ViewVC 1.1.20