B _@sddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z ddZ gdfddZ Gdd d e Zed kre ejd ddS) N)config) this_file_dirfind_executablecCs>|d}|jtjkr8t|tjtjBtjB||ndS)N)errnoEACCESoschmodstatS_IRWXUS_IRWXGS_IRWXO)functionpathexcinfoZexcvaluer@/tmp/pip-unpacked-wheel-d4p3hk07/pyomo/contrib/pynumero/build.pyhandleReadonlys   rc sddl}ddlm}ddlm}Gfddd|t}Gfddd|ttjdd gd gd |id }|j |}zHt j t j j}t j t} t | |d t j tjd } Wdt |tj| tdXtjd| fdS)Nr) Extension) build_extcseZdZfddZdS)z#build_pynumero.._CMakeBuildc s|jdj}|jrdnd}dtjdg}ztjtjt tj }t tj tj t t j}rtt jd<td}|dkrtd|||g||js||d d d d d |gWdtjtjt |tj |t _XdS)NrZDebugZReleasez-DCMAKE_INSTALL_PREFIX=z-DBUILD_AMPLMP_IF_NEEDED=ONZCMAKE_BUILD_PARALLEL_LEVELcmakez"cmake not found in the system PATHz--build.z--targetinstallz--config) extensions project_dirdebugrPYOMO_CONFIG_DIRsysstderrflushstdoutrdupfilenodup2dictenvironstrrIOErrorspawndry_run)selfrZ cmake_configZ cmake_argsZ old_stderrZ old_environr)parallel user_argsrrrun#s2       z'build_pynumero.._CMakeBuild.runN)__name__ __module__ __qualname__r-r)r+r,rr _CMakeBuild"sr1cseZdZfddZZS)z&build_pynumero..CMakeExtensioncs*t|j|gdtjt||_dS)N)sources)super__init__rrjoinrr)r*name)CMakeExtension __class__rrr4Qsz/build_pynumero..CMakeExtension.__init__)r.r/r0r4 __classcell__r)r7)r8rr7Psr7z' **** Building PyNumero libraries **** Zpynumero_librariessrcr)r6packages ext_modulescmdclasslib)onerrorz#Installed PyNumero libraries to %s )distutils.core setuptoolsrZdistutils.command.build_extrobjectrr writecore Distributionrrabspathcurdirtempfilemkdtempchdir run_commandr5rrshutilrmtreer) r,r+ distutilsrrr1Zpackage_configdistbasedirZtmpdirZ install_dirr)r7r+r,rbuild_pynumeros(  .      rQc@seZdZddZdS)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