B
    bC              K   @   sn  d Z dZddlZddlZddlZddgddgddgd	d
gd	dgddgddgddgddgddgddgddgddgddgddgddgdd gd!d"gd#d$gd%d&gd'd(gd)d*gdd+gd,d-gd!d"gd!d"gd.Zd/gd0gd1gd2gd3gd4gd5gd/gd/gd6gd7gd8gd9gd:gd;gd<d/gd<d/gd<d/gd<d/gd=gd<d/gd>gd<d/gd?gd@gdAgdBgd/dCgdDgdEgd>gd5gd/gd/gd<d/gd/gd/gd/gd=gdFgd/dCgd/gd/dCgdGgdGgd/gd/gd/gd/gd/gd/gd/gd/gdHgd/gdIgdJgdKgdLgdMgd/gd/gd/gd/gd/gdNAZdgdOgdPdQdRgdSgddPdRgddQdPgdgdTgdUgdVgdWgdXgdYgdZgd[gddQdRgd\gd]d!gd^gd^d_gd^d_d`gd^d_d`dagdbZdcd/gd0gd1gd2gd3gd4gd5ddd/gd/gd/gd6gd7gd8gd9gd:gd;gd<d/gd<d/gd<d/gd<d/gd=gd<d/gd>gd<d/gd?gd@gdAgdBgd/gd/dCgdDgdEgd>gd5ddd/gd/gd<d/gd/gd/gdEgdEdegd>dfgd=dggdhgd/gd=gdFgdhgdhgdigdhgdhgdGgdGgdhgdhgdhgdhgd/dCgd/gdjd/gd/gd/gdHgd/gdMgdJgdKgdLgdMgdKgdKgdKgdJgdkddd/gdlIZ	d0gd0gd0gd0gd0gd5gd6gdmgd7gd9gd:gd8gd;gdngd<gd<gd<gd<gdDgd<gdDgd<gdDgdDgdDgdDgd5gdogd<gdDgdDgdDgdDgdhgdDgdDgdhgdhgdhgdGgdGgdhgdhgdhgdhgdjgdpgdqgdHgdHgdJgdKgdKgdKgdKgdKgdKgdJgd5gdr;Z
dsdtdugdsdtdudvgdsdtdudwgdsdtdudxgdsdtdudygdsdtdudzgdsdtgdsdtd{gdsdtd|gdsdtd|gdsdtd}gdsdtd~gdsdtd~gdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtddDddhgddtddgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtddgdsdtdgdsdtdgdsdtdgdsdtgdsdtgdsdtdgdsdtdgdsdtgdsdtgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtdgdsdtgdsdtgdsdtgdsdtdugdsdtdugdsdtddgdsdtddgdsdtddgdsdtdddgdsdtddgdsdtddgdsdtgd<Zdd"gd0dgd1dgd4dgd3dgddgd2dgdkdgd6dgdmdgd7dgd:dgd8dgd;dgdndgd<d-gd<d-gd<d-gd<d-gdddgd<d-gddgd<d-gddgdDdgdEdgd>dgd=dgddgdod$gddgd<d-gd<d-gdd&gddgdFdgddgdhdgddgdGd*gdd*gdd*gddgddgddgddgdidgdjdgdpd
gddgdqdgdHdgddgdKd(gdJdgddgdLd(gdMd(gdId(gdKd(gdKd(gdKd(gdKd(gdJdgd5dgdd gdBZdddZdd Zdd Zdd Zdd Zdd Zedkrje  dS )aQ  SCons.Tool.rpmutils.py

RPM specific helper routines for general usage in the test framework
and SCons core modules.

Since we check for the RPM package target name in several places,
we have to know which machine/system name RPM will use for the current
hardware setup. The following dictionaries and functions try to
mimic the exact naming rules of the RPM source code.
They were directly derived from the file "rpmrc.in" of the version
rpm-4.9.1.3. For updating to a more recent version of RPM, this Python
script can be used standalone. The usage() function below shows the
exact syntax.

z,__FILE__ __REVISION__ __DATE__ __DEVELOPER__    NAIX5AmigaOSZbsdiZ12Zcygwin32Z15Z14darwinZ21FreeBSD8Zhpux106ZIrix2ZIrix64Z10Linux1zOS/390Z20zVM/ESAZmacosxFreeMiNTZ17ZNextStepZ11Z18Zosf17zSCO_SV3.2v5.0.29ZSunOS4Zsolaris3ZMP_RASZ16Z19machtenZ13)r   r   BSD_OSZCYGWIN32_95ZCYGWIN32_NTDarwinr   zHP-UXIRIXIRIX64r
   z	Linux/390z	Linux/ESAMacOSXMiNTZNEXTSTEPzOS/390ZOSF1ZSCO_SVZSunOS4ZSunOS5ZUNIX_SVzVM/ESAr   zosf3.2zosf4.0Znoarchalphaalphaev5
alphapca56alphaev6	alphaev56x86_64armv3larmv4larmv5telarmv4tl	armv5tejlarmv6lm68kminti686i586parisczhppa1.0zhppa1.1zhppa1.2fati386i486pentium3ppc64sh4sparcv9vsparc64sparcsparcv8sparcv9)Ar   r   r   r   	alphaev67r   amd64r   armv4br   r!   r"   r    r#   armv7l
ataricloneataristataristeatarittathlonfalcongeodehadeszhppa1.0zhppa1.1zhppa1.2zhppa2.0r)   r*   r&   r%   ia32eia64m68kmilanmipsmipselr'   r+   pentium4ppcppc32dy4r,   ppc64iseriesppc64pseriesppc8260ppc8560
ppciseries
ppcpseriess390s390xsh3r-   sh4ar0   r/   sparc64vr1   r2   r.   sun4csun4dsun4msun4ur   r   mintr   TOSr   zhpux9.07z	hpux10.00z	hpux10.01z	hpux10.10z	hpux10.20z	hpux10.30zhpux9.04zhpux9.05zncr-sysv4.2zosf3.2z
solaris2.3z
solaris2.4z
solaris2.5z
solaris2.6)r   r   r   r   r   rX   zbsdi4.0z	hpux10.00z	hpux10.01z	hpux10.10z	hpux10.20z	hpux10.30z	hpux11.00zhpux9.05zhpux9.07rW   zncr-sysv4.3zosf4.0z
solaris2.4z
solaris2.5z
solaris2.6z
solaris2.7Zaxpr;   osfmach3_i386osfmach3_i486osfmach3_i586rF   rs6000rN   r4   )Ir   r   r   r   r3   r   r4   r   r5   r   r!   r"   r    r#   r6   r7   r8   r9   r:   r;   r<   r=   r>   zhppa1.0zhppa1.1zhppa1.2zhppa2.0i370r)   r*   r&   r%   r?   r@   rB   rC   rD   rY   rZ   r[   osfmach3_i686osfmach3_ppcr'   r+   rE   powerpcpowerppcrF   rG   r,   rH   rI   rJ   rK   rL   rM   r\   rN   rO   rP   r-   rQ   r0   r/   rR   r1   r2   r.   rS   rT   rU   rV   r   r5   r6   r@   rO   rP   );r   r   r   r3   r   r4   r   r5   r   r!   r"   r    r#   r6   r7   r8   r9   r:   r;   r<   r=   r>   r)   r*   r&   r%   r?   r@   rB   rY   rZ   r[   r^   r_   r+   rE   r`   ra   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r-   rQ   rR   r1   r2   r.   rS   rT   rU   rV   r   z-O2z-gz-mieeez
-mtune=ev5z-mtune=ev56z
-mtune=ev6z-mtune=ev67z-mtune=pca56z-march=armv3z-march=armv4z-march=armv4tz-march=armv5tez-march=armv6z-march=armv7z-fomit-frame-pointerz-march=athlonz-archz-Osz-m32z-march=geodez-mpa-risc-1-0z-march=i386z-mtune=i686z-march=i486z-march=i586z-march=i686z-march=pentium3z-march=pentium4z-fsigned-charz-mtune=ultrasparcz-m64z-mtune=niagaraz-mv8)<r   r   r   r   r3   r   r4   r   r5   r   r!   r"   r    r#   r6   r7   r8   r9   r:   r;   r<   r(   r=   r>   zhppa1.0zhppa1.1zhppa1.2zhppa2.0r)   r*   r&   r%   r?   r@   rA   rB   rC   rD   r'   r+   rE   rF   rG   r,   rJ   rK   rL   rM   rN   rO   rP   r-   rQ   r0   r/   rR   r1   r2   r.   r   Zsgir3   r=   r]   r?   rA   rC   rD   rE   rG   rH   rI   rJ   rK   rL   rM   shrQ   rR   xtensa)BZIPr   r   r   r   r3   r   r4   r   r5   r   r"   r    r#   r6   r7   r8   r9   r:   r;   r<   r=   r>   r]   r)   r*   r&   r%   r?   r@   rA   r$   rB   rC   rD   r+   rE   rF   rG   r,   rH   rI   rJ   rK   rL   rM   r\   rN   rO   rb   rP   r-   rQ   r0   r/   rR   r1   r2   r.   Zsun4rS   rT   rU   rV   r   rc   Tc          
   C   st   | rTy&t jddgdd }tj|}W qp tk
