
    @d(2                         d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZmZmZ  e j        d          Z G d d	          ZdS )
    N)partial)existsjoin)PKG_PREFIX_MAP	MINPYCDEP)parse_pydepparse_requires_distguess_dependency)default	supportedVersionRangedhpythonc                   P    e Zd 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S )Dependenciesz6Store relations (dependencies, etc.) between packages.cpython3Nc                 .   || _         || _        |pi x}| _        |                    d          x| _        }|rdnd| _        |dk    r|rdnd| _        n.|dk    r|rdnd	| _        n|d
k    r|rdnd
| _        |rdnd| _        |d
k    r| j        | _        | j        | _        n| j        dz   | _        | j        dz   | _        d|v pd|v pd|v pd|v pd|v pd|v pd|v | _	        t                      | _        g | _        g | _        g | _        g | _        g | _        d S )Nz-dbgzpython%s-dbgzpython%sr   zpython3-dbgpython3cpython2zpython2-dbgpython2pypyzpypy-dbgz
pypy%s-dbgzpypy%s:anyz
python-devzpython-all-devzpython2-devzpython2-all-devzpython2.7-devzpython3-devzpython3-all-dev)implpackagebdependswithis_debug_package	ipkg_vtplipkg_tplipkg_tpl_maipkg_vtpl_mapython_dev_in_bdsetdepends
recommendssuggestsenhancesbreaks	rtscripts)selfr   r   r   dbgpkgs        (/usr/share/dh-python/dhpython/depends.py__init__zDependencies.__init__"   s   	:2%ty)0)9)9&)A)AA ,2Az:-3BMMDMMZ-3BMMDMMV^^*0<JJfDM-3A\\DN6>>#}D $D#}v5D $ 7D , 4 !: 0D 8!: - 5!: !2T 9!: !04 7	!:
 !. 5!: !2T 9 	 uu    c                 Z   t          j        | j        d          }t          | j                  D ]1}|                    | j        d                    |          |           2t          | j                  D ]1}|                    | j        d                    |          |           2t          | j	                  D ]1}|                    | j        d                    |          |           2t          | j
                  D ]1}|                    | j        d                    |          |           2t          | j                  D ]1}|                    | j        d                    |          |           2t          | j                  D ]}|                    | j        |           dS )zFill in debhelper's substvars.miscz
{}:Dependsz{}:Recommendsz{}:Suggestsz{}:Enhancesz	{}:BreaksN)r   getr   sortedr#   addsubstvarr   formatr$   r%   r&   r'   r(   add_rtupdate)r)   dhprefixis       r+   	export_tozDependencies.export_toG   s   #DIv66%% 	I 	IANN4<)<)<V)D)DaHHHH(( 	L 	LANN4<)?)?)G)GKKKK&& 	J 	JANN4<)=)=f)E)EqIIII&& 	J 	JANN4<)=)=f)E)EqIIII$$ 	H 	HANN4<););F)C)CQGGGG'' 	- 	-AOODL!,,,,	- 	-r-   c                 f    d| j         d| j        d| j        d| j        d| j        d| j        S )NzD=z; R=z; S=z; E=z, B=z; RT=)r#   r$   r%   r&   r'   r(   )r)   s    r+   __str__zDependencies.__str__W   s>     \\\4???DMMM]]]DKKK9 	9r-   c                 X    |r%|| j         vr| j                             |           d S d S d S N)r#   addr)   values     r+   dependzDependencies.depend\   sB     	$U$,..LU#####	$ 	$..r-   c                 X    |r%|| j         vr| j                             |           d S d S d S r<   )r$   appendr>   s     r+   	recommendzDependencies.recommend`   sB     	*U$/11O""5)))))	* 	*11r-   c                 X    |r%|| j         vr| j                             |           d S d S d S r<   )r%   rB   r>   s     r+   suggestzDependencies.suggestd   B     	(U$-//M  '''''	( 	(//r-   c                 X    |r%|| j         vr| j                             |           d S d S d S r<   )r&   rB   r>   s     r+   enhancezDependencies.enhanceh   rF   r-   c                 X    |r%|| j         vr| j                             |           d S d S d S r<   )r'   rB   r>   s     r+   break_zDependencies.break_l   sB     	&U$+--Ku%%%%%	& 	&--r-   c                 P    || j         vr| j                             |           d S d S r<   )r(   rB   r>   s     r+   rtscriptzDependencies.rtscriptp   s3    &&N!!%((((( '&r-   c           	      v    t                               d j                    j        } j        } j        } j        }|j        }|rt          |d         |d         |d         |d         |d         f          rt          |d         |d         |d         f          r|}n|}|j	        }	|j
        }
