
)Ic           @   s)  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l	 Z	 d f  d     YZ
 d f  d     YZ e d j o e
   Z e i d  e i d	  e i d
  e i d  e i d  e i d  d GHe i i e  d GHe i d  n d S(   iN(   t   ST_SIZEt   Packagec           B   s(  e  Z d  Z d  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   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   Z d   Z d   Z  d   Z! d   Z" RS(!   sN   A class for creating objects to manipulate (e.g. create) ipkg
       packages.c         C   s  d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _	 d  |  _
 d  |  _ d  |  _ d  |  _ d  |  _ g  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d |  _ | ot | d  } | i d  } | i   | d j o d |  _ n t | d  } t i   } x+ | i d  } | p Pn | i |  q| i   t i d  d j o | i   |  _ n( t i t d   | i    d	  |  _ t  i! |  } | t" |  _ t  i# i$ |  |  _ |  i o t  i% d
 | d d  } n t  i% d | d d  } | i&   } x | p Pn t i' |  } t( i) d |  }	 |	 o t i* |	 i+ d   }
 |	 i+ d  } xN | i&   } | p Pn | d d j o Pn t i' |  } | d | } q~|
 d j o | |  _ q|  i, i- |
  o | |  i, |
 <qq | i&   } q | i   |  i o t  i% d
 | d d  } n t  i% d | d d  } x4 | i&   } | p Pn |  i i. t i' |   ql| i   n d  |  _/ d  |  _0 d  |  _1 d  S(   Ni    t   ri   s   !<ari   i   t   2c         S   s   d  t  |   S(   s   %02x(   t   ord(   t   x(    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   <lambda>Z   s    t    s   ar p s3    control.tar.gz | tar xfzO - --wildcards '*control's	   tar xfzO sB    --wildcards '*control.tar.gz' | tar xfzO - --wildcards '*control's   ([\w-]*?):\s*(.*)i   t    s   