rP } ztdS d}~X Y qpX nt	 }|t
krpt
| d }|S )z( Return the canonicalized machine name. rpmz--eval=%_target_cpuF)shellNr   )
subprocessZcheck_outputrstripSConsZUtilZto_str	ExceptiondefaultMachineplatformmachine
arch_canon)Zuse_rpm_defaultZrmachinee ro   2lib/python3.7/site-packages/SCons/Tool/rpmutils.pyrj     s    rj   c              C   s    t  } | tkrt|  d } | S )z' Return the canonicalized system name. r   )rk   systemos_canon)Zrsystemro   ro   rp   defaultSystem  s    rs   c               C   s   t  t fS )z3 Return the canonicalized machine and system name. )rj   rs   ro   ro   ro   rp   defaultNames  s    rt   c             C   s  yt |d}| }W dQ R X t | d}| }W dQ R X i }ddddddd	g}x~|D ]v}|d
dd}| drq\|  }t|r\|d }	|	|kr\|d |kri ||	< |dd ||	 |d < q\W t |d}
d}x|D ]}|r|drd}|
	| q|
	| |drd}xb|
 D ]V\}	}|
	d|	  x2t| D ]"}|
	d|d|| f  qXW |
	d q4W qW W dQ R X W n   Y nX dS )a$   Read the given rpmrc file with RPM definitions and update the
        info dictionaries in the file pyfile with it.
        The arguments will usually be 'rpmrc.in' from a recent RPM source
        tree, and 'rpmutils.py' referring to this script itself.
        See also usage() below.
    rNoptflagsrm   rr   buildarchtranslatearch_compat	os_compatbuildarch_compat
: #r         wz# End of rpmrc dictionariesz# Start of rpmrc dictionariesz%s = {
z  '%s' : ['%s'],
z','z}

)open	readlinesrg   replacelstrip
startswithstripsplitlenwriteitemssortedkeysjoin)ZrpmrcZpyfilefZoldpyrd   dataZsectionsltokenskeyoutZpmentriesZarchro   ro   rp   updateRpmDicts  sR    



""r   c               C   s   t d d S )Nz rpmutils.py rpmrc.in rpmutils.py)printro   ro   ro   rp   usage  s    r   c              C   s@   dd l } t| jdk r&t  | d t| jd | jd  d S )Nr      r   r   )sysr   argvr   exitr   )r   ro   ro   rp   main  s
    
r   __main__)T)__doc__Z__revision__rk   rf   Z
SCons.Utilrh   rr   rz   ry   rx   rw   rv   rm   rj   rs   rt   r   r   r   __name__ro   ro   ro   rp   <module>   s  















<
