/[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.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.56 2005/07/06 20:20:03 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
24 17
25# Support additional remote shells with `ext' authentication (does 18# Support additional remote shells with `ext' authentication (does
26# anyone actually need to use it with anything other than SSH?) 19# anyone actually need to use it with anything other than SSH?)
27 20
28 21
29INHERITED="$INHERITED $ECLASS"
30 22
31# Users shouldn't change these settings! The ebuild/eclass inheriting 23# 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 24# 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. 25# KDE cvs ebuilds' settings, see the comments in kde-source.eclass.
34 26
156# --- end ebuild-configurable settings --- 148# --- end ebuild-configurable settings ---
157 149
158# add cvs to deps 150# add cvs to deps
159# ssh is used for ext auth 151# ssh is used for ext auth
160# sudo is used to run as a specified user 152# sudo is used to run as a specified user
161DEPEND="$DEPEND dev-util/cvs app-admin/sudo" 153DEPEND="dev-util/cvs"
154
155[ -n "$ECVS_RUNAS" ] && DEPEND="$DEPEND app-admin/sudo"
162 156
163if [ "$ECVS_AUTH" == "ext" ]; then 157if [ "$ECVS_AUTH" == "ext" ]; then
164 #default to ssh 158 #default to ssh
165 [ -z "$CVS_RSH" ] && export SSH_RSH="ssh" 159 [ -z "$CVS_RSH" ] && export CVS_RSH="ssh"
166 if [ "$CVS_RSH" != "ssh" ]; then 160 if [ "$CVS_RSH" != "ssh" ]; then
167 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"
168 fi 162 fi
169 DEPEND="$DEPEND net-misc/openssh" 163 DEPEND="${DEPEND} net-misc/openssh"
170fi 164fi
171 165
172# called from cvs_src_unpack 166# called from cvs_src_unpack
173cvs_fetch() { 167cvs_fetch() {
174 168
189 183
190 # Update variables that are modified by ebuild parameters, which 184 # Update variables that are modified by ebuild parameters, which
191 # 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
192 # every time cvs.eclass is inherited 186 # every time cvs.eclass is inherited
193 187
194
195 # Handle parameter for local (non-recursive) fetching 188 # Handle parameter for local (non-recursive) fetching
196 189
197 if [ -n "$ECVS_LOCAL" ]; then 190 if [ -n "$ECVS_LOCAL" ]; then
198 ECVS_UP_OPTS="$ECVS_UP_OPTS -l" 191 ECVS_UP_OPTS="$ECVS_UP_OPTS -l"
199 ECVS_CO_OPTS="$ECVS_CO_OPTS -l" 192 ECVS_CO_OPTS="$ECVS_CO_OPTS -l"
200 fi 193 fi
201 194
202 # Handle ECVS_BRANCH option 195 # Handle ECVS_BRANCH option
203 # 196 #
204 # Because CVS auto-switches branches, we just have to pass the 197 # Because CVS auto-switches branches, we just have to pass the
205 # correct -rBRANCH option when updating. 198 # correct -rBRANCH option when updating.
206 199
207 if [ -n "$ECVS_BRANCH" ]; then 200 if [ -n "$ECVS_BRANCH" ]; then
208 ECVS_UP_OPTS="$ECVS_UP_OPTS -r$ECVS_BRANCH" 201 ECVS_UP_OPTS="$ECVS_UP_OPTS -r$ECVS_BRANCH"
339 eval $cmdlogin || die "cvs login command failed" 332 eval $cmdlogin || die "cvs login command failed"
340 if [ "${mode}" == "update" ]; then 333 if [ "${mode}" == "update" ]; then
341 einfo "Running $cmdupdate" 334 einfo "Running $cmdupdate"
342 eval $cmdupdate || die "cvs update command failed" 335 eval $cmdupdate || die "cvs update command failed"
343 elif [ "${mode}" == "checkout" ]; then 336 elif [ "${mode}" == "checkout" ]; then
344 einfo "Running $cmdcheckout" 337 einfo "Running $cmdcheckout"
345 eval $cmdcheckout|| die "cvs checkout command failed" 338 eval $cmdcheckout|| die "cvs checkout command failed"
346 fi 339 fi
347 elif [ "${ECVS_AUTH}" == "ext" ] || [ "${ECVS_AUTH}" == "no" ]; then 340 elif [ "${ECVS_AUTH}" == "ext" ] || [ "${ECVS_AUTH}" == "no" ]; then
348 341
349 # Hack to support SSH password authentication 342 # Hack to support SSH password authentication
414 echo "${CVS_ECLASS_STRICT_HOST_CHECKING}')" \ 407 echo "${CVS_ECLASS_STRICT_HOST_CHECKING}')" \
415 >> "${CVS_RSH}" 408 >> "${CVS_RSH}"
416 echo "os.execv('/usr/bin/ssh', newarglist)" \ 409 echo "os.execv('/usr/bin/ssh', newarglist)" \
417 >> "${CVS_RSH}" 410 >> "${CVS_RSH}"
418 411
419 chmod a+x "${CVS_RSH}" 412 chmod a+x "${CVS_RSH}"
420 413
421 # Make sure DISPLAY is set (SSH will not use SSH_ASKPASS 414 # Make sure DISPLAY is set (SSH will not use SSH_ASKPASS
422 # if DISPLAY is not set) 415 # if DISPLAY is not set)
423 416
424 [ -z "${DISPLAY}" ] && DISPLAY="DISPLAY" 417 [ -z "${DISPLAY}" ] && DISPLAY="DISPLAY"
425 export DISPLAY 418 export DISPLAY
426 419
427 # Create a dummy executable to echo $ECVS_PASS 420 # Create a dummy executable to echo $ECVS_PASS
428 421
429 export SSH_ASKPASS="${T}/cvs_sshechopass" 422 export SSH_ASKPASS="${T}/cvs_sshechopass"
430 if [ "${ECVS_AUTH}" != "no" ]; then 423 if [ "${ECVS_AUTH}" != "no" ]; then
431 echo -en "#!/bin/bash\necho \"$ECVS_PASS\"\n" \ 424 echo -en "#!/bin/bash\necho \"$ECVS_PASS\"\n" \
432 > "${SSH_ASKPASS}" 425 > "${SSH_ASKPASS}"
433 else 426 else
434 echo -en "#!/bin/bash\nreturn\n" \ 427 echo -en "#!/bin/bash\nreturn\n" \
435 > "${SSH_ASKPASS}" 428 > "${SSH_ASKPASS}"
436 429
437 fi 430 fi
438 chmod a+x "${SSH_ASKPASS}" 431 chmod a+x "${SSH_ASKPASS}"
439 fi 432 fi
440 433
441 if [ "${mode}" == "update" ]; then 434 if [ "${mode}" == "update" ]; then
442 einfo "Running $cmdupdate" 435 einfo "Running $cmdupdate"
443 eval $cmdupdate || die "cvs update command failed" 436 eval $cmdupdate || die "cvs update command failed"
444 elif [ "${mode}" == "checkout" ]; then 437 elif [ "${mode}" == "checkout" ]; then
445 einfo "Running $cmdcheckout" 438 einfo "Running $cmdcheckout"
446 eval $cmdcheckout|| die "cvs checkout command failed" 439 eval $cmdcheckout|| die "cvs checkout command failed"
447 fi 440 fi
448 441
449 # Restore environment variable values 442 # Restore environment variable values
450 export CVS_RSH="${CVS_ECLASS_ORIG_CVS_RSH}" 443 export CVS_RSH="${CVS_ECLASS_ORIG_CVS_RSH}"
451 if [ "${CVS_ECLASS_ORIG_SSH_ASKPASS+set}" == "set" ]; then 444 if [ "${CVS_ECLASS_ORIG_SSH_ASKPASS+set}" == "set" ]; then
452 export SSH_ASKPASS="${CVS_ECLASS_ORIG_SSH_ASKPASS}" 445 export SSH_ASKPASS="${CVS_ECLASS_ORIG_SSH_ASKPASS}"
453 else 446 else
535 # Implement some of base_src_unpack's functionality; note however 528 # Implement some of base_src_unpack's functionality; note however
536 # that base.eclass may not have been inherited! 529 # that base.eclass may not have been inherited!
537 if [ -n "$PATCHES" ]; then 530 if [ -n "$PATCHES" ]; then
538 debug-print "$FUNCNAME: PATCHES=$PATCHES, S=$S, autopatching" 531 debug-print "$FUNCNAME: PATCHES=$PATCHES, S=$S, autopatching"
539 cd "$S" 532 cd "$S"
540 for x in $PATCHES; do 533 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, 534 # Make sure we don't try to apply patches more than once,
545 # since cvs_src_unpack is usually called several times from 535 # since cvs_src_unpack is usually called several times from
546 # e.g. kde-source_src_unpack 536 # e.g. kde-source_src_unpack
547 export PATCHES="" 537 export PATCHES=""
548 fi 538 fi
549 539
550 einfo "CVS module ${ECVS_MODULE} is now in ${WORKDIR}" 540 einfo "CVS module ${ECVS_MODULE} is now in ${WORKDIR}"
551} 541}
552 542
553EXPORT_FUNCTIONS src_unpack 543EXPORT_FUNCTIONS src_unpack

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

  ViewVC Help
Powered by ViewVC 1.1.20