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

Diff of /eclass/cvs.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.56 Revision 1.75
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2008 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/cvs.eclass,v 1.56 2005/07/06 20:20:03 agriffis Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/cvs.eclass,v 1.75 2010/08/24 21:00:15 vapier Exp $
4 4
5# Current Maintainer: Tal Peer <coredumb@gentoo.org> 5# @ECLASS: cvs.eclass
6# Original Author: Dan Armak <danarmak@gentoo.org> 6# @MAINTAINER:
7 7# vapier@gentoo.org (and anyone who wants to help)
8# SSH auth code by Danny <danny.milo@gmx.net> 8# @BLURB: This eclass provides generic cvs fetching functions
9 9# @DESCRIPTION:
10# SSH password authentication support and host key verification
11# support by Jeremy Maitin-Shepard <jbms@gentoo.org>
12
13
14# This eclass provides the generic cvs fetching functions. To use 10# This eclass provides the generic cvs fetching functions. To use this from an
15# this from an ebuild, set the `ebuild-configurable settings' as 11# ebuild, set the ECLASS VARIABLES as specified below in your ebuild before
16# specified below in your ebuild before inheriting. Then either leave 12# inheriting. Then either leave the default src_unpack or extend over
17# the default src_unpack or extend over cvs_src_unpack. If you find 13# cvs_src_unpack. If you find that you need to call the cvs_* functions
18# that you need to call the cvs_* functions directly, I'd be
19# interested to hear about it. 14# directly, I'd be interested to hear about it.
15
16inherit eutils
20 17
21# TODO: 18# TODO:
22 19
23# Implement more auth types (gserver?, kserver?) 20# Implement more auth types (gserver?, kserver?)
24 21
25# Support additional remote shells with `ext' authentication (does 22# Support additional remote shells with `ext' authentication (does
26# anyone actually need to use it with anything other than SSH?) 23# anyone actually need to use it with anything other than SSH?)
27 24
28
29INHERITED="$INHERITED $ECLASS"
30 25
31# Users shouldn't change these settings! The ebuild/eclass inheriting 26# Users shouldn't change these settings! The ebuild/eclass inheriting
32# this eclass will take care of that. If you want to set the global 27# this eclass will take care of that. If you want to set the global
33# KDE cvs ebuilds' settings, see the comments in kde-source.eclass. 28# KDE cvs ebuilds' settings, see the comments in kde-source.eclass.
34 29
35# --- begin ebuild-configurable settings 30# @ECLASS-VARIABLE: ECVS_CVS_COMMAND
36 31# @DESCRIPTION:
37# ECVS_CVS_COMMAND -- CVS command to run 32# CVS command to run
38# 33#
39# You can set, for example, "cvs -t" for extensive debug information 34# You can set, for example, "cvs -t" for extensive debug information
40# on the cvs connection. The default of "cvs -q -f -z4" means to be 35# on the cvs connection. The default of "cvs -q -f -z4" means to be
41# quiet, to disregard the ~/.cvsrc config file and to use maximum 36# quiet, to disregard the ~/.cvsrc config file and to use maximum
42# compression. 37# compression.
38[[ -z ${ECVS_CVS_COMMAND} ]] && ECVS_CVS_COMMAND="cvs ${ECVS_CVS_OPTIONS} ${ECVS_CVS_COMPRESS}"
43 39
44[ -z "$ECVS_CVS_COMMAND" ] && ECVS_CVS_COMMAND="cvs -q -f -z4" 40# @ECLASS-VARIABLE: ECVS_CVS_COMPRESS
41# @DESCRIPTION:
42# Set the compression level.
43[[ -z ${ECVS_CVS_COMPRESS} ]] && ECVS_CVS_COMPRESS="-z1"
45 44
45# @ECLASS-VARIABLE: ECVS_CVS_OPTIONS
46# @DESCRIPTION:
47# Additional options to the cvs commands.
48[[ -z ${ECVS_CVS_OPTIONS} ]] && ECVS_CVS_OPTIONS="-q -f"
46 49
47# ECVS_UP_OPTS, ECVS_CO_OPTS -- CVS options given after the cvs 50# @ECLASS-VARIABLE: ECVS_UP_OPTS
48# command (update or checkout). 51# @DESCRIPTION:
49# 52# CVS options given after the cvs update command. Don't remove "-dP" or things
50# Don't remove -dP from update or things won't work. 53# won't work.
51
52[ -z "$ECVS_UP_OPTS" ] && ECVS_UP_OPTS="-dP" 54[ -z "$ECVS_UP_OPTS" ] && ECVS_UP_OPTS="-dP"
55
56# @ECLASS-VARIABLE: ECVS_CO_OPTS
57# @DESCRIPTION:
58# CVS options given after the cvs checkout command.
53[ -z "$ECVS_CO_OPTS" ] && ECVS_CO_OPTS="" 59[ -z "$ECVS_CO_OPTS" ] && ECVS_CO_OPTS=""
54 60
61# @ECLASS-VARIABLE: ECVS_OFFLINE
62# @DESCRIPTION:
63# Set this variable to a non-empty value to disable the automatic updating of
64# a CVS source tree. This is intended to be set outside the cvs source
65# tree by users.
66: ${ECVS_OFFLINE:=${ESCM_OFFLINE}}
55 67
68# @ECLASS-VARIABLE: ECVS_LOCAL
69# @DEFAULT_UNSET
70# @DESCRIPTION:
56# ECVS_LOCAL -- If this is set, the CVS module will be fetched 71# If this is set, the CVS module will be fetched non-recursively.
57# non-recursively. Refer to the information in the CVS man page 72# Refer to the information in the CVS man page regarding the -l
58# regarding the -l command option (not the -l global option). 73# command option (not the -l global option).
59 74
60 75# @ECLASS-VARIABLE: ECVS_LOCALNAME
76# @DEFAULT_UNSET
77# @DESCRIPTION:
61# ECVS_LOCALNAME -- local name of checkout directory 78# Local name of checkout directory
62# 79#
63# This is useful if the module on the server is called something 80# This is useful if the module on the server is called something
64# common like 'driver' or is nested deep in a tree, and you don't like 81# common like 'driver' or is nested deep in a tree, and you don't like
65# useless empty directories. 82# useless empty directories.
66# 83#
67# WARNING: Set this only from within ebuilds! If set in your shell or 84# WARNING: Set this only from within ebuilds! If set in your shell or
68# some such, things will break because the ebuild won't expect it and 85# some such, things will break because the ebuild won't expect it and
69# have e.g. a wrong $S setting. 86# have e.g. a wrong $S setting.
70 87
71 88# @ECLASS-VARIABLE: ECVS_TOP_DIR
89# @DESCRIPTION:
72# ECVS_TOP_DIR -- The directory under which CVS modules are checked 90# The directory under which CVS modules are checked out.
73# out.
74
75[ -z "$ECVS_TOP_DIR" ] && ECVS_TOP_DIR="${DISTDIR}/cvs-src" 91[ -z "$ECVS_TOP_DIR" ] && ECVS_TOP_DIR="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/cvs-src"
76 92
77# ECVS_SERVER -- CVS path 93# @ECLASS-VARIABLE: ECVS_SERVER
94# @DESCRIPTION:
95# CVS path
78# 96#
79# The format is "server:/dir", e.g. "anoncvs.kde.org:/home/kde". 97# The format is "server:/dir", e.g. "anoncvs.kde.org:/home/kde".
80# Remove the other parts of the full CVSROOT, which might look like 98# Remove the other parts of the full CVSROOT, which might look like
81# ":pserver:anonymous@anoncvs.kde.org:/home/kde"; this is generated 99# ":pserver:anonymous@anoncvs.kde.org:/home/kde"; this is generated
82# using other settings also. 100# using other settings also.
83# 101#
84# Set this to "offline" to disable fetching (i.e. to assume the module 102# Set this to "offline" to disable fetching (i.e. to assume the module
85# is already checked out in ECVS_TOP_DIR). 103# is already checked out in ECVS_TOP_DIR).
86
87[ -z "$ECVS_SERVER" ] && ECVS_SERVER="offline" 104[ -z "$ECVS_SERVER" ] && ECVS_SERVER="offline"
88 105
89 106# @ECLASS-VARIABLE: ECVS_MODULE
107# @REQUIRED
108# @DESCRIPTION:
90# ECVS_MODULE -- the name of the CVS module to be fetched 109# The name of the CVS module to be fetched
91# 110#
92# This must be set when cvs_src_unpack is called. This can include 111# This must be set when cvs_src_unpack is called. This can include
93# several directory levels, i.e. "foo/bar/baz" 112# several directory levels, i.e. "foo/bar/baz"
94 113
95#[ -z "$ECVS_MODULE" ] && die "$ECLASS: error: ECVS_MODULE not set, cannot continue" 114#[ -z "$ECVS_MODULE" ] && die "$ECLASS: error: ECVS_MODULE not set, cannot continue"
96 115
97 116# @ECLASS-VARIABLE: ECVS_BRANCH
117# @DEFAULT_UNSET
118# @DESCRIPTION:
98# ECVS_BRANCH -- the name of the branch/tag to use 119# The name of the branch/tag to use
99 120#
100# The default is "HEAD". The following default _will_ reset your 121# The default is "HEAD". The following default _will_ reset your
101# branch checkout to head if used. 122# branch checkout to head if used.
102 123
103#[ -z "$ECVS_BRANCH" ] && ECVS_BRANCH="HEAD" 124#[ -z "$ECVS_BRANCH" ] && ECVS_BRANCH="HEAD"
104 125
105 126# @ECLASS-VARIABLE: ECVS_AUTH
127# @DESCRIPTION:
106# ECVS_AUTH -- authentication method to use 128# Authentication method to use
107# 129#
108# Possible values are "pserver" and "ext". If `ext' authentication is 130# Possible values are "pserver" and "ext". If `ext' authentication is
109# used, the remote shell to use can be specified in CVS_RSH (SSH is 131# used, the remote shell to use can be specified in CVS_RSH (SSH is
110# used by default). Currently, the only supported remote shell for 132# used by default). Currently, the only supported remote shell for
111# `ext' authentication is SSH. 133# `ext' authentication is SSH.
116# e.g. 138# e.g.
117# "cvs -danoncvs@savannah.gnu.org:/cvsroot/backbone co System" 139# "cvs -danoncvs@savannah.gnu.org:/cvsroot/backbone co System"
118# ( from gnustep-apps/textedit ) 140# ( from gnustep-apps/textedit )
119[ -z "$ECVS_AUTH" ] && ECVS_AUTH="pserver" 141[ -z "$ECVS_AUTH" ] && ECVS_AUTH="pserver"
120 142
143# @ECLASS-VARIABLE: ECVS_USER
144# @DESCRIPTION:
121# ECVS_USER -- Username to use for authentication on the remote server 145# Username to use for authentication on the remote server.
122[ -z "$ECVS_USER" ] && ECVS_USER="anonymous" 146[ -z "$ECVS_USER" ] && ECVS_USER="anonymous"
123 147
124 148# @ECLASS-VARIABLE: ECVS_PASS
149# @DESCRIPTION:
125# ECVS_PASS -- Password to use for authentication on the remote server 150# Password to use for authentication on the remote server
126[ -z "$ECVS_PASS" ] && ECVS_PASS="" 151[ -z "$ECVS_PASS" ] && ECVS_PASS=""
127 152
128 153# @ECLASS-VARIABLE: ECVS_SSH_HOST_KEY
129# ECVS_SSH_HOST_KEY 154# @DEFAULT_UNSET
130# 155# @DESCRIPTION:
131# If SSH is used for `ext' authentication, use this variable to 156# If SSH is used for `ext' authentication, use this variable to
132# specify the host key of the remote server. The format of the value 157# specify the host key of the remote server. The format of the value
133# should be the same format that is used for the SSH known hosts file. 158# should be the same format that is used for the SSH known hosts file.
134# 159#
135# WARNING: If a SSH host key is not specified using this variable, the 160# WARNING: If a SSH host key is not specified using this variable, the
136# remote host key will not be verified. 161# remote host key will not be verified.
137 162
138 163# @ECLASS-VARIABLE: ECVS_CLEAN
164# @DEFAULT_UNSET
165# @DESCRIPTION:
139# ECVS_CLEAN -- Set this to get a clean copy when updating (passes the 166# Set this to get a clean copy when updating (passes the
140# -C option to cvs update) 167# -C option to cvs update)
141 168
142 169# @ECLASS-VARIABLE: ECVS_RUNAS
143# ECVS_RUNAS 170# @DEFAULT_UNSET
144# 171# @DESCRIPTION:
145# Specifies an alternate (non-root) user to use to run cvs. Currently 172# Specifies an alternate (non-root) user to use to run cvs. Currently
146# b0rked and wouldn't work with portage userpriv anyway without 173# b0rked and wouldn't work with portage userpriv anyway without
147# special magic. 174# special magic.
148 175
149# [ -z "$ECVS_RUNAS" ] && ECVS_RUNAS="`whoami`" 176# [ -z "$ECVS_RUNAS" ] && ECVS_RUNAS="`whoami`"
150 177
151
152# ECVS_SUBDIR -- deprecated, do not use 178# ECVS_SUBDIR -- deprecated, do not use
153[ -n "$ECVS_SUBDIR" ] && die "ERROR: deprecated ECVS_SUBDIR defined. Please fix this ebuild." 179[ -n "$ECVS_SUBDIR" ] && die "ERROR: deprecated ECVS_SUBDIR defined. Please fix this ebuild."
154
155
156# --- end ebuild-configurable settings ---
157 180
158# add cvs to deps 181# add cvs to deps
159# ssh is used for ext auth 182# ssh is used for ext auth
160# sudo is used to run as a specified user 183# sudo is used to run as a specified user
161DEPEND="$DEPEND dev-util/cvs app-admin/sudo" 184DEPEND="dev-vcs/cvs"
185
186[ -n "$ECVS_RUNAS" ] && DEPEND="$DEPEND app-admin/sudo"
162 187
163if [ "$ECVS_AUTH" == "ext" ]; then 188if [ "$ECVS_AUTH" == "ext" ]; then
164 #default to ssh 189 #default to ssh
165 [ -z "$CVS_RSH" ] && export SSH_RSH="ssh" 190 [ -z "$CVS_RSH" ] && export CVS_RSH="ssh"
166 if [ "$CVS_RSH" != "ssh" ]; then 191 if [ "$CVS_RSH" != "ssh" ]; then
167 die "Support for ext auth with clients other than ssh has not been implemented yet" 192 die "Support for ext auth with clients other than ssh has not been implemented yet"
168 fi 193 fi
169 DEPEND="$DEPEND net-misc/openssh" 194 DEPEND="${DEPEND} net-misc/openssh"
170fi 195fi
171 196
172# called from cvs_src_unpack 197# called from cvs_src_unpack
173cvs_fetch() { 198cvs_fetch() {
174 199
177 202
178 local ECVS_COMMAND="${ECVS_COMMAND}" 203 local ECVS_COMMAND="${ECVS_COMMAND}"
179 local ECVS_UP_OPTS="${ECVS_UP_OPTS}" 204 local ECVS_UP_OPTS="${ECVS_UP_OPTS}"
180 local ECVS_CO_OPTS="${ECVS_CO_OPTS}" 205 local ECVS_CO_OPTS="${ECVS_CO_OPTS}"
181 206
182 # Fix for sourceforge which doesnt want -z>3 anymore.
183
184 (echo $ECVS_SERVER | grep -q sourceforge) \
185 && [ "$ECVS_CVS_COMMAND" == "cvs -q -f -z4" ] \
186 && ECVS_CVS_COMMAND="cvs -q -f -z3"
187
188 debug-print-function $FUNCNAME $* 207 debug-print-function $FUNCNAME $*
189 208
190 # Update variables that are modified by ebuild parameters, which 209 # Update variables that are modified by ebuild parameters, which
191 # should be effective every time cvs_fetch is called, and not just 210 # should be effective every time cvs_fetch is called, and not just
192 # every time cvs.eclass is inherited 211 # every time cvs.eclass is inherited
193 212
194
195 # Handle parameter for local (non-recursive) fetching 213 # Handle parameter for local (non-recursive) fetching
196 214
197 if [ -n "$ECVS_LOCAL" ]; then 215 if [ -n "$ECVS_LOCAL" ]; then
198 ECVS_UP_OPTS="$ECVS_UP_OPTS -l" 216 ECVS_UP_OPTS="$ECVS_UP_OPTS -l"
199 ECVS_CO_OPTS="$ECVS_CO_OPTS -l" 217 ECVS_CO_OPTS="$ECVS_CO_OPTS -l"
200 fi 218 fi
201 219
202 # Handle ECVS_BRANCH option 220 # Handle ECVS_BRANCH option
203 # 221 #
204 # Because CVS auto-switches branches, we just have to pass the 222 # Because CVS auto-switches branches, we just have to pass the
205 # correct -rBRANCH option when updating. 223 # correct -rBRANCH option when updating.
206 224
207 if [ -n "$ECVS_BRANCH" ]; then 225 if [ -n "$ECVS_BRANCH" ]; then
208 ECVS_UP_OPTS="$ECVS_UP_OPTS -r$ECVS_BRANCH" 226 ECVS_UP_OPTS="$ECVS_UP_OPTS -r$ECVS_BRANCH"
278 # be put in Root 296 # be put in Root
279 if [ "$ECVS_AUTH" == "no" ] 297 if [ "$ECVS_AUTH" == "no" ]
280 then 298 then
281 local server="${ECVS_USER}@${ECVS_SERVER}" 299 local server="${ECVS_USER}@${ECVS_SERVER}"
282 else 300 else
301 local connection="${ECVS_AUTH}"
302 [[ -n ${ECVS_PROXY} ]] && connection="${connection};proxy=${ECVS_PROXY}"
303 [[ -n ${ECVS_PROXY_PORT} ]] && connection="${connection};proxyport=${ECVS_PROXY_PORT}"
283 local server=":${ECVS_AUTH}:${ECVS_USER}@${ECVS_SERVER}" 304 local server=":${connection}:${ECVS_USER}@${ECVS_SERVER}"
284 fi 305 fi
285 306
286 # Switch servers automagically if needed 307 # Switch servers automagically if needed
287 if [ "$mode" == "update" ]; then 308 if [ "$mode" == "update" ]; then
288 cd /$ECVS_TOP_DIR/$ECVS_LOCALNAME 309 cd /$ECVS_TOP_DIR/$ECVS_LOCALNAME
339 eval $cmdlogin || die "cvs login command failed" 360 eval $cmdlogin || die "cvs login command failed"
340 if [ "${mode}" == "update" ]; then 361 if [ "${mode}" == "update" ]; then
341 einfo "Running $cmdupdate" 362 einfo "Running $cmdupdate"
342 eval $cmdupdate || die "cvs update command failed" 363 eval $cmdupdate || die "cvs update command failed"
343 elif [ "${mode}" == "checkout" ]; then 364 elif [ "${mode}" == "checkout" ]; then
344 einfo "Running $cmdcheckout" 365 einfo "Running $cmdcheckout"
345 eval $cmdcheckout|| die "cvs checkout command failed" 366 eval $cmdcheckout|| die "cvs checkout command failed"
346 fi 367 fi
347 elif [ "${ECVS_AUTH}" == "ext" ] || [ "${ECVS_AUTH}" == "no" ]; then 368 elif [ "${ECVS_AUTH}" == "ext" ] || [ "${ECVS_AUTH}" == "no" ]; then
348 369
349 # Hack to support SSH password authentication 370 # Hack to support SSH password authentication
414 echo "${CVS_ECLASS_STRICT_HOST_CHECKING}')" \ 435 echo "${CVS_ECLASS_STRICT_HOST_CHECKING}')" \
415 >> "${CVS_RSH}" 436 >> "${CVS_RSH}"
416 echo "os.execv('/usr/bin/ssh', newarglist)" \ 437 echo "os.execv('/usr/bin/ssh', newarglist)" \
417 >> "${CVS_RSH}" 438 >> "${CVS_RSH}"
418 439
419 chmod a+x "${CVS_RSH}" 440 chmod a+x "${CVS_RSH}"
420 441
421 # Make sure DISPLAY is set (SSH will not use SSH_ASKPASS 442 # Make sure DISPLAY is set (SSH will not use SSH_ASKPASS
422 # if DISPLAY is not set) 443 # if DISPLAY is not set)
423 444
424 [ -z "${DISPLAY}" ] && DISPLAY="DISPLAY" 445 [ -z "${DISPLAY}" ] && DISPLAY="DISPLAY"
425 export DISPLAY 446 export DISPLAY
426 447
427 # Create a dummy executable to echo $ECVS_PASS 448 # Create a dummy executable to echo $ECVS_PASS
428 449
429 export SSH_ASKPASS="${T}/cvs_sshechopass" 450 export SSH_ASKPASS="${T}/cvs_sshechopass"
430 if [ "${ECVS_AUTH}" != "no" ]; then 451 if [ "${ECVS_AUTH}" != "no" ]; then
431 echo -en "#!/bin/bash\necho \"$ECVS_PASS\"\n" \ 452 echo -en "#!/bin/bash\necho \"$ECVS_PASS\"\n" \
432 > "${SSH_ASKPASS}" 453 > "${SSH_ASKPASS}"
433 else 454 else
434 echo -en "#!/bin/bash\nreturn\n" \ 455 echo -en "#!/bin/bash\nreturn\n" \
435 > "${SSH_ASKPASS}" 456 > "${SSH_ASKPASS}"
436 457
437 fi 458 fi
438 chmod a+x "${SSH_ASKPASS}" 459 chmod a+x "${SSH_ASKPASS}"
439 fi 460 fi
440 461
441 if [ "${mode}" == "update" ]; then 462 if [ "${mode}" == "update" ]; then
442 einfo "Running $cmdupdate" 463 einfo "Running $cmdupdate"
443 eval $cmdupdate || die "cvs update command failed" 464 eval $cmdupdate || die "cvs update command failed"
444 elif [ "${mode}" == "checkout" ]; then 465 elif [ "${mode}" == "checkout" ]; then
445 einfo "Running $cmdcheckout" 466 einfo "Running $cmdcheckout"
446 eval $cmdcheckout|| die "cvs checkout command failed" 467 eval $cmdcheckout|| die "cvs checkout command failed"
447 fi 468 fi
448 469
449 # Restore environment variable values 470 # Restore environment variable values
450 export CVS_RSH="${CVS_ECLASS_ORIG_CVS_RSH}" 471 export CVS_RSH="${CVS_ECLASS_ORIG_CVS_RSH}"
451 if [ "${CVS_ECLASS_ORIG_SSH_ASKPASS+set}" == "set" ]; then 472 if [ "${CVS_ECLASS_ORIG_SSH_ASKPASS+set}" == "set" ]; then
452 export SSH_ASKPASS="${CVS_ECLASS_ORIG_SSH_ASKPASS}" 473 export SSH_ASKPASS="${CVS_ECLASS_ORIG_SSH_ASKPASS}"
453 else 474 else
467 chown `whoami` "${T}/cvspass" 488 chown `whoami` "${T}/cvspass"
468 fi 489 fi
469 490
470} 491}
471 492
472 493# @FUNCTION: cvs_src_unpack
494# @DESCRIPTION:
495# The cvs src_unpack function, which will be exported
473cvs_src_unpack() { 496cvs_src_unpack() {
474 497
475 debug-print-function $FUNCNAME $* 498 debug-print-function $FUNCNAME $*
476 499
477 debug-print "$FUNCNAME: init: 500 debug-print "$FUNCNAME: init:
490 [ -z "$ECVS_MODULE" ] && die "ERROR: CVS module not set, cannot continue." 513 [ -z "$ECVS_MODULE" ] && die "ERROR: CVS module not set, cannot continue."
491 514
492 local ECVS_LOCALNAME="${ECVS_LOCALNAME}" 515 local ECVS_LOCALNAME="${ECVS_LOCALNAME}"
493 516
494 if [ -z "$ECVS_LOCALNAME" ]; then 517 if [ -z "$ECVS_LOCALNAME" ]; then
495 ECVS_LOCALNAME="$ECVS_MODULE" 518 ECVS_LOCALNAME="$ECVS_MODULE"
496 fi 519 fi
497 520
498 if [ "$ECVS_SERVER" == "offline" ]; then 521 local sanitized_pn=$(echo "${PN}" | LC_ALL=C sed -e 's:[^A-Za-z0-9_]:_:g')
522 local offline_pkg_var="ECVS_OFFLINE_${sanitized_pn}"
523 if [[ -n ${!offline_pkg_var}${ECVS_OFFLINE} ]] || [[ "$ECVS_SERVER" == "offline" ]] ; then
499 # We're not required to fetch anything; the module already 524 # We're not required to fetch anything; the module already
500 # exists and shouldn't be updated. 525 # exists and shouldn't be updated.
501 if [ -d "${ECVS_TOP_DIR}/${ECVS_LOCALNAME}" ]; then 526 if [ -d "${ECVS_TOP_DIR}/${ECVS_LOCALNAME}" ]; then
502 debug-print "$FUNCNAME: offline mode" 527 debug-print "$FUNCNAME: offline mode"
503 else 528 else
504 debug-print "$FUNCNAME: Offline mode specified but directory ${ECVS_TOP_DIR}/${ECVS_LOCALNAME} not found, exiting with error" 529 debug-print "$FUNCNAME: Offline mode specified but directory ${ECVS_TOP_DIR}/${ECVS_LOCALNAME} not found, exiting with error"
505 die "ERROR: Offline mode specified, but directory ${ECVS_TOP_DIR}/${ECVS_LOCALNAME} not found. Aborting." 530 die "ERROR: Offline mode specified, but directory ${ECVS_TOP_DIR}/${ECVS_LOCALNAME} not found. Aborting."
506 fi 531 fi
520 if [ -n "$ECVS_LOCAL" ]; then 545 if [ -n "$ECVS_LOCAL" ]; then
521 cp -f "$ECVS_TOP_DIR/$ECVS_LOCALNAME"/* "$WORKDIR/$ECVS_LOCALNAME" 546 cp -f "$ECVS_TOP_DIR/$ECVS_LOCALNAME"/* "$WORKDIR/$ECVS_LOCALNAME"
522 else 547 else
523 cp -Rf "$ECVS_TOP_DIR/$ECVS_LOCALNAME" "$WORKDIR/$ECVS_LOCALNAME/.." 548 cp -Rf "$ECVS_TOP_DIR/$ECVS_LOCALNAME" "$WORKDIR/$ECVS_LOCALNAME/.."
524 fi 549 fi
550
551 # Not exactly perfect, but should be pretty close #333773
552 export ECVS_VERSION=$(find "$ECVS_TOP_DIR/$ECVS_LOCALNAME/" -ipath '*/CVS/Entries' -exec cat {} + | LC_ALL=C sort | sha1sum | awk '{print $1}')
553 export ESCM_VERSION=${ECVS_VERSION}
525 554
526 # If the directory is empty, remove it; empty directories cannot 555 # If the directory is empty, remove it; empty directories cannot
527 # exist in cvs. This happens when, for example, kde-source 556 # exist in cvs. This happens when, for example, kde-source
528 # requests module/doc/subdir which doesn't exist. Still create 557 # requests module/doc/subdir which doesn't exist. Still create
529 # the empty directory in workdir though. 558 # the empty directory in workdir though.
535 # Implement some of base_src_unpack's functionality; note however 564 # Implement some of base_src_unpack's functionality; note however
536 # that base.eclass may not have been inherited! 565 # that base.eclass may not have been inherited!
537 if [ -n "$PATCHES" ]; then 566 if [ -n "$PATCHES" ]; then
538 debug-print "$FUNCNAME: PATCHES=$PATCHES, S=$S, autopatching" 567 debug-print "$FUNCNAME: PATCHES=$PATCHES, S=$S, autopatching"
539 cd "$S" 568 cd "$S"
540 for x in $PATCHES; do 569 epatch ${PATCHES}
541 debug-print "patching from $x"
542 patch -p0 < "$x"
543 done
544 # Make sure we don't try to apply patches more than once, 570 # Make sure we don't try to apply patches more than once,
545 # since cvs_src_unpack is usually called several times from 571 # since cvs_src_unpack is usually called several times from
546 # e.g. kde-source_src_unpack 572 # e.g. kde-source_src_unpack
547 export PATCHES="" 573 export PATCHES=""
548 fi 574 fi
549 575
550 einfo "CVS module ${ECVS_MODULE} is now in ${WORKDIR}" 576 einfo "CVS module ${ECVS_MODULE} is now in ${WORKDIR}"
551} 577}
552 578
553EXPORT_FUNCTIONS src_unpack 579EXPORT_FUNCTIONS src_unpack

Legend:
Removed from v.1.56  
changed lines
  Added in v.1.75

  ViewVC Help
Powered by ViewVC 1.1.20