Ñò ndJc @s¹ddkZddkZddkZddkZddkZddkZddkiZddk l Z l Z l Z de fd„ƒYZdefd„ƒYZde fd„ƒYZdS( iÿÿÿÿN(tPopentPIPEtcalltLoggingcBs/eZdd„Zd„Zd„Zd„ZRS(tDEBUGc CsH||_||_||_|d|_tii|i|iƒ|_ti|iƒ|_ ti ƒ}tii tii |iƒƒp ti tii |iƒƒnti|iƒ}|i i|ƒ|i i|ƒtidƒ}tidƒ}|i|ƒ|i|ƒhtid6tid6}|i i||iƒdS(Ns.logs %(message)ss5%(asctime)s %(process)d (%(levelname)s) : %(message)sRtINFO(t debug_leveltdstt logger_idtlogfiletostpathtjointloggingt getLoggertlogt StreamHandlertexiststdirnametmakedirst FileHandlert addHandlert Formattert setFormatterRRtsetLevel( tselfRRRtchtfhtch_fmttfh_fmtt logging_level((s,/usr/lib/python2.6/site-packages/cas/util.pyt__init__s&     "     cCs/|idjo|iid|fƒndS(NRs[.cas.][debug] :: %s(RRtdebug(Rtmsg((s,/usr/lib/python2.6/site-packages/cas/util.pyR /scCs)tiid|dƒtiiƒdS(s+ function to print status messages s [.cas.] :: s N(tsyststdouttwritetflush(RR!((s,/usr/lib/python2.6/site-packages/cas/util.pytstatus3scCs|iid|fƒdS(s% function to print procedure s [.cas.] :: %sN(Rtinfo(RR!((s,/usr/lib/python2.6/site-packages/cas/util.pyR'9s(t__name__t __module__RR R&R'(((s,/usr/lib/python2.6/site-packages/cas/util.pyRs   t UtilExceptioncBseZRS((R(R)(((s,/usr/lib/python2.6/site-packages/cas/util.pyR*>stUtilBasecBsVeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zddd „Z RS( cCsXg}ti|tiƒ}x$|i|ƒD]}|i|ƒq+Wt|ƒo|StS(sG Return a list of all non overlapping matches in the string(s) (tretcompilet MULTILINEtfindalltappendtlentFalse(Rtregextstringtouttregti((s,/usr/lib/python2.6/site-packages/cas/util.pyt regexFindallAs cCs;ti|tiƒ}y|i|ƒiƒSWntSXdS(N(R,R-R.tsearchtgroupR2(RR3R4R6((s,/usr/lib/python2.6/site-packages/cas/util.pyt regexSearchLs ccs‘xŠti|ƒD]y\}}}|||fVxY|D]Q}tii||ƒ}tii|ƒo#x |i|ƒD] }|VqrWq4q4WqWdS(s+ file listing with symlink support N(R twalkR R tislinkt directoryList(Rtfilepathtroottdirstfilestdirtdirpathtval((s,/usr/lib/python2.6/site-packages/cas/util.pyR>SscCsLtidjo8ti|ƒid@}|dBd@}ti||ƒndS(s make fn executable tposixiÿimN(R tnametstattst_modetchmod(Rtfntoldmodetnewmode((s,/usr/lib/python2.6/site-packages/cas/util.pytmake_exe^s cCs-t|dƒ}ti||ƒ|iƒdS(s push data to pickle twN(topentcPickletdumptclose(RtobjtfnametFILE((s,/usr/lib/python2.6/site-packages/cas/util.pytsavegs cCsVtii|ƒo,t|dƒ}ti|ƒ}|iƒntd|fƒ‚|S(s$ grab data from pickle file trs %s : Unable to locate/load file.(R R tisfileRPRQtloadRSR*(RRURVR5((s,/usr/lib/python2.6/site-packages/cas/util.pyRZos c CsÆhdd6dd6dd6dd6d d 6}d d |g}d dg}t|dtdtƒ}t|d|idtdtƒiƒ}|\}}x0|iƒD]"\} } | |jo || SqœWtS(s- determine machine type for ELF file ts390xs IBM S/390ti686s Intel 80386tx86_64sAdvanced Micro Devices X86-64tia64s Intel IA-64tppc64t PowerPC64treadelfs-htgreptMachineR#tstderrtstdin(RRR#t communicatet iteritemsR2( RR t supportArchtcmdtcmd2tpipetpipe2tmachinetststktv((s,/usr/lib/python2.6/site-packages/cas/util.pyt getElfArchzs        scrash.ins/usr/bin/crashcCsUg}g}xMtidƒD]<\}} } x*| D]"} |itii|| ƒƒq2WqWx1|D])} |it| dtƒiƒdƒqcW|idƒtii||ƒ} t| dƒ}|i di|ƒƒ|i ƒtii||ƒ}d|||f}tii|dƒ}t|dƒ}|i |ƒ|i ƒ|i |ƒd S( sg build crash and crash.in file with output from the snippets in /var/lib/cas/snippets s/var/lib/cas/snippets/R#isexit ROts#!/bin/sh %s %s %s $* tcrashN( R R<R0R R RRRfRPR$RSRN(RRtvmcoreR tfile_int crash_bint dir_listingtcrashInputCmdsR@RARBRGtatcrashInputPatht crashInputFHt vmcorePathtcrashCmdtcrashExeR((s,/usr/lib/python2.6/site-packages/cas/util.pytbuildCrashFile‘s0$'       ( R(R)R8R;R>RNRWRZRqR(((s,/usr/lib/python2.6/site-packages/cas/util.pyR+@s   (RQtcommandsR R,R"R tcas.cas_shutilt cas_shutiltshutiltcas.cas_subprocessRRRtobjectRt ExceptionR*R+(((s,/usr/lib/python2.6/site-packages/cas/util.pyts      &