t   filenames    data.tar.gz | tar tfz -s'    --wildcards '*data.tar.gz' | tar tfz -(2   t   Nonet   packaget   versiont   architecturet
   maintainert   sourcet   descriptiont   dependst   providest   replacest	   conflictst
   recommendst   suggestst   sectiont   filename_headert	   file_listt   md5t   sizet   installed_sizeR	   t   isdebt   opent   readt   closet   newt   updatet   syst	   hexdigestt   stringt   joint   mapt   digestt   ost   statR    t   patht   basenamet   popent   readlinet   rstript   ret   matcht   lowert   groupt   __dict__t   has_keyt   appendt   scratch_dirt   file_dirt   meta_dir(   t   selft   fnt   ft   magict   sumt   dataR*   t   controlt   linet	   linepartst   namet   value(    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   __init__0   s    																				
 
'
   

 		c         C   s,  d d  k  } | i   } x| p Pn t i |  } t i d |  } | o t i | i d   } | i d  } x? | i   } | p Pn | d d j o Pn | d | } qy | d j o t |  |  _	 n% |  i
 i |  o | |  i
 | <n | d d j o d  Sq%q | i   } q d  S(	   Nis   ([\w-]*?):\s*(.*)i   i   i    R   s   
R   (   R)   R.   R%   R/   R0   R1   R2   R3   t   intR   R4   R5   (   R:   R@   R)   RA   RB   RC   RD   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   read_control   s4       c         C   ss   d t  i   t  i   f |  _ d |  i |  _ d |  i |  _ t i |  i  t i |  i  t i |  i  d  S(   Ns	   %s/%sipkgs   %s/filess   %s/meta(   t   tempfilet
   gettempdirt   gettempprefixR7   R8   R9   R)   t   mkdir(   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   _setup_scratch_area   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_package   s    c         C   s   |  i  S(   N(   R   (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_package   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_version   s    c         C   s   |  i  S(   N(   R   (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_version   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_architecture   s    c         C   s   |  i  S(   N(   R   (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_architecture   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_maintainer   s    c         C   s   |  i  S(   N(   R   (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_maintainer   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt
   set_source   s    c         C   s   |  i  S(   N(   R   (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt
   get_source   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_description   s    c         C   s   |  i  S(   N(   R   (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_description   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_depends   s    c         C   s   |  i  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_depends   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_provides   s    c         C   s   |  i  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_provides   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_replaces   s    c         C   s   |  i  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_replaces   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_conflicts   s    c         C   s   |  i  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_conflicts   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_suggests   s    c         C   s   |  i  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_suggests   s    c         C   s   | |  _  d  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   set_section   s    c         C   s   |  i  S(   N(   R   (   R:   R   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_section   s    c         C   s   |  i  S(   N(   R   (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   get_file_list   s    c   	      C   s  |  i    } t d |  i d  } | i |  |  i   d |  i |  i f } t i |  \ } } } x | i   d j o qj W| i	   | i	   | i	   d } |  i
 ou d |  i |  i f } t i |  \ } } } x | i   d j o q W| i	   | i	   | i	   | d } n d |  i |  i |  i f } d	 |  i | | | f } t i |  \ } } } x | i   d j o quW| i	   | i	   | i	   d  S(
   Ns
   %s/controlt   ws*   cd %s ; tar cvfz %s/control.tar.gz controlR   s   control.tar.gzs   cd %s ; tar cvfz %s/data.tar.gzs    data.tar.gzs   %s_%s_%s.ipks   cd %s ; tar cvfz %s/%s %s(   t   render_controlR   R9   t   writeRL   R7   R)   t   popen3R.   R    R   R8   R   R   R   (	   R:   t   dirnamet   buft   filet   cmdt   cmd_outt   cmd_int   cmd_errt   bits(    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   write_package   sJ    
	 



	 


	
 

c         C   s/  d } |  i  o | d |  i  } n |  i o | d |  i } n |  i o | d |  i } n |  i o | d |  i } n |  i o | d |  i } n |  i o | d |  i } n |  i o | d |  i } n |  i o | d	 |  i } n |  i o | d
 |  i } n |  i	 o | d |  i	 } n |  i
 o | d |  i
 } n |  i o | d |  i } n |  i o | d t |  i  } n |  i o | d t |  i  } n |  i o | d |  i } n |  i o | d |  i } n |  i o | d |  i } n | d } | S(   NR   s   Package: %s
s   Version: %s
s   Depends: %s
s   Provides: %s
s   Replaces: %s
s   Conflicts: %s
s   Suggests: %s
s   Recommends: %s
s   Section: %s
s   Architecture: %s
s   Maintainer: %s
s   MD5Sum: %s
s	   Size: %d
s   InstalledSize: %d
s   Filename: %s
s   Source: %s
s   Description: %s
s   
(   R   R   R   R   R   R   R   R   R   R   R   R   R   RF   R   R	   R   R   (   R:   t   out(    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   __repr__*  sJ    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c         C   s   d  S(   N(    (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   __del__E  s    N(#   t   __name__t
   __module__t   __doc__R
   RE   RG   RL   RM   RN   RO   RP   RQ   RR   RS   RT   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   R`   Ra   Rb   Rc   Rd   Re   Rr   Rt   Ru   (    (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyR   -   s@   X		
																										2	t   Packagesc           B   sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s:   A currently unimplemented wrapper around the ipkg utility.c         C   s   h  |  _  d  S(   N(   t   packages(   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyRE   L  s    	c         C   s   | i  } | i } d | | f } |  i i |  p | |  i | <n t i d | i |  i | i f  \ } } | d j o | |  i | <d Sn d Sd  S(   Ns   %s:%ss   ipkg-compare-versions %s '>' %si    i   (   R   R   Rz   R5   t   commandst   getstatusoutputR   (   R:   t   pkgR   t   archRC   t   st   outtext(    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   add_packageP  s    		,c         C   sX   t  | d  } x8 t   } | i |  | i   o |  i |  q Pq | i   d  S(   NR   (   R   R   RG   RN   R   R    (   R:   R;   R<   R}   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   read_packages_file]  s    	
c         C   sW   t  | d  } |  i i   } | i   x( | D]  } | i |  i | i    q/ Wd  S(   NRf   (   R   Rz   t   keyst   sortRh   Rt   (   R:   R;   R<   t   namesRC   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   write_packages_filei  s    
 c         C   s   |  i  i   S(   N(   Rz   R   (   R:   (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyR   q  s    c         C   s   |  i  | S(   N(   Rz   (   R:   t   key(    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyt   __getitem__t  s    (	   Rv   Rw   Rx   RE   R   R   R   R   R   (    (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pyRy   J  s   					t   __main__t   FooBars   0.1-fam1t   arms!   Testing <testing@testing.testing>t   libcs   A test of the APIs.t   <t   >s   /tmp(   RH   R)   R#   t   globR   R0   R%   R{   R*   R    R   Ry   Rv   R   RM   RO   RQ   RS   RY   RW   t   stdoutRh   Rr   (    (    (    s_   /afs/sipb.mit.edu/project/merakidev/src/openwrt-meraki/openwrt/staging_dir_mips/usr/bin/ipkg.pys   <module>#   s.    -	