ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ iB^c@`sddlmZddlmZddlmZddlZddlZddlZddlmZddl m Z ddl m Z dd l mZdd lmZead e fd YZdS( i(tabsolute_import(tprint_function(tdivisionN(tmapi(tClSelect(tClSelectExcept(tclprint(tutilst ClExtSelectcB`s:eZdZdZddZdZdZdZdZdZ d Z e d Z e d Z e d Zd ZeeZdZddZeeZdZeeZdZeeZdZdZdZdZedZedZedZedZRS(s)/etc/cl.selector/php.extensions.conflictss/opt/alttphpcC`s&tj||g|_t|_dS(N(Rt__init__t _conflictstFalset!_use_default_exts_from_native_php(tselftitem((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pyR s cC`s ||jkS(N(t_hidden_extensions(Rtext_name((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pyt_is_disabled_extention&scC`si|j}|j|||j|j|j|f|j|dd}|jdj|tjdS(sM Adds extensions to default list of extensions for a version tactiontenable_extentionss N( tget_all_alternatives_datat_check_alternativet_process_ini_filet DEFAULTS_PATHt_itemt_add_extensionst_write_to_filetjoinR(Rtversiontext_listt alternativestdefaults_contents((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pytenable_extensions)s  cC`sc|j}|j|||j|j|j|f|j|}|jdj||jdS(s  Replaces extensions to default list of extensions for a version. Writes/updates /etc/cl.selector/defaults.cfg file :param version: alt-php version to process :param ext_list: list extensions to set as defaults for the version s N(RRRRRt_replace_extensionsRR(RRRRR ((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pytreplace_extensions7s   cC`si|j}|j|||j|j|j|f|j|dd}|jdj||jdS(s Removes extensions from default list of extensions for a version :param version: alt-php version to process :param ext_list: comma separated extensions list to delete Rtdisable_extentionss N(RRRRRt_del_extensionsRR(RRRRR ((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pytdisable_extensionsHs  cC`sd}d}t}t}|j}|j|||j|}|j|}y|j|} Wntjk rg} nXtt d|} x| D]} t} | |kr| |krt } nt | t f| tf| dfg} t | j | s| |krj|jrj|| krj| j|tf| j|t ft }|j|q| j| | f| r|j| qqqW|r|j||ntt| dtjdS(s Returns list of extensions marking built-ins and enabled ones Also replaces mysqli->nd_mysqli in defaults.cfg for new installations according to LVEMAN-1399 :param version: php version :return Tuple: (extension_name, extension_state) extension_state: None -- built-in extension False/True -- disabled/enabled extension tmysqlit nd_mysqlicS`s |dfS(N(tNone(ti((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pyttttkeyiN(tlistR RRt_get_enabled_extensionst _get_builtinst_load_extensions_listRtUnableToGetExtensionsRtTruetsetR)t intersectionR tappendR#ttupletsortedtoperatort itemgetter(RRtext_mysqli_nametext_nd_mysqli_nametext_list_to_writetis_need_to_write_defaultsRtenabled_extensionst as_built_int as_extensionstall_extensionstexttstatustext_set((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pytlist_extensionsWs>      ' cC`syN|jjd|j|fd}t|_ttd|jdSWn0tj tj fk rt |_|j dSXdS(sB Returns list of enabled extensions for a version s%s%stmodulescS`s |jS(N(tstrip(R*((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pyR+R,t,tnativeN( t_dhtgetRR R R.Rtsplitt ConfigParsertNoSectionErrort NoOptionErrorR3R0(RRtdata((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pyR/s  # c C`s||j|}t|dks1||dkr5|Sd}g}t}|j|d} x7tt|D]#} || jdrp| }PqpqpW|r||||jddj} |j t t d| j dn|j ||j |}x*|D]"} |j|j| g| qWddjt|} |rb| ||s s modules = %sRIN(RSRTR)RURVRWR4RZR\tdepend_modules_dictR[RR8R6tcopytkeysR](RR^R_RQR`RaRbRdReRGRct include_depRfRi((RgsE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pyR"s8"       cC`s|j|}t|dks1||dkr5|Sd}|j|d}x7tt|D]#}||jdra|}PqaqaW|s|S||||jddj} tt d| j d} | j } x`t|D]R} | | kr qn| j | g} |j | | |r6qn| j| qWt}x*| D]"}|j|j|g|qWWddjt|} | ||<|j|S( s Deletes items in data list from section list @param section_info: tuple (item and version) @param section: list @param data: list of extension names to delete @return: list iiRGRRcS`s |jS(N(RH(R*((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pyR+R,RIs modules = %sN(RSRTR)RURVRWRXRHR4RRMRkt differencet_is_dependencytdiscardR[R\RR8R](RR^R_RQR`RaRbRdReRfRGRcRtrest_of_modulesttmpRg((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clextselect.pyR%s6"%!      cC`sAx:|D]2}|j||}||kr|t|s