§
    ƒnócÆ  ã                  óF  — d dl mZ d dlZd dlZd dlZd dlZd dlmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ d dlZej        rddlmZ ddlmZ ddlmZ  G d„ de¦  «        Z G d„ de¦  «        Z eej         ej!        h¦  «        dd„¦   «         Z"dS )é    )ÚannotationsN)ÚPathé   )Ú
Popen_safeÚ
OrderedSetÚ	join_args)ÚExternalProgramé   )ÚDependencyExceptionÚDependencyMethods)ÚConfigToolDependency)ÚPkgConfigDependency)Úfactory_methods)ÚDependencyGenerator)ÚEnvironment)ÚMachineChoicec                  ó&   ‡ — e Zd ZdZddˆ fd„Zˆ xZS )ÚHDF5PkgConfigDependencyz/Handle brokenness in the HDF5 pkg-config files.NÚnameÚstrÚenvironmentú'Environment'ÚkwargsúT.Dict[str, T.Any]ÚlanguageúT.Optional[str]ÚreturnÚNonec                ó$  •— |pd}|dvrt          d|› d�¦  «        ‚t          ¦   «                              ||||¦  «         | j        sd S g }| j        D ]‹}|                     d¦  «        rt| j        rdnd}t          |dd …         ¦  «        |z                       ¦   «         r=| 	                    dt          t          |dd …         ¦  «        |z  ¦  «        z   ¦  «         ŒŒ| xj        |z  c_        g }|                      ¦   «         D �]}	t          |	¦  «        }
|
                     ¦   «         rÇg }|d	k    r|d
dgz  }n|dk    r|g d¢z  }|dgz  }d|
j                             dd¦  «        d         z   }|D ]g}|
j        |
j                             dd¦  «        d         |z   |z   z  }|                     ¦   «         r"| 	                    t          |¦  «        ¦  «         Œh| 	                    |	¦  «         Œí| 	                    |	¦  «         �Œ|| _        d S )NÚc>   r    ÚcppÚfortranú	Language ú is not supported with HDF5.ú-IÚstaticÚsharedr   r!   Ú_hl_cppÚ_cppr"   )Ú_hl_fortranÚ
hl_fortranÚ_fortranÚ_hlú.r
   r   )r   ÚsuperÚ__init__Úis_foundÚcompile_argsÚ
