B  @`ã@sddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z dd„Z gdfdd„Z Gdd „d e ƒZed krŒe ejd d…ƒdS) éN)Úconfig)Ú this_file_dirÚfind_executablecCs>|d}|jtjkr8t |tjtjBtjB¡||ƒn‚dS)Né)ÚerrnoÚEACCESÚosÚchmodÚstatÚS_IRWXUÚS_IRWXGÚS_IRWXO)ÚfunctionÚpathÚexcinfoZexcvalue©rú@/tmp/pip-unpacked-wheel-bi3529v6/pyomo/contrib/pynumero/build.pyÚhandleReadonlys   rc søddl}ddlm}ddlm}G‡‡fdd„d|tƒ}G‡fdd„d|tƒ‰tj d¡d gˆd ƒgd |id œ}|j   |¡}zHt j   t j j¡}t j   t ¡¡} t  | ¡| d ¡t j  tjd ¡} Wdt  |¡tj| tdXtj d| f¡dS)Nr)Ú Extension)Ú build_extcseZdZ‡‡fdd„ZdS)z#build_pynumero.._CMakeBuildc s|jdj}|jrdnd}dtjdgˆ}z¤tj ¡tj ¡t   tj  ¡¡}t   tj  ¡tj  ¡¡t t jƒ}ˆr†tˆƒt jd<tdƒ}|dkržtdƒ‚| ||g|¡|jsÎ| |d d d d d |g¡Wdtj ¡tj ¡t   |tj  ¡¡|t _XdS)NrZDebugZReleasez-DCMAKE_INSTALL_PREFIX=z-DBUILD_AMPLMP_IF_NEEDED=ONZCMAKE_BUILD_PARALLEL_LEVELÚcmakez"cmake not found in the system PATHz--buildÚ.z--targetÚinstallz--config)Ú extensionsÚ project_dirÚdebugrÚPYOMO_CONFIG_DIRÚsysÚstderrÚflushÚstdoutrÚdupÚfilenoÚdup2ÚdictÚenvironÚstrrÚIOErrorÚspawnÚdry_run)ÚselfrZ cmake_configZ cmake_argsZ old_stderrZ old_environr)ÚparallelÚ user_argsrrÚrun#s2       z'build_pynumero.._CMakeBuild.runN)Ú__name__Ú __module__Ú __qualname__r-r)r+r,rrÚ _CMakeBuild"sr1cseZdZ‡‡fdd„Z‡ZS)z&build_pynumero..CMakeExtensioncs*tˆ|ƒj|gdtj tƒ|¡|_dS)N)Úsources)ÚsuperÚ__init__rrÚjoinrr)r*Úname)ÚCMakeExtensionÚ __class__rrr4Qsz/build_pynumero..CMakeExtension.__init__)r.r/r0r4Ú __classcell__r)r7)r8rr7Psr7z' **** Building PyNumero libraries **** Zpynumero_librariesÚsrcr)r6ÚpackagesÚ ext_modulesÚcmdclassÚlib)Úonerrorz#Installed PyNumero libraries to %s )Údistutils.coreÚ setuptoolsrZdistutils.command.build_extrÚobjectrr ÚwriteÚcoreÚ DistributionrrÚabspathÚcurdirÚtempfileÚmkdtempÚchdirÚ run_commandr5rrÚshutilÚrmtreer) r,r+Ú distutilsrrr1Zpackage_configÚdistÚbasedirZtmpdirZ install_dirr)r7r+r,rÚbuild_pynumeros(  .      rQc@seZdZdd„ZdS)ÚPyNumeroBuildercCs t|dS)N)r+)rQ)r*r+rrrÚ__call__kszPyNumeroBuilder.__call__N)r.r/r0rSrrrrrRjsrRÚ__main__r)rrrLr rrHZ pyomo.commonrZpyomo.common.fileutilsrrrrQrBrRr.ÚargvrrrrÚ s M