HOME


Mini Shell 1.0
DIR: /lib/python3/dist-packages/apt/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/apt/__pycache__/debfile.cpython-312.pyc
�

\�e������dZddlZddlZddlZddlmZddlmZddlm	Z	ddl
Z
ddlZddlmZ
ddlZGd�de�ZGd	�d
�ZGd�de�Zdd
�Zedk(re�yy)z;Classes for working with locally available Debian packages.�N)�Iterable)�BytesIO)�cast)�gettextc��eZdZdZy)�NoDebArchiveExceptionz9Exception which is raised if a file is no Debian archive.N)�__name__�
__module__�__qualname__�__doc__���-/usr/lib/python3/dist-packages/apt/debfile.pyrr#s��Crrc��eZdZdZed�\ZZZZdZ		d9de
dzdejdzddfd�Z
de
ddfd	�Zd
e
de
fd�Zd
e
defd�Zedee
fd
��Zedee
fd��Z	d:de
dede
fd�Zdeee
e
e
fdefd�Zdeee
e
e
fdefd�Zde
de
de
defd�Zdeee
e
e
fdefd�Zedeeee
e
e
ffd��Zedeeee
e
e
ffd��Zedeeee
e
e
ffd��Zedeeee
e
e
ffd��Zde
de
de
defd�Z defd�Z!defd�Z"d;d ede#fd!�Z$d:d"edefd#�Z%d$e
defd%�Z&d&eeee
e
e
fdefd'�Z'edee
fd(��Z(edeee
ee
ee
ffd)��Z)e*d*e
de
fd+��Z+e*d*e
e,e#zde
fd,��Z-		d<d-e.j^d.e
d/ed0ede
f
d1�Z0d.e
de
fd2�Z1d.e
de
fd3�Z2d4e#d5e
ddfd6�Z3	d=d7ejhjjjldzde#fd8�Z7y)>�
DebPackagezA Debian Package (.deb file).�rN�filename�cache�returnc��|�tj�}||_ttj
d�|_d|_d|_i|_	g|_
d|_d|_d|_
|r|j|�yy)N�F)�apt�Cache�_cacher�apt_inst�DebFile�_debfile�pkgnamer�	_sections�
_need_pkgs�_check_was_run�_failure_string�
_multiarch�open��selfrrs   r�__init__zDebPackage.__init__0sv���=��I�I�K�E�����X�-�-�t�4��
����$(��
�CE���%'���#���!���&*�����I�I�h��rc�r�|jdd|z�g|_t�|_d|_||_t
j|j
�|_|jjjd�}tj|�|_
|jd|_d|_y)zopen given debfile�z	open '%s'r�control�PackageFN)�_dbgr �set�_installed_conflictsr"rrrrr*�extractdata�apt_pkg�
TagSectionrrr!)r&rr*s   rr$zDebPackage.openAs����	�	�!�[�8�+�,����.1�e��!�!��� ��
� �(�(����7��
��-�-�'�'�3�3�I�>�� �+�+�G�4����~�~�i�0���#��r�keyc� �|j|S�N�r�r&r2s  r�__getitem__zDebPackage.__getitem__Ns���~�~�c�"�"rc��||jvSr4r5r6s  r�__contains__zDebPackage.__contains__Qs���d�n�n�$�$rc���g�	|jjj�fd���S#t$rt	d�|j
zgcYSwxYw)z$return the list of files in the deb.c�:���j|j�Sr4��append�name)�item�data�filess  �r�<lambda>z%DebPackage.filelist.<locals>.<lambda>Ys���U�\�\�$�)�)�5L�rz(List of files for '%s' could not be read)rr@�go�SystemError�_r)r&rAs @r�filelistzDebPackage.filelistTs[�����	S��M�M���!�!�"L�M�����	S��@�A�D�M�M�Q�R�R�	S�s�(/�"A�Ac���g�	|jjj�fd��t
��S#t$rt	d�|j
zgcYSwxYw)z*return the list of files in control.tar.gzc�:���j|j�Sr4r<)r?r@r*s  �rrBz-DebPackage.control_filelist.<locals>.<lambda>cs������t�y�y�8Q�rz0List of control files for '%s' could not be read)rr*rCrDrEr�sorted)r&r*s @r�control_filelistzDebPackage.control_filelist^sa�����	��M�M�!�!�$�$�%Q�R�
�g����	�	��D�E��
�
�U��
�	�s�(8�"A�Ar�in_conflict_checkingc�b�d|vr|S|js|S|jj|�r|S||jvrc|j|j�Jt	t
jj|j|j�jdk(r|S|�d|j��}||jvr|S|j|}|j�|S|jj}|j|jzr|S|r|j|jzs|S|S)N�:�all)
r#r�is_virtual_package�	candidaterr�package�Version�architecture�_cand�
multi_arch�MULTI_ARCH_FOREIGN�MULTI_ARCH_SAME)r&rrK�multiarch_pkgname�
multiarch_pkg�cands      r�_maybe_append_multiarch_suffixz)DebPackage._maybe_append_multiarch_suffixks ���'�>��N�����N�
�[�[�
+�
+�G�
4��N��t�{�{�"����G�$�.�.�:��S�[�[�(�(�$�+�+�g�*>�*H�*H�I�V�V����N�&�i�q����(9�:���D�K�K�/�$�$����$5�6�
��"�"�*�$�$��&�&�,�,���?�?�T�4�4�4��N� ����4�;O�;O�)O��N� � r�or_groupc
��|jdd|z�|D�]&}|d}|d}|d}|j|�}||jvr`|jj|�rD|jdd|z�|jj	|�D]}|j
s�y��|j|j}|�#tj|j||�ry|r��|jj	|d��D]4}|j
s�|jdd	|j�d
|�d��y��)y)
z�Return True if at least one dependency of the or-group is satisfied.

        This method gets an 'or_group' and analyzes if at least one dependency
        of this group is already satisfied.
        �z_checkOrGroup(): %s r�r)z+_is_or_group_satisfied(): %s is virtual depT)�include_nonvirtualzfound installed 'z' that provides '�'F)r,r[rrO�get_providing_packages�is_installed�	installedr0�	check_dep�versionr>)	r&r\�dep�depname�ver�oper�pkg�inst�ppkgs	         r�_is_or_group_satisfiedz!DebPackage._is_or_group_satisfied�sN��	
�	�	�!�+�x�8�9��&	$�C��!�f�G��a�&�C��q�6�D��9�9�'�B�G��d�k�k�)��;�;�1�1�'�:��I�I��H�7�R�� $�{�{�A�A�'�J�(���+�+�#'�(���;�;�w�'�1�1�D���G�$5�$5�d�l�l�D�#�$N��� �K�K�>�>���?��	$�D��(�(��	�	��#�y�y�'�3��
 $�	$�;&	$�Nrc���|D�]}|\}}}|j|�}||jvrU|jj|�s�E|jj|�}t	|�dk7r�o|dj
}|j|}|jjj|j�}|s��tj|j||�s��|jdd|z�|jj|�yd}	|D]:}|	|dz
}	rr|	d|d�d|d�d	�z
}	||t	|�dz
k7s�6|	d
z
}	�<|xjt!d�|	zz
c_y)
zTry to satisfy the or_group.r_rr^zNeed to get: %sTrz (� �)�|z"Dependency is not satisfiable: %s
F)r[rrOrb�lenr>�	_depcache�get_candidate_ver�_pkgr0re�ver_strr,r r=r"rE)
r&r\rgrhrirj�	providersrkrZ�or_strs
          r�_satisfy_or_groupzDebPackage._satisfy_or_group�s����	�C�!$��G�S�$��9�9�'�B�G��d�k�k�)��{�{�5�5�g�>�� �K�K�>�>�w�G�	��y�>�Q�&��#�A�,�+�+���+�+�g�&�C��;�;�(�(�:�:�3�8�8�D�D����$�$�T�\�\�4��=��
�I�I�a�*�W�4�5��O�O�"�"�7�+��;	�@���	�C��c�!�f��F��t��B�s�1�v�h�a��A��x�q�1�1���h�s�8�}�q�0�1�1��#�
��	�	
����"G� H�6� Q�Q��rrirjc
�
�|jdd|�d|�d|�d��|j|}|jr%|j�J�|jj}n2|j
r%|j�J�|jj}nytj|||�r^|j|||�sK|xjtd�|jzz
c_
|jdd|jz�y	y)
z@Return True if a pkg conflicts with a real installed/marked pkg.r)z"_check_single_pkg_conflict() pkg='z' ver='z' oper='raFz)Conflicts with the installed package '%s'z!conflicts with installed pkg '%s'T)
r,rrcrdrf�marked_installrPr0re�replaces_real_pkgr"rEr>)r&rrirjrk�pkgvers      r�_check_single_pkg_conflictz%DebPackage._check_single_pkg_conflict�s���	
�	�	�
���T�
#�	
�
�k�k�'�"������=�=�,�,�,��]�]�*�*�F�
�
�
��=�=�,�,�,��]�]�*�*�F��
���V�T�3�/��8N�8N��T�3�9
�
� � ��@�A�C�H�H�L�
� �
�I�I�a�<�s�x�x�G�H��rc��|jdd|z�|D�]-}|d}|d}|d}|j|d��}||jvr�|jj|�r�|jj	|�D]�}|jdd|j
z�|j|j
k(r|jdd	��N|j|j
||�s�l|jj|j
�����|j|||�s��|jj|���0t|j�S)
z5Check the or-group for conflicts with installed pkgs.r^z _check_conflicts_or_group(): %s rr_T)rKr)zconflicts virtual check: %szconflict on self, ignoring)r,r[rrOrbr>rrr.�add�bool)r&r\rgrhrirjrks       r�_check_conflicts_or_groupz$DebPackage._check_conflicts_or_groupsD���	�	�!�7�8�D�E��	7�C��!�f�G��a�&�C��q�6�D��9�9��d�:��G�
�d�k�k�)��;�;�1�1�'�:�#�{�{�A�A�'�J�D���	�	�!�%B�S�X�X�%M�N��<�<�3�8�8�3� �I�I�a�)E�F�$��:�:�3�8�8�S�$�O� �5�5�9�9�#�(�(�C�D���.�.�w��T�B��)�)�-�-�g�6�5	7�6�D�-�-�.�.rc�p�d}	tj|j|d�S#t$rgcYSwxYw)z/List of packages conflicting with this package.�	ConflictsF�r0�
parse_dependsr�KeyErrorr6s  r�	conflictszDebPackage.conflicts.s>����	��(�(�����)<�e�D�D���	��I�	���"'�5�5c��g}dD]5}	|jtj|j|d���7|S#t$rY�EwxYw)z2List of packages on which this package depends on.)�DependszPre-DependsF)�extendr0r�rr�)r&�dependsr2s   rr�zDebPackage.depends7sZ����+�	�C�
����w�4�4�T�^�^�C�5H�%�P�Q�	�
����
��
�s�2?�	A�
Ac�p�d}	tj|j|d�S#t$rgcYSwxYw)z<List of virtual packages which are provided by this package.�ProvidesFr�r6s  r�provideszDebPackage.providesC�>����	��(�(�����)<�e�D�D���	��I�	�r�c�p�d}	tj|j|d�S#t$rgcYSwxYw)z4List of packages which are replaced by this package.�ReplacesFr�r6s  r�replaceszDebPackage.replacesLr�r�c	���|jdd|�d|�d|���|j|}d}|jr%|j�J�|jj}n3|j
r%|j�J�|jj}nd}|jD]D}|D]=\}}}||k(s�
|�tj|||�s�'|jdd|z�y�Fy)z�Return True if a given non-virtual package is replaced.

        Return True if the deb packages replaces a real (not virtual)
        packages named (pkgname, oper, ver).
        r)zreplaces_real_pkg() rpNz?we have a replaces in our package for the conflict against '%s'TF)
r,rrcrdrfr|rPr�r0re)r&rrjrirkr~r\r>s        rr}zDebPackage.replaces_real_pkgUs���	
�	�	�!�+�G�9�A�d�V�1�S�E�B�C��k�k�'�"��!������=�=�,�,�,��]�]�*�*�F�
�
�
��=�=�,�,�,��]�]�*�*�F��F��
�
�
	 �H�#+�	
 ���c�4��7�?��N�g�&7�&7���c�&J��I�I��0�3:�<��
 �	
 �
	 �rc�T�d}|jD]}|j|�s�d}�|S)z�Check if there are conflicts with existing or selected packages.

        Check if the package conflicts with a existing or to be installed
        package. Return True if the pkg is OK.
        TF)r�r�)r&�resr\s   r�check_conflictszDebPackage.check_conflictsss8�������	�H��-�-�h�7���		�
�
rc�d�tt|j��}tt	|dz�d�}|j
d}|j
d}|jD�cgc]
}|dd��}}t|j�D�]{\}}||zdk(r4|jjjt|�|zdz�|js�P|j�J�|jj}	|jjD]�}
|
jD]�}|j |j"k(s�t%j&||j(|j*�r�I|j-dd|j z�|xj.t1d	�|j |j |j(|j*d
�zz
c_|jjj3�y��d|	j4vs���|	j4dD�]�}|D�]�}
|
j6j |j"k(r�|
j6j8|k(r�t%j&||
j:|
j<�r�|j-dd
|j z�|xj.t1d�|j |
j6j |
j:|
j<d�zz
c_|jjj3�y|
j6j |vs��$|j"|j k7s��?|j-dd
|z�|xj.t1d�dj?|�|j@|
j6j |j d�zz
c_|jjj3�y�����~|jjj3�ycc}w)z�
        check if installing the package would break exsisting
        package on the system, e.g. system has:
        smc depends on smc-data (= 1.4)
        and user tries to installs smc-data 1.6
        �2r_rR�ArchitecturergY@r^zwould break (depends) %sz]Breaks existing package '%(pkgname)s' dependency %(depname)s (%(deprelation)s %(depversion)s))rrh�deprelation�
depversionFr�zwould break (conflicts) %szZBreaks existing package '%(pkgname)s' conflict: %(targetpkg)s (%(comptype)s %(targetver)s))r�	targetpkg�comptype�	targetverz{Breaks existing package '%(pkgname)s' that conflict: '%(targetpkg)s'. But the '%(debfile)s' provides it via: '%(provides)s'�,)r��debfiler�rT)!�floatrsr�max�intrr��	enumerate�op_progress�updatercrdrv�current_ver�dependencies�or_dependenciesr>rr0re�relationrfr,r"rE�done�depends_list�
target_pkgrS�	comp_type�
target_ver�joinr)r&�size�steps�debver�debarch�xr��irkri�dep_orrg�conflicts_ver_list�c_ors              r�check_breaks_existing_packagesz)DebPackage.check_breaks_existing_packages�s{���S����%�&���C��r�	�N�A�&�����	�*���.�.��0��%)�]�]�3��A�a�D��G�3��3�����,�N	)�F�A�s��5�y�A�~����'�'�.�.�u�Q�x�$���/F�G��#�#���=�=�,�,�,��(�(�&�&�C��-�-�4�4�
)��!�1�1�)�C��x�x�4�<�<�/�&�0�0�����s�{�{�S� �I�I�a�)C�c�h�h�)N�O�
!�0�0�A�!C�5�
,/�8�8�+.�8�8�/2�|�|�.1�k�k�	!�		5�	�0�!�K�K�3�3�8�8�:�#(�')�
)�.�c�.�.�.�*-�*:�*:�;�*G�-)�&� 2�,)�� �O�O�0�0�D�L�L�@� $��� <� <�� G�&�0�0� &������� �!%�	�	�!�-I�C�H�H�-T� U�!%� 4� 4��%C�9"�
03�x�x�15���1E�1E�04���15���	%"�		9"�	!"� 4�!%��� 7� 7� <� <� >�',� �O�O�0�0�H�<� $������ 8� �I�I�a�)E��)P�Q� �0�0�A�!1�5�-0�H�H�X�,>�+/�=�=�-1�_�_�-A�-A�+.�8�8�	!�
5�
�0�!�K�K�3�3�8�8�:�#(�Y,)�-)�CN	)�^	
�����$�$�&���c4s�#P-�
use_installedc��|jdd�|jd}|jd}dj||g�}|jd}|jdd|z�||jvr�|j|}|r#|j�|jj
}n1|s#|j�|jj
}n|jS|�^tj||�}|jdd	|z�|d
k(r|jS|d
kr|jS|d
kDr|jS|jS)a	Compare the package to the version available in the cache.

        Checks if the package is already installed or availabe in the cache
        and if so in what version, returns one of (VERSION_NONE,
        VERSION_OUTDATED, VERSION_SAME, VERSION_NEWER).
        r)�compare_to_version_in_cacher+r�rMrRr_z
debver: %sz"CompareVersion(debver,instver): %sr)
r,rr�rrdrfrP�VERSION_NONEr0�version_compare�VERSION_SAME�
VERSION_NEWER�VERSION_OUTDATED)r&r�rrSr�rk�cachever�cmps        rr�z&DebPackage.compare_to_version_in_cache�s2��	
�	�	�!�2�3��.�.��+���~�~�n�5���(�(�G�\�2�3�����	�*���	�	�!�\�F�*�+��d�k�k�!��+�+�g�&�C�����!:��=�=�0�0��"�s�}�}�'@��=�=�0�0���(�(�(��#��-�-�h��?���	�	�!�A�C�G�H��!�8��,�,�,��1�W��-�-�-��1�W��0�0�0�� � � r�allow_downgradec���|jdd�d|_d|jvr#|jdd�td�|_y|jd}|d	k7r�|t
jjd
�k7ry|tj�vr=||_	|j�d|j��|_
|jdd|z�n&|jdd
�td�|z|_y|sQ|j�|jk(r4|j|jjrtd�|_yd|_|j�sy|j!�sy|j#|j$�sy|j�sy|jj&j(dkDr+td�|_|jj+�yy)z$Check if the package is installable.r)�checkTr�r_zERROR: no architecture fieldz$No Architecture field in the packageFrNzAPT::ArchitecturerMzFound multiarch arch: '%s'zERROR: Wrong architecture dude!zVWrong architecture '%s' -- Run dpkg --add-architecture to add it and update afterwardsz$A later version is already installedrrz1Failed to satisfy all dependencies (broken cache))r,r!rrEr"r0�config�find�get_architecturesr#rr�r�rrdr�r��_satisfy_dependsr�rt�broken_count�clear)r&r��archs   rr�zDebPackage.checks����	�	�!�W��"�������/��I�I�a�7�8�#$�%K�#L�D� ���~�~�n�-���5�=�T�W�^�^�%8�%8�9L�%M�M��w�0�0�2�2�"&���"&�,�,��q����0A�B����	�	�!�9�D�@�A��	�	�!�>�?��7��
���$�� ��0�0�2�d�6K�6K�K��{�{�4�<�<�(�2�2�'(�)O�'P��$�� "����#�#�%���2�2�4���$�$�T�\�\�2���#�#�%���;�;� � �-�-��1�#$�F�$�D� �
�K�K�����r�
dependsstrc�L�|jtj|d��S)z-Satisfy the dependencies in the given string.F)r�r0r�)r&r�s  r�satisfy_depends_strzDebPackage.satisfy_depends_strIs ���$�$�W�%:�%:�:�u�%M�N�Nrr�c��	tj|jj�}||D]'}|j|�r�|j
|�r�'y|jD]"}	|j|jd���$y#t$rY�iwxYw#t$r1td�|z|_|jj�YywxYw)zSatisfy the dependencies.F)�	from_userzCannot install '%s'T)
r0�ActionGrouprrt�AttributeErrorrnrzr �mark_installrDrEr"r�)r&r��_actiongroupr\rks     rr�zDebPackage._satisfy_dependsMs���	�"�.�.�t�{�{�/D�/D�E�L�� �	!�H��.�.�x�8��-�-�h�7� �	!�
�?�?�	�C�
����C� �-�-��-�>�	����	��	���
�'(�)>�'?�#�'E��$����!�!�#��
�s#�+B�)B�	B�B�6C�Cc��|jdd|jz�|jstd��|jS)zReturn missing dependencies.r_zInstalling: %s�-property only available after check() was run)r,r r!r��r&s r�missing_depszDebPackage.missing_depsds;��	
�	�	�!�%����7�8��"�"� �!P�Q�Q����rc���g}g}g}|jstd��|jD]�}|js|jrr|j
�J�|j
|j�d}|j
jD]}||jz}�|s|j
|j�|js��|j
|j���|||fS)z�Get the changes required to satisfy the dependencies.

        Returns: a tuple with (install, remove, unauthenticated)
        r�F)r!r�rr|�marked_upgraderPr=r>�origins�trusted�
marked_delete)r&�install�remove�unauthenticatedrk�
authenticated�origins       r�required_changeszDebPackage.required_changesls����������"�"� �!P�Q�Q��;�;�	(�C��!�!�S�%7�%7��}�}�0�0�0����s�x�x�(�!&�
�!�m�m�3�3�4�F�!�V�^�^�3�M�4�$�#�*�*�3�8�8�4�� � ��
�
�c�h�h�'�	(����1�1r�in_datac�l�d}t|�D]#\}}|dzdk(r|dz
}|dt|�zz
}�%|S)Nr�Pr�
z%2.2x )r��ord)r��hexr��cs    r�to_hexzDebPackage.to_hex�sM�����g�&�	%�D�A�q��2�v��{��t����8�c�!�f�$�$�C�	%��
rc���d}t|t�r0|D])}t|�dkst|�dkDr|dz
}�%||z
}�+|S|D] }|dks|dkDr|dz
}�|t|�z
}�"|S)Nr�
�rp)�
isinstance�strr��chr)r��sr��bs    r�	to_strishzDebPackage.to_strish�s������g�s�#��
���q�6�B�;�#�a�&�3�,���H�A���F�A�	
����
 ���r�6�Q��W���H�A���Q��K�A�	
 �
�r�partr>�auto_decompress�auto_hexc��|jd�r|dd}|j|�}|jd�rP|rNt|�}t	j
|��}t
d�jd�}||j�z
}	|jd�S#t$r$t
d�}||j|�z
}|cYSwxYw)Nz./r^z.gz)�fileobjzAutomatically decompressed:

zutf-8z,Automatically converted to printable ascii:
)�
startswithr/�endswithr�gzip�GzipFilerE�encode�read�decode�	Exceptionr�)	r&r�r>r�r�r@�io�gz�new_datas	         r�_get_contentzDebPackage._get_content�s����?�?�4� ����8�D�����%���=�=���O����B����r�*�B��6�7�>�>�w�G�D��B�G�G�I��D�	��;�;�w�'�'���	��H�I�H�����t�,�,�H��O�	�s�
B�*C�Cc�n�	|j|jj|�S#t$rYywxYw�z4return the content of a specific control.tar.gz filer)rrr*�LookupError�r&r>s  r�control_contentzDebPackage.control_content�s6��	��$�$�T�]�]�%:�%:�D�A�A���	��	���%(�	4�4c�n�	|j|jj|�S#t$rYywxYwr
)rrr@rrs  r�data_contentzDebPackage.data_content�s6��	��$�$�T�]�]�%7�%7��>�>���	��	�r�level�msgc�Z�||jkrt|tj��yy)z%Write debugging output to sys.stderr.)�fileN)�debug�print�sys�stderr)r&rrs   rr,zDebPackage._dbg�s!���D�J�J���#�C�J�J�'�r�install_progressc��|j�tjd��|�1tjtj
ddd|j�S	|j
�|j|j�}	|j�|S#t$r|j�Y�IwxYw#t$r|j�Y|SwxYw)zInstall the package.zNo filename specified�dpkgz-i)rr0�Error�os�spawnlp�P_WAIT�start_updater��startUpdate�run�
finish_update�finishUpdate)r&rr�s   rr�zDebPackage.install�s����=�=� ��-�-� 7�8�8��#��:�:�b�i�i����t�}�}�M�M�
/� �-�-�/�#�&�&�t�}�}�5�C�
0� �.�.�0��J��"�
/� �,�,�.�
/��
"�
0� �-�-�/��J�
0�s$�B�B3�B0�/B0�3C�C�NN�F)T)TTr4)8r	r
rr�ranger�r�r�r�rr�rrr'r$r7r�r9�property�listrFrJr[�tuplernrzrr�r�r�r�r�r}r�r�r�r�r�r�r�r�r��staticmethodr�rr�r�TarFilerrrr,�progress�base�InstallProgressr�r
rrrr's3��'�EJ�!�H�A�\�#�\�=�
�E�FJ� ��d�
� �25�)�)�d�2B� �	
� �"$�S�$�T�$�#�s�#�s�#�%��%��%���$�s�)�����	�$�s�)�	��	�:?�$!��$!�26�$!�	�$!�L/�t�E�#�s�C�-�4H�/I�/�d�/�b*�$�u�S�#�s�]�/C�*D�*��*�X�#��C��s��t��@/�$�u�S�#�s�]�7K�2L�/�QU�/�@��4��U�3��S�=�%9� :�;�����	��d�5��c�3��#7�8�9�	��	���$�t�E�#�s�C�-�$8�9�:������$�t�E�#�s�C�-�$8�9�:�������C��c��d��<���^��^�@!!��!!��!!�FC�T�C�d�C�JO�c�O�d�O���T�%��S�#�
�2F�-G�(H��T��.��d�3�i�����2�%��S�	�4��9�d�3�i�(G�"H�2��2�2����������3��#��.��3����,!%����������	�
��

�
�0�C��C�������(�#�(�C�(�D�(�LP�� #��� 1� 1� A� A�D� H��	�rrc���eZdZdZ	ddedzdejdzddfd�Zede	e	e
eeeffd��Zede	e	e
eeeffd��Zede	efd	��Z
d
eddfd�Zddedefd
�Zy)�
DscSrcPackagez#A locally available source package.Nrrrc���tj|d|�||_g|_g|_t�|_d|_g|_i|_	|j�|j|j�yy)Nr)rr'r�_depends�
_conflictsr-r.r�binariesrr$r%s   rr'zDscSrcPackage.__init__�si��	���D�$��.�$,��
�:<��
�<>���.1�e��!����#%��
�)+����=�=�$��I�I�d�m�m�$�%rc��|jS�z&Return the dependencies of the package)r6r�s rr�zDscSrcPackage.depends�s���}�}�rc��|jSr:)r7r�s rr�zDscSrcPackage.conflicts�s�����rc�H�|jdj�ddd�S)z6Return the list of files associated with this dsc file�Filesr^Nr))r�splitr�s rrFzDscSrcPackage.filelist�s'���~�~�g�&�,�,�.�q�t�!�t�4�4rrc�h�ddg}ddg}tj|�}tj|�}tj|�}	|D]�}|D]8}||vr�|j
j
tj||���:|D]8}||vr�|jj
tj||���:d|vr
|d|_	d|vr5|djd�D�	cgc]}	|	j���c}	|_|j�D]}||vs�|||j|<���	~|j�t!d�|jd	j#|j�fz}
|
|jd
<d|_ycc}	w#~|j�wxYw)
zOpen the package.z
Build-DependszBuild-Depends-IndepzBuild-ConflictszBuild-Conflicts-Indep�Source�Binaryr�zBInstall Build-Dependencies for source package '%s' that builds %s
rp�DescriptionFN)r0�open_maybe_clear_signed_filer �fdopen�TagFiler6r��parse_src_dependsr7rr>�stripr8�keysr�closerEr�r!)r&r�depends_tags�conflicts_tags�fd�fobj�tagfile�sec�tagr�r�s           rr$zDscSrcPackage.opens���'�)>�?��+�-D�E��
�
1�
1�$�
7���y�y��}���/�/�$�'��	��
7��'�N�C��#�~� ��M�M�(�(��)B�)B�3�s�8�)L�M�N�*�P�C��#�~� ��O�O�*�*�7�+D�+D�S��X�+N�O�P��s�?�#&�x�=�D�L��s�?�8;�H�
�8K�8K�C�8P�$Q�1�Q�W�W�Y�$Q�D�M��8�8�:�7�C��c�z�.1�#�h����s�+�7�
7�"��J�J�L�
�T�
�
�\�\�3�8�8�D�M�M�2�3�
4��)*����}�%�#����%R��
��J�J�L�s%�	B'F�0F�F�'F�F�F1r�c�0�|j�se|jD]V}|j|jjrtt
d���|j|j��Xd|_|j|j�S)z�Check if the package is installable.

        The second parameter is ignored and only exists for compatibility
        with parent type.z%An essential package would be removedT)r�r.rrv�	essentialrrE�mark_deleter!r�r�)r&r�rs   rr�zDscSrcPackage.check%s���
�#�#�%��4�4�
3���;�;�w�'�,�,�6�6�#�A�&M�$N�O�O����G�$�0�0�2�
3�
#����$�$�T�\�\�2�2rr(r))r	r
rrr�rrr'r+r,r-r�r�rFr$r�r�r
rrr4r4�s���-�FJ�%��d�
�%�25�)�)�d�2B�%�	
�%����d�5��c�3��#7�8�9������4��U�3��S�=�%9� :�;�����5�$�s�)�5��5�
 $�� $�� $�D3�T�3�d�3rr4c��ddlm}ddlm}|�}d}t	|�d|j|����|j
|�}t	d|z�|D]}t	d|jz��ttjd|�}t	d	|jz�|j�s t	d
�t	|j�t	d|jz�t	|j�t	|j �t	d�|j#|��}t	|�t%|�
�}d}	t	|j't)j*|	d���y)z
Test functionr)r)r2zwww-browserz
 virtual: zProviders for %s :z %sr_zDeb: %szcan't be satifiedzmissing deps: %szInstalling ...)rz:libc6 (>= 2.3.2), libaio (>= 0.3.96) | libaio1 (>= 0.3.96)FN)�	apt.cacher�apt.progress.baser2rrOrbr>rr�argvrr�r"r�r�rFr�r4r�r0r�)
rr2r�vprxrk�d�retr��dss
          r�_testr\6s6���1��G�E�	�B�	�R�D�
�5�3�3�B�7�8�
9�:��,�,�R�0�I�	�
��
#�$�� ��
�e�c�h�h��� �	�3�8�8�A�;��&�A�	�)�a�i�i�
� ��7�7�9�
�!�"�
�a��� �	�
�q�~�~�
-�.�	�!�
�
��	�!�*�*��	�
��
�)�)�O�%�
&�C�	�#�J�	�E�"�A�	E�B�	�!�
�
�W�2�2�2�u�=�
>�?r�__main__)rN)rrr r�collections.abcrrr�typingrrr0rrEr�IOErrorrrr4r\r	r
rr�<module>rasn��&B��	�
�$����� �
�D�G�D�x
�x
�vQ3�J�Q3�h#@�L�z��	�G�r