
@K7]c        	   @   sd  d  d l  Z  d  d l m Z d  d l m Z d  d l m Z d  d l m Z y d  d l Z	 Wn d  d l	 Z	 n Xd  d l
 Z
 d  d l Z d  d l Z d  d l m Z m Z d  d l m Z m Z m Z m Z m Z d  d l Z d  d l m Z d  d	 l m Z d  d
 l m Z d d l m Z y d  d l  m! Z! Wn! e" k
 rWd  d l# m! Z! n Xd Z$ d Z% d Z& d Z' e( i i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d  d! 6d" d# 6e j) d$ 6d% d& 6i  d' 6d 6i d d 6d( d 6d) d 6d* d 6d+ d 6d, d 6d d 6d  d! 6d- d# 6e j* d$ 6d. d& 6i d/ d0 6d1 d2 6d' 6d 6i d3 d 6d4 d 6d5 d 6d6 d 6d7 d 6d8 d 6d9 d 6d  d! 6d: d# 6e j* d$ 6d. d& 6i d/ d0 6d1 d2 6d' 6d3 6i d; d 6d< d 6e+ d= 6d> d 6d? d 6d@ d 6dA d 6dB d 6d  d! 6d  d# 6e j* d$ 6d. d& 6i  d' 6d; 6i dC d 6dD dE 6dF d 6dG d 6d  d! 6e j* d$ 6d. d& 6i  d' 6dC 6 Z, dH   Z- d e j* dI  Z/ dJ   Z0 dK   Z1 dL   Z2 dM   Z3 dN   Z4 e( i dO dP 6dQ dR 6dS dT 6dU dV 6dW dX 6 Z5 e+ dY  Z6 d d dZ  Z7 d[   Z8 d\   Z9 d]   Z: d^   Z; d_   Z< d` da  Z= db   Z> dc   Z? dd d e@ e$ e+ g  d e% de  ZA df   ZB d S(g   iN(   t	   iteritems(   t   download_to_cache(   t   guess_license_family(   t   copy(   t   chmodt   makedirs(   t   basenamet   dirnamet   existst   joint   splitext(   t   string_types(   t   wrap(   t   cElementTreei   (   t   yaml_quote_string(   t   urlopent   x86_64t   centos6s  package:
  name: {packagename}
  version: {version}

source:
  - url: {rpmurl}
    {checksum_name}: {checksum}
    folder: binary
  - url: {srcrpmurl}
    folder: source

build:
  number: 0
  noarch: generic
  missing_dso_whitelist:
    - '*'

{depends}

about:
  home: {home}
  license: {license}
  license_family: {license_family}
  summary: {summary}
  description: {description}
s   #!/bin/bash

