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

Diff of /eclass/cvs.eclass

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

Revision 1.57 Revision 1.61
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2004 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.57 2005/07/06 20:23:20 agriffis Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/cvs.eclass,v 1.61 2005/09/21 23:22:56 vapier Exp $
4 4
5# Current Maintainer: Tal Peer <coredumb@gentoo.org> 5inherit eutils
6# Original Author: Dan Armak <danarmak@gentoo.org>
7
8# SSH auth code by Danny <danny.milo@gmx.net>
9
10# SSH password authentication support and host key verification
11# support by Jeremy Maitin-Shepard <jbms@gentoo.org>
12
13 6
14# This eclass provides the generic cvs fetching functions. To use 7# This eclass provides the generic cvs fetching functions. To use
15# this from an ebuild, set the `ebuild-configurable settings' as 8# this from an ebuild, set the `ebuild-configurable settings' as
16# specified below in your ebuild before inheriting. Then either leave 9# specified below in your ebuild before inheriting. Then either leave
17# the default src_unpack or extend over cvs_src_unpack. If you find 10# the default src_unpack or extend over cvs_src_unpack. If you find
155# --- end ebuild-configurable settings --- 148# --- end ebuild-configurable settings ---
156 149
157# add cvs to deps 150# add cvs to deps
158# ssh is used for ext auth 151# ssh is used for ext auth
159# sudo is used to run as a specified user 152# sudo is used to run as a specified user
160DEPEND="$DEPEND dev-util/cvs app-admin/sudo" 153DEPEND="dev-util/cvs"
154
155[ -n "$ECVS_RUNAS" ] && DEPEND="$DEPEND app-admin/sudo"
161 156
162if [ "$ECVS_AUTH" == "ext" ]; then 157if [ "$ECVS_AUTH" == "ext" ]; then
163 #default to ssh 158 #default to ssh
164 [ -z "$CVS_RSH" ] && export SSH_RSH="ssh" 159 [ -z "$CVS_RSH" ] && export CVS_RSH="ssh"
165 if [ "$CVS_RSH" != "ssh" ]; then 160 if [ "$CVS_RSH" != "ssh" ]; then
166 die "Support for ext auth with clients other than ssh has not been implemented yet" 161 die "Support for ext auth with clients other than ssh has not been implemented yet"
167 fi 162 fi
168 DEPEND="$DEPEND net-misc/openssh" 163 DEPEND="${DEPEND} net-misc/openssh"
169fi 164fi
170 165
171# called from cvs_src_unpack 166# called from cvs_src_unpack
172cvs_fetch() { 167cvs_fetch() {
173 168
188 183
189 # Update variables that are modified by ebuild parameters, which 184 # Update variables that are modified by ebuild parameters, which
190 # should be effective every time cvs_fetch is called, and not just 185 # should be effective every time cvs_fetch is called, and not just
191 # every time cvs.eclass is inherited 186 # every time cvs.eclass is inherited
192 187
193
194 # Handle parameter for local (non-recursive) fetching 188 # Handle parameter for local (non-recursive) fetching
195 189
196 if [ -n "$ECVS_LOCAL" ]; then 190 if [ -n "$ECVS_LOCAL" ]; then
197 ECVS_UP_OPTS="$ECVS_UP_OPTS -l" 191 ECVS_UP_OPTS="$ECVS_UP_OPTS -l"
198 ECVS_CO_OPTS="$ECVS_CO_OPTS -l" 192 ECVS_CO_OPTS="$ECVS_CO_OPTS -l"
199 fi 193 fi
200 194
201 # Handle ECVS_BRANCH option 195 # Handle ECVS_BRANCH option
202 # 196 #
203 # Because CVS auto-switches branches, we just have to pass the 197 # Because CVS auto-switches branches, we just have to pass the
204 # correct -rBRANCH option when updating. 198 # correct -rBRANCH option when updating.
205 199
206 if [ -n "$ECVS_BRANCH" ]; then 200 if [ -n "$ECVS_BRANCH" ]; then
207 ECVS_UP_OPTS="$ECVS_UP_OPTS -r$ECVS_BRANCH" 201 ECVS_UP_OPTS="$ECVS_UP_OPTS -r$ECVS_BRANCH"
338 eval $cmdlogin || die "cvs login command failed" 332 eval $cmdlogin || die "cvs login command failed"
339 if [ "${mode}" == "update" ]; then 333 if [ "${mode}" == "update" ]; then
340 einfo "Running $cmdupdate" 334 einfo "Running $cmdupdate"
341 eval $cmdupdate || die "cvs update command failed" 335 eval $cmdupdate || die "cvs update command failed"
342 elif [ "${mode}" == "checkout" ]; then 336 elif [ "${mode}" == "checkout" ]; then
343 einfo "Running $cmdcheckout" 337 einfo "Running $cmdcheckout"
344 eval $cmdcheckout|| die "cvs checkout command failed" 338 eval $cmdcheckout|| die "cvs checkout command failed"
345 fi 339 fi
346 elif [ "${ECVS_AUTH}" == "ext" ] || [ "${ECVS_AUTH}" == "no" ]; then 340 elif [ "${ECVS_AUTH}" == "ext" ] || [ "${ECVS_AUTH}" == "no" ]; then
347 341
348 # Hack to support SSH password authentication 342 # Hack to support SSH password authentication
413 echo "${CVS_ECLASS_STRICT_HOST_CHECKING}')" \ 407 echo "${CVS_ECLASS_STRICT_HOST_CHECKING}')" \
414 >> "${CVS_RSH}" 408 >> "${CVS_RSH}"
415 echo "os.execv('/usr/bin/ssh', newarglist)" \ 409 echo "os.execv('/usr/bin/ssh', newarglist)" \
416 >> "${CVS_RSH}" 410 >> "${CVS_RSH}"
417 411
418 chmod a+x "${CVS_RSH}" 412 chmod a+x "${CVS_RSH}"
419 413
420 # Make sure DISPLAY is set (SSH will not use SSH_ASKPASS 414 # Make sure DISPLAY is set (SSH will not use SSH_ASKPASS
421 # if DISPLAY is not set) 415 # if DISPLAY is not set)
422 416
423 [ -z "${DISPLAY}" ] && DISPLAY="DISPLAY" 417 [ -z "${DISPLAY}" ] && DISPLAY="DISPLAY"
424 export DISPLAY 418 export DISPLAY
425 419
426 # Create a dummy executable to echo $ECVS_PASS 420 # Create a dummy executable to echo $ECVS_PASS
427 421
428 export SSH_ASKPASS="${T}/cvs_sshechopass" 422 export SSH_ASKPASS="${T}/cvs_sshechopass"
429 if [ "${ECVS_AUTH}" != "no" ]; then 423 if [ "${ECVS_AUTH}" != "no" ]; then
430 echo -en "#!/bin/bash\necho \"$ECVS_PASS\"\n" \ 424 echo -en "#!/bin/bash\necho \"$ECVS_PASS\"\n" \
431 > "${SSH_ASKPASS}" 425 > "${SSH_ASKPASS}"
432 else 426 else
433 echo -en "#!/bin/bash\nreturn\n" \ 427 echo -en "#!/bin/bash\nreturn\n" \
434 > "${SSH_ASKPASS}" 428 > "${SSH_ASKPASS}"
435 429
436 fi 430 fi
437 chmod a+x "${SSH_ASKPASS}" 431 chmod a+x "${SSH_ASKPASS}"
438 fi 432 fi
439 433
440 if [ "${mode}" == "update" ]; then 434 if [ "${mode}" == "update" ]; then
441 einfo "Running $cmdupdate" 435 einfo "Running $cmdupdate"
442 eval $cmdupdate || die "cvs update command failed" 436 eval $cmdupdate || die "cvs update command failed"
443 elif [ "${mode}" == "checkout" ]; then 437 elif [ "${mode}" == "checkout" ]; then
444 einfo "Running $cmdcheckout" 438 einfo "Running $cmdcheckout"
445 eval $cmdcheckout|| die "cvs checkout command failed" 439 eval $cmdcheckout|| die "cvs checkout command failed"
446 fi 440 fi
447 441
448 # Restore environment variable values 442 # Restore environment variable values
449 export CVS_RSH="${CVS_ECLASS_ORIG_CVS_RSH}" 443 export CVS_RSH="${CVS_ECLASS_ORIG_CVS_RSH}"
450 if [ "${CVS_ECLASS_ORIG_SSH_ASKPASS+set}" == "set" ]; then 444 if [ "${CVS_ECLASS_ORIG_SSH_ASKPASS+set}" == "set" ]; then
451 export SSH_ASKPASS="${CVS_ECLASS_ORIG_SSH_ASKPASS}" 445 export SSH_ASKPASS="${CVS_ECLASS_ORIG_SSH_ASKPASS}"
452 else 446 else
534 # Implement some of base_src_unpack's functionality; note however 528 # Implement some of base_src_unpack's functionality; note however
535 # that base.eclass may not have been inherited! 529 # that base.eclass may not have been inherited!
536 if [ -n "$PATCHES" ]; then 530 if [ -n "$PATCHES" ]; then
537 debug-print "$FUNCNAME: PATCHES=$PATCHES, S=$S, autopatching" 531 debug-print "$FUNCNAME: PATCHES=$PATCHES, S=$S, autopatching"
538 cd "$S" 532 cd "$S"
539 for x in $PATCHES; do 533 epatch ${PATCHES}
540 debug-print "patching from $x"
541 patch -p0 < "$x"
542 done
543 # Make sure we don't try to apply patches more than once, 534 # Make sure we don't try to apply patches more than once,
544 # since cvs_src_unpack is usually called several times from 535 # since cvs_src_unpack is usually called several times from
545 # e.g. kde-source_src_unpack 536 # e.g. kde-source_src_unpack
546 export PATCHES="" 537 export PATCHES=""
547 fi 538 fi
548 539
549 einfo "CVS module ${ECVS_MODULE} is now in ${WORKDIR}" 540 einfo "CVS module ${ECVS_MODULE} is now in ${WORKDIR}"
550} 541}
551 542
552EXPORT_FUNCTIONS src_unpack 543EXPORT_FUNCTIONS src_unpack

Legend:
Removed from v.1.57  
changed lines
  Added in v.1.61

  ViewVC Help
Powered by ViewVC 1.1.20