Current File : //proc/3/root/proc/3/root/usr/lib/python2.7/site-packages/rpmUtils/arch.pyc
�
�v_c@s�ddlZddlZddlZddlZeZidHd6dId6dJd6dKd 6dLd6ZerrdMed <ni-dd6d
d6dd6dd
6dd6dd6dd6dd6dd6dd6d d6d d6d d6dd 6dd6d
d6dd
6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6dd6d d6d!d 6d"d!6d#d"6dd#6d$d%6d&d$6d'd&6dd'6d(d)6dd(6dd*6dd+6d,d-6dd,6dd.6dd/6Zid0d16d2d36Zdd4�Z
d5�Zd6�Zd7�Z
dd8�Zdd9�Zdd:�Zd;�Zd<�Zd=�Zd>�Zd?�Zd@�ZdA�Zd2dB�Ze�ZedC�ZddD�ZddE�ZdFefdG��YZdS(Ni����Ntathlontx86_64tsparcv9vtsparc64vtsparcv9tsparc64tppctppc64ts390ts390xti686ti586tgeodeti486ti386tnoarchtamd64tia32etppc64letppc64p7tppc64pseriestppc64iseriestsparcv8tsparct alphaev68talphaev7t alphaev67talphaev6t
alphapca56t alphaev56talphaev5t alphaev45talphaev4talphatarmv6ltarmv7lt armv5tejltarmv5teltarmv7hltarmv7hnltarm64taarch64tsh4tsh4atsh3tia64ttplatformithwcapcCs�t|�}t|�r*td|�}n|g}|dksN|jd�r�x9tj�D](\}}||kr[|j|�q[q[Wn|S(NtmyarchRRR(RR(tgetBestArchtisMultiLibArchtgetBaseArcht
startswithtarchestitemstappend(tarchtresultstktv((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytlegitMultiArchesInSameLibes cCsdd||gkrtStd|�td|�kr8tS|t|�ks\|t|�kr`tStS(sbTake two arches and return True if it is possible that they can be
installed together with the same nevr. Ex: arch1=i386 and arch2=i686 then
it will return False. arch1=i386 and arch2=x86_64 will return True.
It does not determine whether or not the arches make any sense. Just whether
they could possibly install w/o conflictRR9(tFalseR3tgetArchListtTrue(tarch1tarch2((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytcanCoinstallvs
$cCsK||krdS|tkrGtt||�}|dkrC|dSdSdS(Nii(R6tarchDifference(R1t
targetarchtret((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyRD�scCs
tt|�S(N(RDt canonArch(R9((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytscore�scCsM|dkrt}n|tkr%dS|tkr5dSt|tkrIdSdS(s5returns true if arch is a multilib arch, false if notiiN(tNoneRGR6tmultilibArches(R9((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyR3�s c
CsRt|�dkrdS|dkr+t}nt|�}t|�}||kr}t||�}|dkr}|dkr}|Sn|d}x�|dD]�}t||�}t||�}|dkr�|dkr�q�n||kr�|dkr�|}q�n||kr|dkr|}qn||kr�q�q�Wt||�} | dkrNdS|S(s�
return the best arch from the list for myarch if - myarch is not given,
then return the best arch from the list for the canonArch.
iRiN(tlenRIRGR2tgetBestArchFromListRD(
tarchlistR1t
mybestarchtbestarchtbestarchchoicetthisarchR9tval1tval2tval((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyRL�s8
cCs�|st}n|g}x'|tkrAt|}|j|�qW|ddkre|jdd�nt|�dkr�|d|kr�|jd�n|S(NiRiRR(RGR6R8tinsertRK(RQRM((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyR?�s
"cCs ytdd�SWngSXdS(sY Try to read /proc/cpuinfo ... if we can't ignore errors (ie. proc not
mounted). s
/proc/cpuinfotrN(topen(((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyt_try_read_cpuinfo�scCs�ytdd�j�}WndSXd}d}tjd�}d}tj�}x}|t|�|kr�tjd||�\}}||kr�||_|jt d<n||kr�|t d <n||}qTWdS(
sw Read /proc/self/auxv and parse it into global dict for easier access
later on, very similar to what rpm does. s/proc/self/auxvtrbNiitLLiR/R0(
RWtreadtstructtcalcsizetctypestc_char_pRKtunpack_fromtvaluet_aux_vector(tdatatAT_PLATFORMtAT_HWCAPtfmtlentoffsetR/tat_typetat_val((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyt_parse_auxv�s"
cCs�|dkrPx=t�D]2}|jd�r|jd�dkrDdSPqqW|S|dkr`|Sxet�D]Z}|jd�r�|jd�dkr�d S|jd
�rj|jd�dkr�dSPqjqjW|S(NRs
model names Geode(TM)i����RR
tvendortAuthenticAMDRtflagstcmov(RXR5tfind(R9tline((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytgetCanonX86Arch
s"$cCs&tjd�}|jd�r"|S|S(Ns%{_target_cpu}tarmv7h(trpmtexpandMacroR5(R9ttarget((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytgetCanonARMArch#scCs�|dkr|Sd}x=t�D]2}|jd�dkr |jd�d}Pq q Wtd}|dkrw|rw|Sy6|jd�r�t|djd ��d
kr�dSWnnX|dkr�|S|jd�dkr�d
S|jd�dkr�dS|S(NRtmachinei����t:iR/tpowerit+iRsCHRP IBMRtiSeriesR(RIRXRotsplitRbR5tinttrstrip(R9RwRpR/((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytgetCanonPPCArch*s,
.cCs�d}x7t�D],}|jd�r|jd�d}PqqW|dkrP|S|jd�dkr|jd�rxdSdSn|jd �dkr�|jd�r�dSd
Sn|jd�dkr�dS|S(
NttypeRxitsun4vi����RRRtsun4uRtsun4mR(RIRXR5R|Ro(R9t SPARCtypeRp((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytgetCanonSPARCArchHs$cCs�|dkr|Sd}x7t�D],}|jd�r |jd�d}Pq q W|dkr`|S|jd�dks�|jd�dkr�dS|jd �dkr�d
S|S(NRt vendor_idRxis
Authentic AMDi����RlRtGenuineIntelR(RIRXR5R|Ro(R9RkRp((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytgetCanonX86_64Arch`s*cCs,|rqtjdtj�rqyHtdd�}|j�}|j�|jdd�\}}}|SWqqqqXntj�d}t�t |�dkr�|ddkr�|dd!dkr�t
|�S|jd �r�t|�S|jd
�r�t
|�S|jd�rt|�S|dkr(t|�S|S(
Ns/etc/rpm/platformRVt-iiitit86tarmRRR(tostaccesstR_OKRWtreadlinetcloseR|tunameRjRKRqR5RvRR�R�(tskipRpmPlatformtfRpR9Rktopersys((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytgetCanonArchrs,
5
cCsE|tkrt|S|tkrAt|dkrAtdt|�SdS(NRR9(RJR6tgetMultiArchInfoRI(R9((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyR��s
cCsd|r|}nt}|jd�r5t|d}n|jd�r`tr`|dkr`d}n|S(NRiRRR(RGR5RJt_ppc64_native_is_best(R1R9((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyR2�s " cCs|st}n|tkr|S|jd�r2dS|dkrBdS|jd�r\tr\dS|jd�rodS|jd�r�dS|jd �r�d Std
|�r�|tkr�|St|Sn|tkr|}t|}x |dkr�|}t|}q�W|SdS(
s�returns 'base' arch for myarch, if specified, or canonArch if not.
base arch is the arch before noarch in the arches dict if myarch is not
a key in the multilibArches.RRRRRR(RrtarmhfpR�R9RN(RGR6R5R�R3RJ(R1tbasearchRa((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyR4�s6
tArchStoragecBsDeZdZd�Zded�Zdd�Zd�Zd�Z RS(scclass for keeping track of what arch we have set and doing various
permutations based on itcCsDd|_d|_d|_g|_g|_t|_|j�dS(N( RIt canonarchR�ROtcompatarchesRMR>tmultilibt
setup_arch(tself((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyt__init__�s cCs�|r||_n t|_td|j�|_td|j�|_|s�g}x9|jD].}t|�sy|dkr[|j|�q[q[W||_ntd|j�|_ t
d|j�|_td|j�|_t
d|j�|_dS(NR1RQRR9(R�RGR4R�R?RMR3R8R2ROR�R�R�R=tlegit_multi_arches(R�R9tarchlist_includes_compat_archtlimit_archlistta((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyR��s cCs"|s|j}nt|d|�S(NR1(R�RL(R�RMtfromarch((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pytget_best_arch_from_list�scCst|j|�S(N(RDR�(R�R9((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyRH�scCs|s
|jStd|�S(NRQ(RMR?(R�R9((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyt
get_arch_list�sN(
t__name__t
__module__t__doc__R�RIR@R�R�RHR�(((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyR��s (sathlonsx86_64sathlon(ssparcv9vssparcv9vssparc64v(ssparcv9ssparcv9ssparc64(sppcsppcsppc64(RR R(sppcsppc64sppc64(R�RsR^R\R@R�RJR6RbRIR=RCRDRHR3RLR?RXRjRqRvRR�R�R�RGR�R2R4tobjectR�(((s1/usr/lib/python2.7/site-packages/rpmUtils/arch.pyt<module>s�
,
(