a ðÐLgã@s,ddlZddlZddlZGdd„deƒZdS)éNc@s.eZdZd dd„Zdd„Zdd„Zd d „ZdS) Ú ComponentNFcCs´||_||_d|_g|_g|_|r°tj |jd¡}tj |¡s@| |d¡}|sft d|jdƒ‚n |d|_| |d¡|_tj |jd¡}tj |¡rÒt |dƒ}|  ¡  ¡|_Wdƒn1sÈ0Y| |d ¡|_|j|j|jd œ}t |d ƒ0}|  tj|d d d¡|  d¡Wdƒn1s40Ynpt |dƒ}t |  ¡¡}Wdƒn1sp0Y|s’t d|jdƒ‚|d|_|d|_|d|_dS)NÚpkg5zprint-value-COMPONENT_NAMEz Component returns empty name at Ú.rzprint-package-namesz pkg5.fmrisÚrzprint-required-packages)ÚnameÚfmrisÚ dependenciesÚwTé)Ú sort_keysÚindentÚ z&Component pkg5 data is empty for path rrr)ÚdebugÚpathrÚsupplied_packagesÚrequired_packagesÚosÚjoinÚisfileÚrun_makeÚ ValueErrorÚopenÚreadÚ splitlinesÚwriteÚjsonÚdumpsÚloads)ÚselfrrZcomponent_pkg5_fileZcomponent_nameZcomponent_pkg5_fmris_fileÚfÚdata©r!ú=/data/jenkins/workspace/oi-encumbered/tools/bass/component.pyÚ__init__"s@    ,þ , .  zComponent.__init__cCs*d}t|jƒ}t|jƒ}| |¡r&d}|S)NFT)ÚsetrrÚ intersection)rÚ componentÚresultÚs1Ús2r!r!r"ÚrequiredKs    zComponent.requiredcCs„g}|jrt d||¡tjddd|gtjtj|dd}| ¡\}}| ¡D]}| | ¡¡qL|jr€|j dkr€t d|j |¡|S) NzExecuting 'gmake %s' in %sÚgmakez-sz--no-print-directoryT)ÚstdoutÚstderrÚcwdÚuniversal_newlinesrz exit: %d, %s) rÚloggerÚ subprocessÚPopenÚPIPEÚ communicaterÚappendÚrstripÚ returncode)rrÚtargetsr'Úprocr,r-Úoutr!r!r"rUs ü   zComponent.run_makecCs6d|j}|dd |j¡7}|dd |j¡7}|S)NzComponent: Path: %s z Provides Package(s): %s z z Required Package(s): %s )rrrr)rr'r!r!r"Ú__str__ls zComponent.__str__)NF)Ú__name__Ú __module__Ú __qualname__r#r*rr;r!r!r!r"r!s ) r)rr1rÚobjectrr!r!r!r"Ús