a oeq@sddlZddlZddlmZgdZdddZddd Zdd d Zzdd lm Z Wne yld dZ Yn0ddZ ze e fZddlZWneye ZddlZYn0ddZddZdS)N)VerificationError)sourcesZ include_dirsZ library_dirsZ extra_objectsZdependscKsBddlm}|g}|D]}|tj|q|f||d|S)Nr) Extension)namer)cffi._shimmed_dist_utilsrappendospathnormpath)Z srcfilenamemodnamerkwdsrZ allsourcessrcrr1C:\Program Files\Certbot\pkgs\cffi\ffiplatform.py get_extensions  rc Cstj}zJt||||}tj|}W|D]"\}}tj||kr0|tj|<q0n.|D]"\}}tj||kr^|tj|<q^0|S)z-Compile a C extension module using distutils.)r environcopy_buildr abspathitemsget)tmpdirextcompiler_verbosedebugZ saved_environZoutputfilenamekeyvaluerrrcompiles rc Cs ddlm}m}m}m}m}|d|gi} | | d} |durLtj j }d|f| d<d| d<d|f| d <d|f| d <zN|dpd} z2||| d| d} | \} W|| n || 0Wn>||fy}z td |jj|fWYd}~n d}~00| S) Nr) Distribution CompileError LinkError set_threshold set_verbosityZ ext_modulesZ build_ext ffiplatformr)r$TforceZ build_libZ build_tempz%s: %s)rrr r!r"r#Zparse_config_filesZget_option_dictsysflagsrZ run_commandZget_command_objZ get_outputsr __class____name__)rrrrrr r!r"r#ZdistoptionsZ old_levelZcmd_objZsonameerrrrs*        *r)samefilecCstj|tj|kSN)r r r)f1f2rrrr,=sr,cCstj|s|S|}g}|}tj|\}}||ks8|s<|S||z&t|tjrj|tjj|WSWqt y~Yq0qdSr-) r r isabssplitr r,curdirreversejoinOSError)r dirnamesZprevdirrrrrmaybe_relative_path@s     r8cCst|tr"|dt||fnt|trnt|}|dt||D]}t||t|||qNn`t|tt fr|dt||D]}t||qn*t|t r|d|fnt d|fdS)Nz%ds%sz%ddz%dlz%diz7the keywords to verify() contains unsupported object %r) isinstancestrwritelendictsortedkeys_flattenlisttuple int_or_long TypeError)xfr?rrrrrr@[s"     r@cCst}t|||Sr-) cStringIOStringIOr@getvalue)rErFrrrflattenns rJ)r)rN)rN)r&r errorrZLIST_OF_FILE_NAMESrrrZos.pathr, ImportErrorr8intZlongrCrG NameErrorior@rJrrrrs$