|	|
k    r                     ||	z             d x}	}
|	r                     |d|	d           |
r                     |d	|
d
            j        dk    r|d         rt          |d                   }|d         }	|d         }
|	t           j                  k    r                     |d|	d           |
t           j                  k    r                     |d	|
dz   d
            j        dk    rZ|                    d          rE                     d                    d t          |d                   D                                  |d         rt          |d                   }|d         }	|d         }
|	t           j                  k    r                     |d|	d           |
t           j                  k    r                     |d	|
dz   d
           |d         r3 j        t"          v r%                     t"           j                            |d         D ](}                     | j        dk    rdnd           )t%           j                  }t           j                  }|d                                         D ]\  }}t)          d |                    dg           D                       }|D ]=}||v r                     ||z             t                               d||z             >t          d |                    dg           D                       r                     |           d} j        rt          |                    dt/                                          }|rF                     |d|d         d                                |d	|d         dz   d
           nN|                    d          r9                     |d|d                                |d	|dz   d
           |                    d          rh j        t"          v r%                     t"           j                            d}|r$|dt1          |d         |d                   z  z  }nt3          |          dk    r|d|d         z  z  }n|                    d          r	|d|z  z  }n|r|d|z  z  }|j	        |j
        k    r                     ||j	        z             nQ|j	        r                      |d|j	        d           |j
        r#                     |d	|j
        dz   d
           |j        pg D ]#}|d|j                            dd          z  z  }$                     ||f           |j        |j        |j         d}tC          tD           j         j#        |j$                   }|j%        rM|d!         D ]X}tM           j        |fd" j#        i|} fd#|d$         D               fd%|d&         D               fd'|d(         D              Y|d)         D ]}tO          |d*d+,          5 }|D ]R}|(                    d-          r;|d.d          )                                }                      ||/                     S	 d d d            n# 1 swxY w Y   |d0         D ]X}tU           j        |fd" j#        i|} fd1|d$         D               fd2|d&         D               fd3|d(         D              Y|j+        pg D ]!}                      ||/                     "|j,        pg D ]!} -                     ||/                     "|j.        pg D ]!} /                     ||/                     "|j0        pg D ]}t!          d4 j        |          }tc          |          s-|}tc          |          st           2                    d5|           TtM           j        |fd" j#        i|} fd6|d$         D               fd7|d&         D               fd8|d(         D              t                                           d S )9Nz&generating dependencies for package %scompilepublic_versext_versext_no_versionshebangsz (>= z~)z (<< )r   r      r   	ext_soabi|c              3   B   K   | ]}|                     d d          V  dS )-z-abi-N)replace).0soabis     r+   	<genexpr>z%Dependencies.parse.<locals>.<genexpr>   sL       !J !J%* "'sG!<!< !J !J !J !J !J !Jr-    r   private_dirsc              3   J   K   | ]}|j         	|j         j        |j         V  d S r<   versionminorr[   r7   s     r+   r]   z%Dependencies.parse.<locals>.<genexpr>   s7      ll!ail\]\e\klAIllllllr-   zDdependency on %s (from shebang) ignored - it's not supported anymorec              3   @   K   | ]}|j         |j         j        dV  d S )NTra   rd   s     r+   r]   z%Dependencies.parse.<locals>.<genexpr>   s5      mmA	@QUVU^UdUl4UlUlUlUlmmr-   Fz-V %s)minvermaxverz -X '%s''z'\'')depends_secrecommends_secsuggests_sec)r   r   accept_upstream_versionszrequires.txtr   c                 :    g | ]}                     |          S  r@   r[   r7   r)   s     r+   
