§ \�dUãó¸—dZddlZddlZddlZgd¢ZdZdZdZdd„Zdd „Z d „Z da d „Z da d „Zd „Zd„Zdad„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZdS)zShared OS X support functions.éN)Úcompiler_fixupÚcustomize_config_varsÚcustomize_compilerÚget_platform_osx) ÚCFLAGSÚLDFLAGSÚCPPFLAGSÚ BASECFLAGSÚ BLDSHAREDÚLDSHAREDÚCCÚCXXÚ PY_CFLAGSÚ PY_LDFLAGSÚ PY_CPPFLAGSÚPY_CORE_CFLAGSÚPY_CORE_LDFLAGS)r r r rÚ_OSX_SUPPORT_INITIAL_có¸—|€tjd}| tj¦«}tj |¦«\}}t jdkr |dkr|dz}tj |¦«sJ|D]E}tj  ||¦«}tj |¦«r|cSŒFdS|S)zÚTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. NÚPATHÚwin32z.exe) ÚosÚenvironÚsplitÚpathsepÚpathÚsplitextÚsysÚplatformÚisfileÚjoin)Ú executablerÚpathsÚbaseÚextÚpÚfs ú..\python\lib\_osx_support.pyÚ_find_executabler)sË€ð  €|ÝŒz˜&Ô!ˆà �JŠJ•r”zÑ "Ô "€EÝ”× Ò  Ñ,Ô,�I€Dˆ#å Œ ˜ÒРc¨V¢m mØ &Ñ(ˆ å Œ7�>Š>˜*Ñ %Ô %ðØð ð ˆAÝ”— ’ ˜Q  Ñ+Ô+ˆAÝŒw�~Š~˜aÑ Ô ð à���ð ðˆtàÐóFcóÜ—ddl} ddl}| ¦«}n4#t$r't dt j¦«›�d¦«}YnwxYw| |¦«5}|r|›d|j›d�}n |›d|j›d�}t j |¦«s9|  ¦«  d ¦«  ¦«ndcddd¦«S#1swxYwYdS) z0Output from successful command execution or NonerNz/tmp/_osx_support.zw+bz >'z' 2>&1z 2>/dev/null >'ú'úutf-8) Ú contextlibÚtempfileÚNamedTemporaryFileÚ ImportErrorÚopenrÚgetpidÚclosingÚnameÚsystemÚreadÚdecodeÚstrip)Ú commandstringÚcapture_stderrr.r/ÚfpÚcmds r(Ú _read_outputr>7sh€ð ÐÐÐð"؈ˆˆØ × (Ò (Ñ *Ô *ˆˆøÝ ð"ð"ð"Ý ˆTÝ ŒI‰KŒKˆKðØ ñ"ô"ˆˆˆð"øøøð × Ò ˜BÑ Ô ðQ 2Ø ð DØ%2 ] ]°B´G°G°GÐ<ˆCˆCà,9¨M¨M¸2¼7¸7¸7ÐCˆCÝ8:¼ À#¹¼ÐPˆr�wŠw‰yŒy×Ò Ñ(Ô(×.Ò.Ñ0Ô0Ð0ÈDð QðQðQðQñQôQðQðQðQðQðQðQøøøðQðQðQðQðQðQs"†Ÿ.AÁAÁ(A,C!Ã!C%Ã(C%cóH—t|¦«ptd|›�¦«pdS)z0Find a build tool on current path or using xcrunz/usr/bin/xcrun -find Ú)r)r>)Útoolnames r(Ú_find_build_toolrBMs1€å ˜XÑ &Ô &ð Ý�<¸X¸XÐ GÑHÔHð àðr*cóž—t€Àda tdd¬¦«} tjd| ¦«¦«}| ¦«n#| ¦«wxYw|�Cd | d¦« d¦«dd …¦«an#t$rYnwxYwtS) z*Return the OS X system version as a stringNr@z0/System/Library/CoreServices/SystemVersion.plistr-)Úencodingz=ProductUserVisibleVersion\s*(.*?)ú.éé) Ú_SYSTEM_VERSIONr2ÚreÚsearchr7Úcloser!ÚgrouprÚOSError)r'Úms r(Ú_get_system_versionrOVsØ€õÐØˆð FÝÐGÐRYÐZÑZÔZˆAð  Ý”Ið8Ø9:¿º¹¼ñCôC�ð—’‘ ” � � ø�—’‘ ” � � øøøØˆ}Ø"%§(¢(¨1¯7ª7°1©:¬:×+;Ò+;¸CÑ+@Ô+@ÀÀ!ÀÔ+DÑ"EÔ"E�øøõð ð ð ð ˆDð øøøõ Ðs‹B8�'AÁA/Â8 CÃCcó¾—t€Pt¦«}|r@ td„| d¦«D¦«¦«an#t$rdaYnwxYwtS)z} Return the macOS system version as a tuple The return value is safe to use to compare two version numbers. Nc3ó4K—|]}t|¦«V—ŒdS©N©Úint©Ú.0Úis r(ú z,_get_system_version_tuple..�s(èè€Ð-UÐ-U¸­c°!©f¬fÐ-UÐ-UÐ-UÐ-UÐ-UÐ-Ur*rE©)Ú_SYSTEM_VERSION_TUPLErOÚtuplerÚ ValueError©Ú osx_versions r(Ú_get_system_version_tupler_us€€õÐ$Ý)Ñ+Ô+ˆ Ø ð +ð +Ý(-Ð-UÐ-U¸k×>OÒ>OÐPSÑ>TÔ>TÐ-UÑ-UÔ-UÑ(UÔ(UÐ%Ð%øÝð +ð +ð +Ø(*Ð%Ð%Ð%ð +øøøõ !Ð s™,AÁ AÁAcód—t|¦«D]}| t¦«r||=Œ dS)z-Remove original unmodified values for testingN)ÚlistÚ startswithÚ_INITPRE)Ú _config_varsÚks r(Ú_remove_original_valuesrfˆsA€õ�,Ñ Ô ð ð ˆØ �<Š<�Ñ !Ô !ð Ø˜Q�øð ð r*cóz—| |d¦«}||krt|z|vr ||t|z<|||<dS)z@Save modified and original unmodified value of configuration varr@N)Úgetrc)rdÚcvÚnewvalueÚoldvalues r(Ú_save_modified_valuerl�sP€ð×Ò  BÑ'Ô'€HØ�HÒÐ¥8¨b¡=¸ Ð#DÐ#DØ&.ˆ •X ‘]Ñ#Ø€L�ÑÐÐr*cór—t�tSt|›d�d¦«}d}| ¦«D]p}| d¦«rd}Œ| d¦«rd}Œ2|r<| ¦«}|dkrdaŒQ| d ¦«r |dd …aŒqt€datS) z= Returns the root of the default SDK for this system, or '/' Nz -c -E -v - zEnd of search listz /usr/includeú/z.sdk/usr/includeiôÿÿÿ)Ú_cache_default_sysrootr>Ú splitlinesrbr9Úendswith)ÚccÚcontentsÚ in_incdirsÚlines r(Ú_default_sysrootrv™sÝ€õÐ)Ý%Ð%å¸"¸"¸"Ð>ÀÑEÔE€HØ€JØ×#Ò#Ñ%Ô%ð 4ð 4ˆØ �?Š?Ð+Ñ ,Ô ,ð 4؈JˆJØ �_Š_Ð1Ñ 2Ô 2ð 4؈JˆJØ ð 4Ø—:’:‘<”<ˆDØ�~Ò%Ð%Ø),Ð&Ð&Ø—’Ð1Ñ2Ô2ð 4Ø)-¨d¨s¨d¬Ð&øÝÐ%Ø!$Ðå !Ð!r*cóL—t¦«}|rt|dk¦«ndS)z=Returns True if universal builds are supported on this system©é éF)r_Úboolr]s r(Ú_supports_universal_buildsr|²s,€õ,Ñ-Ô-€KØ+6Ð A�4� ˜wÒ&Ñ 'Ô 'Ð '¸EÐAr*có2—t¦«}|r|dkndS)z9Returns True if arm64 builds are supported on this system)é rF)r_r]s r(Ú_supports_arm64_buildsr¼s$€õ ,Ñ-Ô-€KØ%0Ð ;ˆ;˜'Ò !Ð !°eÐ;r*có†—dtjvr|S|d ¦«dx}}t|¦«st d¦«}nntj |¦« d¦«rÚreplaceÚ SystemErrorÚ_COMPILER_CONFIG_VARSrlr!)rdrrÚoldccÚdatariÚcv_splits r(Ú_find_appropriate_compilerrŒÆsr€ð" �rŒzÐÐØÐð˜dÔ#×)Ò)Ñ+Ô+¨AÔ.Ð.€BˆÝ ˜BÑ Ô ð+õ˜gÑ &Ô &ˆˆå Œ× Ò ˜"Ñ Ô × (Ò (¨Ñ /Ô /ð+åˆ|Ø "§ ¢ ¨3° Ñ :Ô :Ð :Ð :ð=ñ>ô>ˆà ð +�J $Ð&Ð&å! 'Ñ*Ô*ˆBà ð1ÝØ/ñ1ô1ð 1ð ˆU‚{€{õ(ð Kð KˆBØ�\Ð!Ð! bµ´ Ð&:Ð&:Ø'¨Ô+×1Ò1Ñ3Ô3�Ø$&¨%¢K K˜b˜b°R¸$±Y�˜‘ Ý$ \°2°s·x²xÀÑ7IÔ7IÑJÔJÐJøà Ðr*cóà—tD]e}||vr_|tjvrQ||}tjdd|tj¬¦«}tjdd|¦«}t |||¦«Œf|S)z5Remove all universal build arguments from config varsú -arch\s+\w+\sr„)Úflagsz-isysroot\s*\S+)Ú_UNIVERSAL_CONFIG_VARSrrrIÚsubÚASCIIrl)rdrir�s r(Ú_remove_universal_flagsr“s|€õ%ð:ð:ˆà �Ð Ð  "­B¬JÐ"6Ð"6Ø  Ô$ˆEÝ”FÐ+¨S°%½r¼xÐHÑHÔHˆEÝ”FÐ-¨s°EÑ:Ô:ˆEÝ  ¨r°5Ñ 9Ô 9Ð 9øà Ðr*cóZ—dtjvr|Stjd|d¦«�tjd|d dd¦«›d�¦«}|rKt D]C}||vr=|tjvr/||}tjd d |¦«}t|||¦«ŒD|S) z-Remove any unsupported archs from config varsr z -arch\s+ppcrNzecho 'int main{};' | 'r,rƒz6' -c -arch ppc -x c -o /dev/null /dev/null 2>/dev/nullz-arch\s+ppc\w*\sr„) rrrIrJr6r†r�r‘rl)rdÚstatusrir�s r(Ú_remove_unsupported_archsr–sÔ€ð �rŒzÐÐØÐå „y� ¨hÔ!7Ñ8Ô8ÐDõ”�ð˜4Ô ×(Ò(¨¨iÑ8Ô8Ð8Ð8ð ;ñ<ô<ˆð ð Bõ-ð Bð B�ؘÐ%Ð%¨"µB´JÐ*>Ð*>Ø(¨Ô,�EÝœFÐ#6¸¸UÑCÔC�EÝ(¨°r¸5ÑAÔAÐAøà Ðr*cóä—dtjvratjd}tD]G}||vrAd||vr7||}tjdd|¦«}|dz|z}t |||¦«ŒH|S)z2Allow override of all archs with ARCHFLAGS env varÚ ARCHFLAGSú-archrŽr„)rrr�rIr‘rl)rdÚarchrir�s r(Ú_override_all_archsr›:s‹€ð •b”jÐ Ð ÝŒz˜+Ô&ˆÝ(ð >ð >ˆBØ�\Ð!Ð! g°¸bÔ1AÐ&AÐ&AØ$ RÔ(�ÝœÐ/°°eÑ<Ô<�Ø ™  dÑ*�Ý$ \°2°uÑ=Ô=Ð=øà Ðr*có^—| dd¦«}tjd|¦«}|�| d¦«}tj |¦«sKtD]C}||vr=|tjvr/||}tj dd|¦«}t|||¦«ŒD|S)z+Remove references to any SDKs not availablerr@z-isysroot\s*(\S+)NrFz-isysroot\s*\S+(?:\s|$)r„) rhrIrJrLrrÚexistsr�rr‘rl)rdÚcflagsrNÚsdkrir�s r(Ú_check_for_unavailable_sdkr Ksµ€ð× Ò ˜h¨Ñ +Ô +€FÝ Œ Ð&¨Ñ/Ô/€AØ€}Ø�gŠg�a‰jŒjˆÝŒw�~Š~˜cÑ"Ô"ð BÝ,ð Bð B�à˜Ð%Ð%¨"µB´JÐ*>Ð*>Ø(¨Ô,�EÝœFÐ#=¸sÀEÑJÔJ�EÝ(¨°r¸5ÑAÔAÐAøà Ðr*có®—dx}}t|¦«}t¦«sdx}}nd|v}td„|D¦«¦«}|sdtjvr2 | d¦«}|||dz…=n#t $rYnwxYwŒ0n]t¦«sOttt|¦«¦«¦«D]%}||dkr||dzdkr|||dz…=Œ&dtjvr)|s'|tjd  ¦«z}|rC d „t|¦«D¦«}|sn&|d }||d kr |||dz…=n|||dz…=ŒBd }|}d „t|¦«D¦«}|s|}d„t|¦«D¦«}|D]8}||d kr ||dz}n||td ¦«d …}|rtj  |¦«s`tj d|›d�¦«tj d¦«tj ¦«|S)ae This function will strip '-isysroot PATH' and '-arch ARCH' from the compile flags if the user has specified one them in extra_compile_flags. This is needed because '-arch ARCH' adds another architecture to the build, without a way to remove an architecture. Furthermore GCC will barf if multiple '-isysroot' arguments are present. FTr™c3óDK—|]}| d¦«¯|V—ŒdS)ú -isysrootN©rb)rVÚargs r(rXz!compiler_fixup..ys3èè€ÐQÐQ 3°S·^²^ÀKÑ5PÔ5PÐQ˜3ÐQÐQÐQÐQÐQÐQr*r˜rGrFÚarm64cóB—g|]\}}| d¦«¯|‘ŒS©r£r¤©rVrWÚxs r(ú z"compiler_fixup..‘s-€ÐXÐXÐX™S˜Q˜q¸a¿lºlÈ;Ñ>WÔ>WÐX�qÐXÐXÐXr*rr£NcóB—g|]\}}| d¦«¯|‘ŒSr¨r¤r©s r(r«z"compiler_fixup..¡s-€ÐLÐLÐL‘S�Q�q°!·,²,¸{Ñ2KÔ2KÐLˆqÐLÐLÐLr*cóB—g|]\}}| d¦«¯|‘ŒSr¨r¤r©s r(r«z"compiler_fixup..¤s-€ÐTÐTÐT™˜˜1¸!¿,º,À{Ñ:SÔ:SÐT�1ÐTÐTÐTr*z2Compiling with an SDK that doesn't seem to exist: ú z%Please check your Xcode installation )rar|ÚanyrrÚindexr\rÚreversedÚrangeÚlenrÚ enumeraterÚisdirrÚstderrÚwriteÚflush) Ú compiler_soÚcc_argsÚ stripArchÚ stripSysrootr°ÚidxÚindicesÚsysrootÚargvars r(rrfsë€ð %Ð$€I� å�{Ñ#Ô#€Kå %Ñ 'Ô 'ðRð$(Ð'ˆ �L�Là˜wÐ&ˆ ÝÐQÐQ¨'ÐQÑQÔQÑQÔQˆ àð +�K¥2¤:Ð-Ð-ð ð Ø#×)Ò)¨'Ñ2Ô2�à  e¨A¡g  Ð.Ð.øÝð ð ð Ø�ð øøøð  ð å #Ñ %Ô %ð+å�E¥# kÑ"2Ô"2Ñ3Ô3Ñ4Ô4ð +ð +ˆCؘ3Ô 7Ò*Ð*¨{¸3¸q¹5Ô/AÀWÒ/LÐ/LØ  C¨¡E  Ð*øà•b”jÐ Ð ¨Ð ð"¥B¤J¨{Ô$;×$AÒ$AÑ$CÔ$CÑCˆ àð /ð /ØXÐX¥I¨kÑ$:Ô$:ÐXÑXÔXˆGØð ØØ˜A”JˆEؘ5Ô! [Ò0Ð0à  e¨A¡g  Ð.Ð.ð   e¨A¡g  Ð.ð /ð€GØ €FØLÐL�I gÑ.Ô.ÐLÑLÔL€GØ ðU؈ØTÐT¥ ¨+Ñ 6Ô 6ÐTÑTÔTˆàððˆØ �#Œ;˜+Ò %Ð %ؘS ™U”mˆGØ ˆEà˜S”k¥# kÑ"2Ô"2Ð"3Ð"3Ô4ˆGØ àð•r”w—}’} WÑ-Ô-ðÝ Œ ×ÒÐYÈgÐYÐYÐYÑZÔZÐZÝ Œ ×ÒÐAÑBÔBÐBÝ Œ ×ÒÑÔÐà ÐsÁA4Á4 BÂBcó|—t¦«st|¦«t|¦«t|¦«|S)aöCustomize Python build configuration variables. Called internally from sysconfig with a mutable mapping containing name/value pairs parsed from the configured makefile used to build this interpreter. Returns the mapping updated as needed to reflect the environment in which the interpreter is running; in the case of a Python from a binary installer, the installed environment may be very different from the build environment, i.e. different OS levels, different built tools, different available CPU architectures. This customization is performed whenever distutils.sysconfig.get_config_vars() is first called. It may be used in environments where no compilers are present, i.e. when installing pure Python dists. Customization of compiler paths and detection of unavailable archs is deferred until the first extension module build is requested (in distutils.sysconfig.customize_compiler). Currently called from distutils.sysconfig )r|r“r›r ©rds r(rr¶sH€õ2 &Ñ 'Ô 'ð.õ   Ñ-Ô-Ð-õ˜ Ñ%Ô%Ð%õ˜|Ñ,Ô,Ð,à Ðr*có`—t|¦«t|¦«t|¦«|S)zÄCustomize compiler path and configuration variables. This customization is performed when the first extension module build is requested in distutils.sysconfig.customize_compiler. )rŒr–r›rÂs r(rrßs8€õ˜|Ñ,Ô,Ð,õ˜lÑ+Ô+Ð+õ˜ Ñ%Ô%Ð%à Ðr*cóN—| dd¦«}t¦«p|}|p|}|�rt|}d}| tdz| dd¦«¦«}|rH td„| d¦«dd…D¦«¦«}n#t $rd }YnwxYwd }|d krºd | ¦«vr¤d }tjd |¦«}ttt|¦«¦«¦«}t|¦«dkr |d}nz|dkrd}nq|dkrd }nh|dkrd}n_|dkrd}nV|dkrd}nM|dkrd}nDt d|›�¦«‚|dkrtj dkrd}n|dvrtj dkrd}nd }|||fS)!z Filter values for get_platform()ÚMACOSX_DEPLOYMENT_TARGETr@Úmacosxrc3ó4K—|]}t|¦«V—ŒdSrRrSrUs r(rXz#get_platform_osx.. s(èè€Ð"NÐ"N¨a¥3 q¡6¤6Ð"NÐ"NÐ"NÐ"NÐ"NÐ"Nr*rErrG)ryérxr™Úfatz -arch\s+(\S+)rF)r¦Úx86_64Ú universal2)Úi386Úppc)rÌrÊÚintel)rÌrÍrÊÚfat3)Úppc64rÊÚfat64)rÌrÍrÐrÊÚ universalz#Don't know machine value for archs=rÌlrÊ)ÚPowerPCÚPower_MacintoshrÐrÍ)rhrOrcr[rr\r9rIÚfindallÚsortedÚsetr³rÚmaxsize)rdÚosnameÚreleaseÚmachineÚmacverÚ macreleaseržÚarchss r(rrós7€ð× Ò Ð8¸"Ñ =Ô =€FÝ$Ñ&Ô&Ð0¨&€JØ Ð !�z€Fà ñ; ؈؈ð ×!Ò!¥(¨8Ñ"3Ø$0×$4Ò$4°X¸rÑ$BÔ$BñDôDˆà ð !ð %Ý"Ð"NÐ"N°:×3CÒ3CÀCÑ3HÔ3HÈÈ1ÈÔ3MÐ"NÑ"NÔ"NÑNÔN� � øÝð %ð %ð %Ø$� � � ð %øøøð!ˆJà ˜'Ò !Ð ! w°&·,²,±.´.Ð'@Ð'@ðˆGå”JÐ/°Ñ8Ô8ˆEÝ�&¥ U¡¤Ñ,Ô,Ñ-Ô-ˆEå�5‰zŒz˜QŠˆØ œ(��ØÐ-Ò-Ð-Ø&��ؘ/Ò)Ð)Ø��ØÐ,Ò,Ð,Ø!��ØÐ3Ò3Ð3Ø ��ØÐ-Ò-Ð-Ø!��ØÐ<Ò<Ð<Ø%��å �jØ>C¸eÐEñGôGðGð˜Ò Ð õŒ{˜eÒ#Ð#Ø"�øà Ð6Ð 6Ð 6õŒ{˜eÒ#Ð#Ø!��à�à �G˜WÐ %Ð%sÁ'4B B+Â*B+rR)F)Ú__doc__rrIrÚ__all__r�rˆrcr)r>rBrHrOrZr_rfrlrorvr|rrŒr“r–r›r rrrrrYr*r(úrásªðØ$Ð$à € € € Ø € € € Ø € € € ð ð ð €ðAÐð ?Ðð #€ððððð4QðQðQðQð,ððð€ðððð<Ðð!ð!ð!ð& ð ð ð ð ð ðÐð"ð"ð"ð2BðBðBð<ð<ð<ð;ð;ð;ð| ð ð ð%ð%ð%ðPððð"ððð6MðMðMð`&ð&ð&ðRððð(K&ðK&ðK&ðK&ðK&r*