§ ½@¾j?ãóŽ—ddlZddlmZddlmZmZmZddlmZddl m Z m Z ddl m Z mZddlmZdd lmZGd „d e¦«ZdS) éN)ÚFeature)ÚExternalProgramFailedÚget_passenger_package_nameÚis_litespeed_running)Ú get_ui_config)ÚCL_SELECTOR_BINÚMODULES_LOGS_DIR)ÚInstallationFailedExceptionÚPackageMissingError)Úinstalled_interpreters_listé)ÚWizardInstallercó¢—eZdZej ed¦«Zej Z d„Z d„Z e d„¦«Zd„Zd„Zd„Zd„Zed „¦«Zd S) ÚPythonInstallerz python.logcó$—g}|D]0}d| dd¦«z}| |¦«Œ1|j dd |¦«¦« |j|ŽdS#t $r}t¦«|‚d}~wwxYw)zd Install given python versions :param versions: versions of python packages z alt-pythonú.Úz/Try to install Python package with versions: %sú,N)ÚreplaceÚappendÚ app_loggerÚinfoÚjoinÚ_install_groupsrr )ÚselfÚversionsÚgroupsÚvÚ package_nameÚes úpy/clwizard/modules/python.pyÚ_install_python_versionsz(PythonInstaller._install_python_versionss¶€ð ˆØð (ð (ˆAØ'¨!¯)ª)°C¸Ñ*<Ô*<Ñ<ˆLØ �MŠM˜,Ñ 'Ô 'Ð 'Ð 'Ø Œ×ÒÐNÐPS×PXÒPXÐYaÑPbÔPbÑcÔcÐcð 7Ø ˆDÔ  &Ð )Ð )Ð )Ð )øÝ$ð 7ð 7ð 7Ý-Ñ/Ô/°QÐ 6øøøøð 7øøøsÁ% A1Á1 BÁ;B  Bcó¾—d}tj |¦«sdS | d|g¦«dS#t$r}t ¦«|‚d}~wwxYw)a In order to make python apps work on Litespeed server we need to do run extra script see docs for details: https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:enable_passenger :return: z9/usr/local/lsws/admin/misc/enable_ruby_python_selector.shNÚsh)ÚosÚpathÚisfileÚ _run_commandrr )rÚlitespeed_scriptr s r!Ú_configure_for_litespeed_serverz/PythonInstaller._configure_for_litespeed_server's{€ðWÐõŒw�~Š~Ð.Ñ/Ô/ð Ø ˆFð 7Ø × Ò ˜tÐ%5Ð6Ñ 7Ô 7Ð 7Ð 7Ð 7øÝ$ð 7ð 7ð 7Ý-Ñ/Ô/°QÐ 6øøøøð 7øøøs¥>¾ AÁAÁAcól— ddlm}n"#t$r}td¦«|‚d}~wwxYw|d¦«S)Nr)Úget_default_versionÚ lvemanagerÚpython)Úclselect.clselectctlr,Ú ImportErrorr )r,r s r!Ú_get_python_default_versionz+PythonInstaller._get_python_default_version9s\€ð ;Ø @Ð @Ð @Ð @Ð @Ð @Ð @øÝð ;ð ;ð ;Ý% lÑ3Ô3¸Ð :øøøøð ;øøøà"Ð" 8Ñ,Ô,Ð,s‚ ‰ (“#£(c ó—|j d|¦« | tdddd|dg¦«dS#t$r}t ¦«|‚d}~wwxYw)Nz,trying to set default python version as '%s'Úsetz --interpreterr.z--default-versionú--json)rrr(rrr )rÚversionr s r!Ú_set_python_default_versionz+PythonInstaller._set_python_default_versionBs‹€à Œ×ÒÐKÈWÑUÔUÐUð 7Ø × Ò å#ØØ#ØØ'ØØðñ ô ð ð ð øõ%ð 7ð 7ð 7Ý-Ñ/Ô/°QÐ 6øøøøð 7øøøs�!AÁ AÁ AÁAcóΗ| t¦«¦«oDt¦« p5t¦« di¦« d¦« S)a‡ Check that python selector is ready to work All configurations were done: - passenger package is installed We always have python27 installed, so we do not need to check if at least one interpreter is installed If the config file does not exist, we ignore the uiSettings :return: already_configured status :rtype: bool Ú uiSettingsÚ hidePythonApp)Ú_is_package_installedrrÚget)rs r!Ú_is_already_configuredz&PythonInstaller._is_already_configuredTs[€ð×)Ò)Õ*DÑ*FÔ*FÑGÔGð Ý‘”Ð Ð a¥}¡¤×':Ò':¸<ÈÑ'LÔ'L×'PÒ'PÐQ`Ñ'aÔ'aÐ#að ócóð—g}td¦«}|D]#}|jr| |j¦«Œ$| ¦«|| d¦«| ¦«dœdœS)Nr.)Úinstalled_versionsÚavailable_versionsÚdefault_version)Úalready_configuredÚoptions)r Ú installedrr5r<Ú_get_available_versionsr1)rÚinstalled_python_versionsÚinterpreters_listÚ interpreters r!Úinitial_statuszPythonInstaller.initial_statuscs–€Ø$&Ð!Ý7¸ÑAÔAÐØ,ð Fð FˆKØÔ$ð FØ)×0Ò0°Ô1DÑEÔEÐEøà"&×"=Ò"=Ñ"?Ô"?à&?Ø&*×&BÒ&BÀ8Ñ&LÔ&LØ#'×#CÒ#CÑ#EÔ#Eððð ð ð r=cóö—| dg¦«}| d¦«}|r-||vr)|j d|¦«t¦«‚| ¦«| |¦«t ¦«r| ¦« | gd¢¦«n!#t$r}t¦«|‚d}~wwxYw|r|  |¦«dSdS)NrrAzSVersion %s that specified to be set as default must be included in install_versions)zcloudlinux-configr3r4z<--data={"options": {"uiSettings": {"hidePythonApp": false}}}) r;rÚerrorr Ú_install_passengerr"rr*r(rr6)rrCÚinstall_versionsrAr s r!Úrun_installationz PythonInstaller.run_installationrs@€Ø"Ÿ;š; z°2Ñ6Ô6ÐØ!Ÿ+š+Ð&7Ñ8Ô8ˆà ð 0˜Ð6FÐFÐFØ ŒO× !Ò !ð7àñ ô ð õ .Ñ/Ô/Ð /à ×ÒÑ!Ô!Ð!Ø ×%Ò%Ð&6Ñ7Ô7Ð7å Ñ !Ô !ð 3Ø × 0Ò 0Ñ 2Ô 2Ð 2ð 7Ø × Ò ðððñ ô ð ð øõ%ð 7ð 7ð 7Ý-Ñ/Ô/°QÐ 6øøøøð 7øøøð ð >Ø × ,Ò ,¨_Ñ =Ô =Ð =Ð =Ð =ð >ð >sÂ'B?Â? Cà CÃCcó —ddhS)NrrA©)Úclss r!Úsupported_optionsz!PythonInstaller.supported_options“s€àÐ-Ð.Ð.r=N)Ú__name__Ú __module__Ú __qualname__r%r&rr ÚLOG_FILErÚPYTHON_SELECTORÚ_REQUIRED_CL_COMPONENT_SUPPORTr"r*Ú staticmethodr1r6r<rIrNÚ classmethodrRrPr=r!rrsÄ€€€€€ØŒw�|Š|Ð,¨lÑ;Ô;€HØ%,Ô%<Ð"ð 7ð 7ð 7ð7ð7ð7ð$ð-ð-ñ„\ð-ð7ð7ð7ð$  ð  ð  ð  ð  ð  ð>ð>ð>ðBð/ð/ñ„[ð/ð/ð/r=r)r%Úclcommon.constrÚclcommon.utilsrrrÚclconfig.ui_config_librÚclwizard.constantsrr Úclwizard.exceptionsr r Úclwizard.utilsr ÚbaserrrPr=r!úrbsäðð € € € à"Ð"Ð"Ð"Ð"Ð"ØbÐbÐbÐbÐbÐbÐbÐbÐbÐbØ0Ð0Ð0Ð0Ð0Ð0Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØPÐPÐPÐPÐPÐPÐPÐPØ6Ð6Ð6Ð6Ð6Ð6à!Ð!Ð!Ð!Ð!Ð!ðA/ðA/ðA/ðA/ðA/�oñA/ôA/ðA/ðA/ðA/r=