<listcomp>z&Dependencies.parse.<locals>.<listcomp>   #    999AQ999r-   r#   c                 :    g | ]}                     |          S rn   rC   rp   s     r+   rq   z&Dependencies.parse.<locals>.<listcomp>   %    ???q""???r-   r$   c                 :    g | ]}                     |          S rn   rE   rp   s     r+   rq   z&Dependencies.parse.<locals>.<listcomp>   #    ;;;Qa;;;r-   r%   zegg-inforzutf-8)encodingz
Requires: 
   )reqz	dist-infoc                 :    g | ]}                     |          S rn   ro   rp   s     r+   rq   z&Dependencies.parse.<locals>.<listcomp>   rr   r-   c                 :    g | ]}                     |          S rn   rt   rp   s     r+   rq   z&Dependencies.parse.<locals>.<listcomp>   ru   r-   c                 :    g | ]}                     |          S rn   rw   rp   s     r+   rq   z&Dependencies.parse.<locals>.<listcomp>  rx   r-   debianz!cannot find requirements file: %sc                 :    g | ]}                     |          S rn   ro   rp   s     r+   rq   z&Dependencies.parse.<locals>.<listcomp>  s#    555T[[^^555r-   c                 :    g | ]}                     |          S rn   rt   rp   s     r+   rq   z&Dependencies.parse.<locals>.<listcomp>  s%    ;;;1T^^A;;;r-   c                 :    g | ]}                     |          S rn   rw   rp   s     r+   rq   z&Dependencies.parse.<locals>.<listcomp>  s#    777T\\!__777r-   )3logdebugr   r   r   r   r    vrangeanyrf   rg   r@   r   r1   r   r0   r   r   r   itemslistinfor!   r"   r   lenregexprpatternrZ   rL   depends_sectionrecommends_sectionsuggests_sectionr   r
   r   rl   
guess_depsr   open
startswithstripr	   r#   r$   rC   r%   rE   requiresr   warn)r)   statsoptionstplvtpltpl_mavtpl_mar   tpl_tmpminvmaxvsorted_versipretersupported_versionsdefault_versionprivate_dirdetailsversionsv
extensionsargsregexsection_optionsr   fndepsfpathfpliner|   items   `                              r+   parsezDependencies.parset   s"   		:DLIIIm~!# 	<c5+U=-A ,e4D.E ,. / / 	< E)$eM&:E*<MNOO  =D=Dt||D4K(((""t =WWWddd;<<< <GGGTTT:;;;9
""u]';" }!566Kq>Dr?Dwty))))VVVTTT:;;;wty))))FFFD1HHH=>>>9599[#9#9 KK !J !J.4U;5G.H.H!J !J !J J J K K K  		< z!233Kq>Dr?Dwty))))SSS$$$7888wty))))CCC:;;;  	.	Y 6 6KK	$),---Z( 	S 	SGKK''f1D1D22&+PQRRRR&ty11!$),,$).$9$?$?$A$A 2	3 2	3 Kllw{{:r/J/JlllllH I I***KK!,,,,HH >?CaxI I I I mmZ!<!<mmmmm $F###J$ 	K#GKK
CEE$B$BCC
 KKKjmmm DEEEKKZ^a5G5G5G HIIII[[!122 KKKooo FGGGKK_q5H5H5H IJJJ{{9%% 39	))KK	$) 4555 TGl*Q-PZ[]P^&_&_&___DD]]a''Ghqk11DD[[!122 TGo55DD TGf,,D}55D6=$89999!= Q KK(OPPP!= T KKPQ@Q@Q@Q(RSSS$_2 M MEJ)>)>sG)L)LLLDD{D1222 #2%8#4
 

 -DIDI6=6VX X X
 	<N+ < < #49bTTtyTOTT9999i9999????D,>????;;;;$z*:;;;;;z* = =%w777 =2 " = =??<88 ="&rss)//"3"3C KK

s(;(;(;<<<== = = = = = = = = = = = = = =
 {+ < <*49e > >$) >-<> >9999i9999????D,>????;;;;$z*:;;;;; O)r 	. 	.DKK

t,,,----&," 	1 	1DNN::$///0000$* 	/ 	/DLL---...."(b 
	8 
	8B4<44E%== e}} HH@"EEEty%SSdiS?SSD5555T)_5555;;;;\(:;;;;7777d:&677777		$s   A]==^	^	)r   N)__name__
__module____qualname____doc__r,   r8   r:   r@   rC   rE   rH   rJ   rL   r   rn   r-   r+   r   r      s        @@# # # #J- - - 9 9 9
$ $ $* * *( ( (( ( (& & &) ) )e e e e er-   r   )logging	functoolsr   os.pathr   r   r   r   r   dhpython.pydistr   r	   r
   dhpython.versionr   r   r   	getLoggerr   r   rn   r-   r+   <module>r      s   *                        . . . . . . . . N N N N N N N N N N = = = = = = = = = =g
##z z z z z z z z z zr-   