mkdir -p ${PREFIX}/x86_64-conda_cos6-linux-gnu/sysroot
pushd ${PREFIX}/x86_64-conda_cos6-linux-gnu/sysroot > /dev/null 2>&1
cp -Rf "${SRC_DIR}"/binary/* .
t   centos5R   t   cos5t
   short_names;   http://vault.centos.org/5.11/os/{base_architecture}/CentOS/t   base_urls'   http://vault.centos.org/5.11/os/Source/t	   sbase_urlsG   http://vault.centos.org/5.11/os/{base_architecture}/repodata/repomd.xmlt
   repomd_urls#   {architecture}-conda_cos5-linux-gnut   host_machines   linux-{bits}t   host_subdirs   {architecture}t   fname_architectures   el5.{architecture}t   rpm_filename_platformt   checksummert   sha1t   checksummer_namet   macrost   cos6sC   http://mirror.centos.org/centos/6.10/os/{base_architecture}/CentOS/s1   http://vault.centos.org/6.10/os/Source/SPackages/sO   http://mirror.centos.org/centos/6.10/os/{base_architecture}/repodata/repomd.xmls#   {architecture}-conda_cos6-linux-gnus   el6.{architecture}t   sha256s   2.6.6t   pyvers   2.24.1t   gdk_pixbuf_base_versiont   centos7t   cos7sA   http://mirror.centos.org/altarch/7/os/{base_architecture}/CentOS/s5   http://vault.centos.org/7.6.1810/os/Source/SPackages/sM   http://mirror.centos.org/altarch/7/os/{base_architecture}/repodata/repomd.xmls'   {gnu_architecture}-conda_cos7-linux-gnus   linux-ppc64les   el7.{architecture}t   suse_leap_rpi3t   slrpi3t   allow_missing_sourcessk   http://download.opensuse.org/ports/aarch64/distribution/leap/42.3-Current/repo/oss/suse/repodata/repomd.xmlsn   http://download.opensuse.org/ports/{architecture}/distribution/leap/42.3-Current/repo/oss/suse/{architecture}/sS   http://download.opensuse.org/ports/{architecture}/source/factory/repo/oss/suse/src/s    aarch64-conda_rpi3-linux-gnueabis   linux-aarch64t   raspbian_rpi2t   rrpi2t   cdt_short_names   armv7a-conda_rpi2-linux-gnueabis	   armv7a-32c         C   s   t  S(   su   This is a simple function returning True/False for if a requested package string exists
    in the add-on repository.(   t   True(   t   package_name(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   package_exists   s    c   	      C   s   | r# t  i | d 6| d 6 } n t  i | d 6 } t |  d |  \ } } |   } | j t | d  j    | j   } | | f S(   Nt   urlt   fnt    t   rb(   t   dictR   t   updatet   opent   readt	   hexdigest(	   t	   src_cacheR/   R0   R   t   sourcet   cached_patht   _t   csumt   csumstr(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt
   cache_file   s    	c   
      C   s  t  |   \ } } | j d  d } | j d  } t |  d k r^ | d | d } } nW t |  d k r d j | d t |  d ! d j | d  } } n d j |  GH| j d  d d !} | d } d j | d t |  d ! }	 |	 | | | f S(   Nt   -it   .i   i    i   s8   ERROR: Cannot figure out the release and platform for {}(   R
   t   splitt   lenR	   t   format(
   t   rpmfilenamet   baseR;   t   release_platformt   partst   releaset   platformt   name_versiont   versiont   rpm_name(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   rpm_filename_split   s    7
 c         C   sI   t  | |   \ } } t t |    \ } } } } | | | | | | f S(   N(   R>   RM   R   (   t   rpm_urlR8   R:   t	   sha256strRL   RK   RH   RI   (    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   rpm_split_url_and_cache   s    c         C   s   d j  |  | | |  S(   Ns   {}-{}-{}.{}.rpm(   RC   (   RL   RK   RH   RI   (    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   rpm_filename_generate   s    c   
      C   sh   t  | | | |  } t |  |  } t | d t i | d 6  \ } }	 | sd t d j |    | S(   sJ   
    Forms the URL and also attempts to cache it to verify it exists.
    R1   R/   s$   Failed to cache generated RPM url {}(   RQ   R	   R   R3   t   AssertionErrorRC   (
   t   url_dirnameRL   RK   RH   RI   R8   t   resultR/   t   pathR;   (    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   rpm_url_generate   s
    %c         C   s1  | d } d } y |  | } | } Wn x t  |   D] \ } } xw | D]o } | | k rJ d | | k r xG | | d D]4 }	 |	 d | k r{ d j |  GH| } | } Pq{ q{ Wq qJ qJ Wq7 Wn X| d k r d j |  GHd Sd  }
 x$ | D] } | | k r | }
 Pq q W|
 sd S| |
 } | | |
 f S(   Nt   nameR1   t   providess   Found it in {}sB   WARNING: Did not find package called (or another one providing) {}(   NNN(   NNN(   R    RC   t   None(   t   repo_primaryt   architecturest   dependt   dep_namet   found_package_namet   found_packageRW   t   packaget   archt   providet   chosen_archt   entry(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   find_repo_entry_and_arch   s8    



t   <t   LTs   <=t   LEs   ==t   EQs   >=t   GEt   >t   GTc         C   s   | r i t  |  t  |  j 6St |  j  } |  j rE |  j | d <n  xS |  j d  D]B } | j | k rz g  | | j <n  | | j j t  | t   qU W| S(   Nt   _texts   ./*(   t   dictifyt   Falset   tagR   t   attribt   textt   findallt   append(   t   rt   roott   dt   x(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyRn      s    	!c   	   
   C   s   |  d } t  |  r, t j t | d   St j |  d d d  } | j   } t j d d | d d	 } t j d
 d |  } t j	 | j
 d   } t |  } | r | | | |  } n  t j | t | d   | SWd  QXd  S(   Ns   .pR2   Ru   t   encodings   utf-8s   \sxmlns="[^"]+"R1   t   counti   s   \sxmlns:([a-zA-Z]*)="[^"]+"s    xmlns:\1="\1"t   wb(   R   t   picklet   loadR5   t   ioR6   t   ret   subt   ETt
   fromstringt   encodeRn   t   dump(	   t   xml_fileR8   t   dict_massagert   cdtt   pickledt   xft	   xmlstringRv   RT   (    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   dictify_pickled   s    
c         C   s  t  |   j   } t j d d | d d } t j |  } x| j d j |   D]} | j d  d j } t	 | |  }	 y# t
 | |	 d  | d  \ }	 }
 Wn#| j d	  d j } | j d
  d j d } t t |    d | } t
 | | d  | d  \ } } | | k s6t d j | |     t j | d  { } | j   } | d   }
 |
 j |  |
 j   }
 |
 | k rt |	 d   } | j |  Wd  QXn d j |  GHWd  QXn Xt |	 | | |  SWt i   S(   Ns   \sxmlns="[^"]+"R1   Rz   i   s   *[@type='{}']s   open-checksumi    R   t   checksumt   locationt   hreft   /s*   Checksum for {} does not match value in {}R2   R{   s6   ERROR: Checksum of uncompressed file {} does not match(   R   R6   R   R   R   R   Rs   RC   Rr   R	   R>   RY   Rq   R   RR   t   gzipR5   R4   R7   t   writeR   R3   (   R   t	   data_typeR   R   R8   R   t   repomdt   childt	   open_csumR   t   xml_csumR<   R   t
   xmlgz_fileR:   t   cached_csumt   gzt   xml_contentt   xml(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   get_repo_dict  s6    #	c         C   s   x |  D] } | d | d <d | k r< t  | d | d <n
 d  | d <d | k r d | d k r | d j d d  | d <| d j d  s d | d | d <n  | d j d  s | d d | d <n  | d j | d   | d <q q q W|  S(	   NRW   t   flagst   vert   %R1   t   {t   }R   (   t   str_flags_to_conda_version_specRY   t   replacet
   startswitht   endswithRC   (   t   requiresR   t   require(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   massage_primary_requires2  s    
%c         C   sV  t  i   } xC|  d d D]3} | d d d } | d d d } | d k rW q n  | d d d } | d	 d d
 d d } | d d d }	 | d d }
 | d d d } y | d d d } Wn d } n Xd | d d k r| d d d } n d } | d	 d d d d } y- | d	 d d d d } t | |  } Wn g  } n Xy- | d	 d d d d } t | |  } Wn g  } n Xt  i
 | d 6|	 d 6| d 6| d 6|
 d 6t |  d 6| d 6| d 6| d 6| d 6 } | | k r7| | | k r&d j | |  GHn  | | | | <q t  i | | 6 | | <q W| S(   s  
    Massages the result of dictify() into a less cumbersome form.
    In particular:
    1. There are many lists that can only be of length one that
       don't need to be lists at all.
    2. The '_text' entries need to go away.
    3. The real information starts at ['metadata']['package']
    4. We want the top-level key to be the package name and under
       that, an entry for each arch for which the package exists.
    t   metadataR`   RW   i    Rm   Ra   t   srcR   RC   s   {rpm}sourcerpmR   R   RK   t   summaryt   descriptiont   NAR/   R1   s   {rpm}licenses   {rpm}providess
   {rpm}entrys   {rpm}requirest   homeR9   t   licenseRX   R   s4   WARNING: Duplicate packages exist for {} for arch {}(   R3   R   R   RC   (   RZ   R8   R   t   new_dictR`   RW   Ra   R   R9   R   RK   R   R   R/   R   RX   R   t   new_package(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   massage_primaryD  sZ    


c         C   s   |  d } |  d } | j  d  r | j  d  r | j  d  r | j  d  r | d k r d | k r d	 | k r | r t St S(
   NRW   R   s   rpmlib(s   config(s
   pkgconfig(R   s   rtld(GNU_HASH)s   .sot   ((   R   R,   Ro   (   t   dependsRW   t	   str_flags(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   valid_depends  s    

c         C   s   i d d 6d d 6d d 6d d 6d d	 6d
 d 6} |  j    } | | k rf | | t | |  } } n |  t |   } } | d k r d } n? | d k r d } n* | d k r d } n | d k r d } n  | | f S(   Ns   LGPL (>= 2)s   lgplv2+s
   GPL (>= 2)s   gplv2+s   Public-Domains   public domain (uncopyrighted)s   public domaint   MITs   mit/x11s   The Open Group Licenses   the open group licenset   APACHEt   Apaches   PUBLIC-DOMAINt   PROPRIETARYt   Proprietaryt   OTHERt   Other(   t   lowerR   (   t   rpm_licenset   mappingt   l_rpm_licenseR   t   family(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   remap_license  s&    

				i    c         C   s1   |  j  d  } | d k r- t | |  } n  | S(   Ns   '"
 i    (   t   stripR   (   Rr   t   wrap_att   stripped(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt	   tidy_text  s    c   )   
   C   sP  t  | | t i | d 6  \ } }	 }
 | s2 d  S| rE | d }
 n
 | d }
 |	 } t t | d   d | d } | d | d } t | |  \ } } } } } } y% t | |  \ } } } } } } Wn d	 | k r | } q   n Xg  | d
 D] } t |  r | ^ q } | | d k rx | d | D] } t  | | t i | d 6  \ } } } | rxh | d D]H } | d | k rxt |  } d | k r| d =n  | j |  qxqxWq9d j | |  GHq9Wn  x | D] } t  | | |  \ } } } | r| d } n  | | d <| d | k rd | k rd | d k re| d d | d <n  d | d k r| d d | d <qn  |  rt |  | | d | | | | |  | d <qqW| d d |
 } d } t	 |  rg  | D]G } d j | d j
   j d d  | d | d | d | d  ^ q} d j g  | D] } d j |  ^ qH } d | d } d | }  d | |  } n  | j
   j d d  }! |! d | }" t | d  \ }# }$ t i | d d d 6|" d  6| d! d" 6| d# d$ 6| d% 6| d& 6| d' 6| d( d( 6|# d 6|$ d) 6| d* d+ 6| d, d, 6d- t | d.  d/ d. 6d0 d1 j t | d2 d3   d2 6d4 d5 6d6 d7 6d8 d9 6d: d; 6d< d= 6 }% t | |"  }& y t |&  Wn n Xt t |& d>  d?   }' |' j t j |%    Wd  QXt |& d@  }( t |( d?  * }' t |( dA  |' j t j |%    Wd  QX| S(B   NRW   i    R   R   R   R   R   R9   R(   R   t   dependency_addRX   t   rels2   WARNING: Additional dependency of {}, {} not foundRa   RK   R   t   epochR   R?   R1   s   {}-{}-{} {}{}t   +Rx   R   s   
s       - {}s	     build:
s     run:
s   requirements:
R   t   packagenameR   t   hostmachineR   t
   hostsubdirR   t   rpmurlt	   srcrpmurlR   t   license_familyR   t   checksum_nameR   s   "(CDT) R   t   "s
   |
        s	   
        R   iN   s   {PREFIX}t   PREFIXs   {RPM}t   RPMs   {PWD}t   PWDs   {RECIPE_DIR}t
   RECIPE_DIRs	   {SRC_DIR}t   SRC_DIRs	   meta.yamlt   ws   build.shi  (   Re   R3   R   RP   R   R   Rt   RC   t   write_conda_recipesRB   R   R   R	   R   R   R   R5   R   t   RPM_METAR   t   BUILDSH()   t	   recursiveRZ   R`   R[   R   t
   output_dirt   override_archR8   Rd   t
   entry_nameRa   RN   t   srpm_urlR;   RO   t   requiredR   t   missing_dept	   e_missingt   e_name_missingRX   t   copy_providesR\   t	   dep_entryR]   t   dep_archt   snt
   dependsstrt   depends_specst   depends_spect   dependsstr_partt   dependsstr_buildt   dependsstr_runt	   package_lt   package_cdt_nameR   R   Rw   t   odirt   ft   buildsh(    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyR     s    	
"!%	)	
	
Q	"
!c      
   C   s  | } | d k r d n d }	 t  i d d 6 }
 t  i d d 6 } y |
 | } Wn | } n Xy | | } Wn | } n Xt  i | d	 6| d
 6| d 6|	 d 6 } t    } xM t t |  D]; \ } } t | t  r | j |   | | <q | | | <q Wd | k rt    | d <n  | rxn | D]c } | d j d  } | d | d k rw| d | d j | d  q*| d | d | d <q*Wn  | d } t | d t	 | | j
  } x6 |  D]. } t | | | | d g | | | | j
  qWd  S(   Nt   armv6t   armv7at   i686t   i386t   32t   64t   powerpc64let   ppc64let   architecturet   base_architecturet   gnu_architecturet   bitsR   i    t   ,i   R   t   primaryt   noarch(   R   R   R   R   (   R3   R    t   CDTst
   isinstanceR   RC   RA   t   extendR   R   R8   R   (   t   packagest   distroR   R   R   R   R   t   configt   cdt_nameR   t   base_architecturest   gnu_architecturesR   R   t   architecture_bitsR   t   kt   vt   package_and_missed_depst   as_listR   RZ   R`   (    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   write_conda_recipe0  sV    

	 
	R@   c	   	   	   C   s#   t  |  | | | | | | |  d  S(   N(   R  (	   R  R   RK   R   R   R   R   R	  R  (    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   skeletonizeh  s    c      
      s  |  j  d d d } | j d d d d d | j d d d	 d
 d | j d d d d d d d | j d d d d d d d | j d d d d
 t | j d d d d       f d   } | j d d | d
 t d d j      | j d d d d d  d
 t d d! d  S("   Nt   rpmt   helps2   
    Create recipe skeleton for RPM files
        R  t   nargsR   s   RPM package name(s)s   --output-dirs5   Directory to write recipes to (default: %(default)s).t   defaultR@   s   --recursivet   actiont
   store_truet   destR   s<   Create recipes for dependencies if they do not already exists   --dependency-addRt   sG   Add undeclared dependencies (format: package,missing_dep1,missing_dep2)s   --architecturesU   Conda arch to make these packages for, used in URL expansions (default: %(default)s).s	   --versions(   Version to use. Applies to all packages.c          S   s,   d j  g  t t  D] \ }  } |  ^ q  S(   Ns   , (   R	   R    R  (   RW   R;   (    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   valid_distros  s    c            s.   |  t  k r* t j d j        n  |  S(   Ns   valid --distro values are {}(   R  t   argparset   ArgumentTypeErrorRC   (   t   distro_name(   R  (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyR    s    s   --distrot   types<   Distro to use. Applies to all packages, valid values are: {}s   --no-override-archs'   Do not override noarch in package namesR   t   store_false(   t
   add_parsert   add_argumentt   default_architecturet   default_distroRC   R,   (   t   reposR  R  (    (   R  s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyR!  o  sP    		(C   R  t   conda_build.conda_interfaceR    t   conda_build.sourceR   t   conda_build.license_familyR   R   t   cPickleR|   R   t   hashlibR~   t   osR   R   t   os.pathR   R   R   R	   R
   R   t   sixR   t   textwrapR   t	   xml.etreeR   R   t   cranR   t   urllib.requestR   t   ImportErrort   urllib2R#  R$  R   R   R3   R   R!   R,   R  R.   RY   R>   RM   RP   RQ   RV   Re   R   Rn   R   R   R   R   R   R   R   R   R  Ro   R  R!  (    (    (    s8   lib/python2.7/site-packages/conda_build/skeletons/rpm.pyt   <module>   s   (	










						#	 		C			{	8	