startswithr&   r   Úis_dirÚappendr   Úget_link_argsÚis_filer   ÚsplitÚparentÚ	link_args)Úselfr   r   r   r   ÚnewincÚargÚstemr:   ÚlargÚlpathÚhlÚsuffixÚhÚhlfnÚ	__class__s                  €ú>/usr/lib/python3/dist-packages/mesonbuild/dependencies/hdf5.pyr0   z HDF5PkgConfigDependency.__init__*   sT  ø€ Ø�?˜sˆØÐ2Ð2Ð2Ý%Ð&X°(Ð&XÐ&XÐ&XÑYÔYÐYå‰Œ×Ò˜˜{¨F°HÑ=Ô=Ð=ØŒ}ð 	ØˆFð ˆØÔ$ð 	Dð 	DˆCØ�~Š~˜dÑ#Ô#ð DØ#'¤;Ð<�x�x°H�Ý˜˜Q˜R˜Rœ‘M”M DÑ(×0Ò0Ñ2Ô2ð DØ—M’M $­­T°#°a°b°b´'©]¬]¸TÑ-AÑ)BÔ)BÑ"BÑCÔCÐCøØÐÔ˜VÑ#ÐÔàˆ	Ø×&Ò&Ñ(Ô(ð 	'ñ 	'ˆDÝ˜‘J”JˆEð �}Š}‰Œð 'Ø�Ø˜uÒ$Ð$Ø˜9 fÐ-Ñ-�B�BØ Ò*Ð*ØÐCÐCÐCÑC�BØ�u�g‘�à˜uœz×/Ò/°°QÑ7Ô7¸Ô:Ñ:�Øð 4ð 4�AØ œ<¨5¬:×+;Ò+;¸CÀÑ+CÔ+CÀAÔ+FÈÑ+JÈVÑ+SÑT�DØ—|’|‘~”~ð 4Ø!×(Ò(­¨T©¬Ñ3Ô3Ð3øà× Ò  Ñ&Ô&Ð&Ð&à× Ò  Ñ&Ô&Ð&Ñ&à"ˆŒˆˆó    ©N©
r   r   r   r   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   Ú__classcell__©rE   s   @rF   r   r   &   sH   ø€ € € € € à9Ð9ð*#ð *#ð *#ð *#ð *#ð *#ð *#ð *#ð *#ð *#ð *#rG   r   c                  ó2   ‡ — e Zd ZdZdZddˆ fd„Zdd„Zˆ xZS )ÚHDF5ConfigToolDependencyz(Wrapper around hdf5 binary config tools.z-showconfigNr   r   r   r   r   r   r   r   r   r   c                ó`  •— |pd}|dvrt          d|› d�¦  «        ‚|dk    rd}ddg}n)|dk    rd	}d
dg}n|dk    rd}ddg}nt          d¦  «        ‚|                      |¦  «        }|                     ¦   «         }||d<   |j        j        |         |         }		 t          |	                     ¦   «         ¦  «        t          j        d|› �<   t          |	 	                    ¦   «         ¦  «        t          j        d|› d�<   t          ¦   «                              ||||¦  «         t          j        d|› �= t          j        d|› d�= n&# t          j        d|› �= t          j        d|› d�= w xY w| j        sd S |                      ddgd¦  «        dd …         }
|
|                      d| j        rdndgd¦  «        dd …         z  }
|
D ]£}|                     d¦  «        s|dk    r| j                             |¦  «         Œ8|                     d¦  «        r| j                             |¦  «         Œht'          |¦  «                             ¦   «         r| j                             |¦  «         Œ¤|dk    rD|                     ¦   «         }d|d<   |                      t-          |||¦  «        ¦  «        | _        d S d S )Nr    >   r    r!   r"   r#   r$   ÚCCÚh5ccÚh5pccr!   ÚCXXzh5c++zh5pc++r"   ÚFCÚh5fcÚh5pfczHow did you get here?ÚtoolsÚHDF5_ÚLINKERz-showz-cÚargsr
   z-noshlibz-shlib)r%   z-fz-Dz-pthread)z-Lz-lz-Wlr   )r   Úget_for_machine_from_kwargsÚcopyÚcoredataÚ	compilersr   Úget_exelistÚosÚenvironÚget_linker_exelistr/   r0   r1   Úget_config_valuer&   r3   r2   r5   r:   r   r7   Ú_add_sub_dependencyÚhdf5_factory)r;   r   r   r   r   ÚcenvrZ   Úfor_machineÚnkwargsÚcompilerr]   r=   rE   s               €rF   r0   z!HDF5ConfigToolDependency.__init__]   s	  ø€ Ø�?˜sˆØÐ2Ð2Ð2Ý%Ð&X°(Ð&XÐ&XÐ&XÑYÔYÐYà�sŠ?ˆ?ØˆDØ˜WÐ%ˆEˆEØ˜ÒÐØˆDØ˜hÐ'ˆEˆEØ˜Ò"Ð"ØˆDØ˜WÐ%ˆEˆEå%Ð&=Ñ>Ô>Ð>ð ×6Ò6°vÑ>Ô>ˆà—+’+‘-”-ˆØ ˆ�Ñð
 Ô'Ô1°+Ô>¸xÔHˆð	1Ý)2°8×3GÒ3GÑ3IÔ3IÑ)JÔ)J�BŒJ�~˜t�~�~Ñ&Ý/8¸×9TÒ9TÑ9VÔ9VÑ/WÔ/W�BŒJÐ+˜tÐ+Ð+Ð+Ñ,Ý‰GŒG×Ò˜T ;°¸ÑBÔBÐBå”
˜> 4˜>˜>Ð*Ý”
Ð/ 4Ð/Ð/Ð/Ð0Ð0øõ ”
˜> 4˜>˜>Ð*Ý”
Ð/ 4Ð/Ð/Ð/Ð0Ð0Ð0Ð0Ð0ØŒ}ð 	ØˆFð ×$Ò$ g¨t _°fÑ=Ô=¸a¸b¸bÔAˆØ�×%Ò% w¸d¼kÐ0W°
°
ÈxÐ&XÐZ`ÑaÔaÐbcÐbdÐbdÔeÑeˆØð 	+ð 	+ˆCØ�~Š~Ð0Ñ1Ô1ð +°S¸JÒ5FÐ5FØÔ!×(Ò(¨Ñ-Ô-Ð-Ð-Ø—’Ð 3Ñ4Ô4ð +Ø”×%Ò% cÑ*Ô*Ð*Ð*Ý�c‘”×"Ò"Ñ$Ô$ð +Ø”×%Ò% cÑ*Ô*Ð*øð �sŠ?ˆ?Ø—k’k‘m”mˆGØ"%ˆG�JÑà ×4Ò4µ\À+È{Ð\cÑ5dÔ5dÑeÔeˆDŒMˆMˆMð	 ˆ?s   ÂBE Å#E&Úverc                óV   — t          j        d|¦  «        }|                     d¦  «        S )Nz \s*HDF5 Version: (\d+\.\d+\.\d+)r
   )ÚreÚsearchÚgroup)r;   rm   Úvs      rF   Ú_sanitize_versionz*HDF5ConfigToolDependency._sanitize_version•   s$   € ÝŒIÐ9¸3Ñ?Ô?ˆØ�wŠw�q‰zŒzÐrG   rH   rI   )rm   r   r   r   )rJ   rK   rL   rM   Úversion_argr0   rs   rN   rO   s   @rF   rQ   rQ   W   si   ø€ € € € € à2Ð2à€Kð6fð 6fð 6fð 6fð 6fð 6fð 6fðpð ð ð ð ð ð ð rG   rQ   Úenvr   rj   ú'MachineChoice'r   r   ÚmethodsúT.List[DependencyMethods]r   úT.List['DependencyGenerator']c           
     ó2  — |                      d¦  «        }g }t          j        |v �r2t          ddg¦  «        }t	          j        d| |¦  «        }t	          j        t          j        | |¦  «        }|r´t          |t          ¦  «        sJ ‚t          |                     ¦   «         dgz   t          j        |¬¦  «        \  }	}
}|	j        dk    r\|
                     d¦  «        D ]F}|                     d¦  «        r/|                     |                     d	d
¦  «        d         ¦  «         ŒG|D ]2}|                     t)          j        t,          || ||¦  «        ¦  «         Œ3t          j        |v r0|                     t)          j        t0          d| ||¦  «        ¦  «         |S )Nr   Úhdf5zhdf5-serialFz
--list-all)Ústderrru   r   ú
ú r
   )Úgetr   Ú	PKGCONFIGr   r   Ú_detect_pkgbinÚ	setup_envrc   rd   Ú
isinstancer	   r   Úget_commandÚ
subprocessÚDEVNULLÚ
returncoder8   r3   Úaddr5   Ú	functoolsÚpartialr   ÚCONFIG_TOOLrQ   )ru   rj   r   rw   r   Ú
candidatesÚpkgconfig_filesÚPCEXEÚpcenvÚretÚstdoutÚ_Úpkgs                rF   rh   rh   š   s˜  € ð �zŠz˜*Ñ%Ô%€HØ02€JåÔ" gÐ-Ñ-å$ f¨mÐ%<Ñ=Ô=ˆÝ#Ô2°5¸#¸{ÑKÔKˆÝ#Ô-­b¬j¸#¸{ÑKÔKˆØð 	BÝ˜e¥_Ñ5Ô5Ð5Ð5Ð5å'¨×(9Ò(9Ñ(;Ô(;¸|¸nÑ(LÕU_ÔUgÐmrÐsÑsÔs‰NˆC�˜ØŒ~ Ò"Ð"Ø!Ÿ<š<¨Ñ-Ô-ð Bð B�CØ—~’~ fÑ-Ô-ð BØ'×+Ò+¨C¯IªI°c¸1Ñ,=Ô,=¸aÔ,@ÑAÔAÐAøà"ð 	fð 	fˆCØ×Ò�iÔ/Õ0GÈÈcÐSYÐ[cÑdÔdÑeÔeÐeÐeåÔ$¨Ð/Ð/Ø×Ò�)Ô+Õ,DÀfÈcÐSYÐ[cÑdÔdÑeÔeÐeàÐrG   )
ru   r   rj   rv   r   r   rw   rx   r   ry   )#Ú
__future__r   r‰   rc   ro   r…   Úpathlibr   Úmesonlibr   r   r   Úprogramsr	   Úbaser   r   Ú
configtoolr   Ú	pkgconfigr   Úfactoryr   ÚtypingÚTÚTYPE_CHECKINGr   r   r   r   r   rQ   r€   r‹   rh   © rG   rF   ú<module>r       sÂ  ðð  #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð à„?ð )Ø,Ð,Ð,Ð,Ð,Ð,Ø)Ð)Ð)Ð)Ð)Ð)Ø(Ð(Ð(Ð(Ð(Ð(ð.#ð .#ð .#ð .#ð .#Ð1ñ .#ô .#ð .#ðb@ð @ð @ð @ð @Ð3ñ @ô @ð @ðF €Ð#Ô-Ð/@Ô/LÐMÑNÔNðð ð ñ OÔNðð ð rG   