Ńň §ÚęLc @sždZdZddkZddkZddkTddklZlZddkl Z ha dddd „Z dddd „Z d d ddddd „Z d „Zddd„Zd„ZdS(sWdistutils.dir_util Utility functions for manipulating directories and directory trees.s:$Id: dir_util.py 83648 2010-08-03 07:51:50Z ezio.melotti $i˙˙˙˙N(t*(tDistutilsFileErrortDistutilsInternalError(tlogi˙ic Csşt|tƒptd|f‚ntii|ƒ}g}tii|ƒp |djo|Stitii |ƒƒo|Stii |ƒ\}}|g}xO|oG|o@tii|ƒ o,tii |ƒ\}}|i d|ƒqŚWxž|D]ś}tii ||ƒ}tii |ƒ} ti| ƒoqünt id|ƒ|pQyti|ƒ|i|ƒWq¨tj o } td|| df‚q¨Xndt|   " c Cszh}x3|D]+}d|tii|tii|ƒƒ %sR(tdistutils.file_utilR+RRR RtlistdirterrorR RtislinktreadlinkRRtsymlinkRtextendt copy_tree(tsrctdstt preserve_modetpreserve_timestpreserve_symlinkstupdateRRR+tnamesterrnoterrstrtoutputstntsrc_nametdst_namet link_dest((s*/usr/lib64/python2.6/distutils/dir_util.pyR3psB    cCs—xzti|ƒD]i}tii||ƒ}tii|ƒo%tii|ƒ ot||ƒq|iti|fƒqW|iti |fƒdS(N( RR-RRR R/t_build_cmdtupleRtremovetrmdir(Rt cmdtuplestftreal_f((s*/usr/lib64/python2.6/distutils/dir_util.pyRBˇs'cCsĐddkl}tid|ƒ|odSg}t||ƒxŠ|D]‚}yD|d|dƒtii|dƒ}|tjo t|=nWqFt t fj o#}ti ||d|ƒƒqFXqFWdS(s‰Recursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). i˙˙˙˙(tgrok_environment_errors'removing '%s' (and everything under it)Niiserror removing %s: ( tdistutils.utilRHRRRBRRR R tIOErrorRtwarn(t directoryRRRHREtcmdR R((s*/usr/lib64/python2.6/distutils/dir_util.pyt remove_treeÁs    cCsetii|ƒ\}}tidjo ti|S|dd!tijo||d}n|SdS(ssTake the full path 'path', and make it a relative path so it can be the second argument to os.path.join(). tmaciiN(RRt splitdrivetsystplatformtsep(Rtdrive((s*/usr/lib64/python2.6/distutils/dir_util.pytensure_relativeŮs  (t__doc__t __revision__RRQttypestdistutils.errorsRRt distutilsRR R R*R3RBRNRU(((s*/usr/lib64/python2.6/distutils/dir_util.pyts" C A