>Uc@s-ddkZddkZddkiZddkiiZddk Z ddk Z ddk Z ddk Z ddk Z ddkZddkZddkZdefdYZdefdYZdZedjoNdeiZyeeWnej onXeid ed GHndS( iNtDepotStateExceptioncBseZdZRS(cCsti||dS(N(t Exceptiont__init__(tselftreason((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyR(s(t__name__t __module__R(((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyR&stDepotControllercBs`eZdZdZdZdAddAdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZedZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7dAdAdAd5Z8d6Z9d7Z:d8Z;e<d9Z=d:Z>d;Z?d<Z@dd=ZAd>ZBed?ZCd@ZDRS(BiiitcCs\t|_t|_d|_h|_d|_d|_d|_ d|_ d|_ t|_ d|_ d|_t|_d|_d|_d|_h|_t|_t|_t|_|i|_d|_d|_d|_d|_d|_d|_g|_||_ h|_!d|_"d|_#|o ||_n|o ||_!nd|i!dscCsg}|id|i|i|i|i|io!|id|i|in|io%|id|id|in|idjo%|id|id|in|idjo!|id|i|in|i djo|id |i n|i o|id n|i o|id n|i o|id n|i o|id n|io|idn|io|idn|io|id|in|io|id|in|io|id|in|io|id|in|io!|iddi|in|io!|iddi|in|io|id|in|io|id|inxO|iD]D}x;|i|iD]&\}}|id|||fqWqW|io|id|in|io|id|in|id|id|i|i|S(sx Return the equivalent command line invocation (as an array) for the depot as currently configured. tsetpgrps--content-roots-as%sis-ps%ds-ds--file-root=%ss --readonlys --rebuilds--mirrors--refresh-indexs --add-contents --exit-readys --cfg-file=%ss--ssl-cert-file=%ss--ssl-key-file=%ss--ssl-dialog=%ss --debug=%st,s--disable-ops=%ss --nasty %ds--nasty-sleep %ds--set-property=%s.%s='%s's--writable-root=%ss--sort-file-max-size=%ss--log-access=stdouts--log-errors=stderrN(tappendtextendR*RRRRRRRRR RR!R RRR'R(R&RRRR-R.Rt iteritemsR$R%R+(RtargsRBRCtval((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pytget_argsEs|                            cCs|i|ijotdn|i}|iotddd|in|i|_t|idd|_ di |}t i i }|i|iti|d|d td tid |i d |i d t|_|idjotdnti|_dS(sn'env_arg' can be a dictionary of additional os.environ entries to use when starting the depot.s!Depot already starting or runningsA depot (or some s#other network process) seems to be srunning on port %d already!twit R1tshelltstdintstdouttstderrt close_fdssCould not start DepotN(R#R"RRRRtSTARTINGtopenRRRtostenvirontcopytupdateR,t subprocesstPopenR tPIPERRttimeR)(RRtcmdlinetnewenv((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyt__initial_starts*       c Cssy8|i|iodSti}d}d}t}xti|djo|ii}|dj o^d}t|iddi i }z|~}|i }WdQXt d||fn|i o t}Pnti|q=W|tjo&|i|i|_t dn|i|_Wn4tj o(|io|id tnnXdS( Ngg?gD@RtrisPDepot exited with exit code %d unexpectedly while starting. Output follows: %s s:Depot did not respond to repeated attempts to make contacttnow(t_DepotController__initial_startR!RR RRRRRt__exit__t __enter__treadRRR RtkillR"R#tRUNNINGtKeyboardInterrupt( Rt begintimet sleeptimetcheck_intervaltcontacttrcterrt_[1]terrf((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyR3s>    )     cCsy|id}t}d}xP|djoB|ii}|dj o t}Pnti||d9}q"W|o||jo|i|_ tS|i tSWn4t j o(|io|i dtnnXdS(Ng?g$@iR( RR RRRR RRR"R#tstopRR(RtexitRtdiedR((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pytstart_expected_fails,       cCs;|idjodSti|iiti|iiS(Ni(RRRRtpidtsignaltSIGUSR1R(R((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pytrefreshsc Cs|idjodSzFti|i}|tjo"|djotid|nWdy!tid|iit i Wnt j onX|i |_ |iid|_XdS(s[kill the depot; letting it live for a little while helps get reliable deathig?Ni(RRRR)R RRRRRtSIGKILLtOSErrorR"R#twait(RRtlifetime((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyRs  cCs-|i|ijotdn|iS(NsDepot already stopped(R#R"RR(R((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyRsN(ERRR"RRRRR2R5R6R8R9R:R;R=R>R@RARDRGRIRKRLRNROR RXR^R_R`RaRbRcRdReRfRhRiRjRkRlRnRoRvRxRyR{R|R~RRRRRRRRRRRtpropertyRRRR3RRRR(((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyR+s-                                                  I ! *  c Cskt}|idyti|Wntj onX|i|xtddD] }d|di|ifGy|i dGdGt i i t idx|itjoqWd Gd G|i}|djod Gn&|djod d |Gn d|GHtdd}|iGH|iWqZtj odGH|iqZXqZWdS(NiVii s%4d: Starting Depot... (%s)Rs Done. s ... Ping g?s ... Done. sStopping Depot...s Done.s Result: Signal %dis Result: Exited %ds/tmp/depot.logRs* Keyboard Interrupt: Cleaning up Depots...(RR@RtmkdirRRNtrangeRRR3tsysRtflushRRRR RRRRR(ttestdirtdctjRRm((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyt test_func sF           t__main__s/tmp/depotcontrollertest.%ds rm -fr %ss Done(RRtpkg.pkgsubprocesst pkgsubprocessRtpkg.server.repositorytservert repositoryRSRRRRRR\RRZRRtobjectRRRtgetpidt __testdirRtsystem(((s9/usr/lib/python2.6/vendor-packages/pkg/depotcontroller.pyts.           '