ó TONc@sIdZddlZddlZddlZddlZddlmZddlmZdgZ dZ dZ de fd „ƒYZ d efd „ƒYZde fd „ƒYZed krEeejdƒZx1eejƒD] ZedeejeƒGHqÜWHx$ejD]ZejdejGHq WHxejD] ZeGHq3WndS(sLSystemV / Solaris packages. This module allows the new Solaris packaging system to interface with System V style packages, both in directory format and in datastream format. When a package is in datastream format, it may be compressed with gzip. XXX Some caveats about rewinding a datastream or multiple packages per datastream. iÿÿÿÿN(tCpioFile(t DependencytSolarisPackages# PaCkAgE DaTaStReAms# end of headert PkgMapLinecBseZdZdd„ZRS(s²A class that represents a single line of a SysV package's pkgmap. XXX This class should probably disappear once pkg.manifest? is a bit more fleshed out. tcCsy|jƒ}yt|dƒ|_Wn'tk rLd|_d|dd+nX|d|_d|_|jdkr˜|d\|_|_|_ |_ dS|d|_|jdksÒ|jdksÒ|jdkr |d \|_|_ |_ |_ |_|_ |_ n |jd ks'|jd krX|d \|_|_|_|_ |_ |_ n½|jd ks…|jd ks…|jdkrª|d \|_|_ |_ |_ nk|jdksÈ|jdkr|d jdƒ\|_|_|jjd|ƒ|_ntd|jƒ‚d|jkrZ|jjd|ƒ|_|j|krud|_quntjj||jƒ|_dS(Niit1tiitftetvitbtctdtxtptltst=s$BASEDIRsInvalid file type: (tsplittinttpartt ValueErrorttypetNonetklasstpathnametsizetchksumtmodtimetmodetownertgrouptmajortminorttargettreplacetostpathtjoin(tselftlinetbasedirtarray((s1/usr/lib/python2.7/vendor-packages/pkg/sysvpkg.pyt__init__;s6     " -71-%(t__name__t __module__t__doc__R+(((s1/usr/lib/python2.7/vendor-packages/pkg/sysvpkg.pyR4stMultiPackageDatastreamExceptioncBseZRS((R,R-(((s1/usr/lib/python2.7/vendor-packages/pkg/sysvpkg.pyR/lscBs2eZdZd„Zd„Zd„Zd„ZRS(sDA SolarisPackage represents a System V package for Solaris. c Cs¶tjj|ƒrt|ƒ}|jƒjƒtkr?|}n“|jdƒy@tj d|ƒ}|jƒj ƒtkr‚|}n t d‚WnCt k rÑ}|j ddkr·‚qÒ|j ƒtd|‚nXg}xCtr|jƒj ƒ}|tkrPn||jƒdg7}qÛWt|ƒdkrOtd|t|ƒfƒ‚n|j|jƒd|jƒdƒtjd d d|ƒ|_xq|jD]f}|jjd ƒrÏ|jj|ƒjƒ|_q™|jjd ƒr™|jj|ƒjƒ|_q™q™W|jjƒ|_nd|_||_|j ƒ|_!y>|j!d ddksYt"‚|j!d dj dƒ|_#Wnt$k r“d|_#nX|j%ƒ|_&|j'ƒ|_(dS(s*The constructor for the SolarisPackage class. The "path" argument may be a directory -- in which case it is assumed to be a directory-format package -- or a file -- in which case it's tested whether or not it's a datastream package. itfileobjs not a packagesNot a gzipped files%s is not a packageis%s contains %s packagesiRsr|s/pkginfos/pkgmaptBASEDIRt/RN(sNot a gzipped files not a package()R$R%tisfiletopentreadlinetstript PKG_MAGICtseektgziptGzipFiletrstriptIOErrortargstcloseRtTruet PKG_HDR_ENDRtlenR/ttellRt datastreamtnametendswitht extractfilet readlinest_pkginfot_pkgmaptget_next_archiveRtpkgpathtreadPkginfoFiletpkginfotAssertionErrorR)tKeyErrortreadDependFiletdepstreadPkgmapFiletmanifest( R'R%RtfotgRtpkgsR(tci((s1/usr/lib/python2.7/vendor-packages/pkg/sysvpkg.pyR+ysZ          %"  !  c Cs|jr gSyt|jdƒ}Wn/tk rU\}}|tjkrOgS‚nXg}xº|D]²}|jdƒ}t|ƒdksc|ddkr qcn|ddkrcy|jddƒ\}}}Wn#t k rô|jƒ\}}nX|t |j d|ƒg7}qcqcW|S(Ns/install/depends it#tPitPKG( RCtfileRKR<terrnotENOENTR;RARRRRRM( R'tfpterrtmsgRQR(Rtpkgtdesc((s1/usr/lib/python2.7/vendor-packages/pkg/sysvpkg.pyRPÃs(  " $cCsi}|jr|j}nt|jdƒ}x§|D]Ÿ}|jƒjdƒ}t|ƒdkrhq5n|ddkr©|jdƒr5|jdƒjƒ|d%s,     8 ¥