
    =	f~                    X   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z		 d dl
Z
d Zd dl d dl d dlmZmZmZmZmZ ddl d ZdZd ZdZdZdZdZd	Zd
ZdZ dZ!d	Z"d Z#dZ$i ddddddddddddddddddddddddddddddd dd!dZ%g d"Z&g d#Z'g d$Z(g d%Z)g d&Z*g d'Z+g d(Z,d)gZ-g d*Z.i dd+dd,d	d-d
d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJiZ/dZ0dZ1d	Z2d
Z3d/Z4dKZ5dLZ6dMZ7dNZ8dOZ9dPZ:dQZ;dRZ<dSZ=dTZ>dUZ?dVZ@dWZAdXZBdYZCdZZDd[ZEd\ZFd]ZGd^ZHd_ZId`ZJdaZKdbZLdcZMddZNdeZOdfZPdgZQdhZRdiZSdjZTdkZUdlZVdmZWdnZXdoZYdpZZdqZ[drZ\dsZ]dtZ^duZ_dvZ`dwZadxZbdyZcdzZdd{Zed|Zfeed}d~gfefdgfdZg	 d dlhmiZi d Zj G d dek      Zly# e$ r d dlZd ZY iw xY w# e$ r d ZjY )w xY w)    Nc                 H    t        j                  |       j                         S N)hashlibsha1	hexdigestss    */usr/share/hplip/installer/core_install.pyget_checksumr   %   s    ||A((**    c                 H    t        j                  |       j                         S r   )shanewr   r   s    r
   r   r   +   s    wwqz##%%r   )*)utilstuipasswordservicesos_utils   0.0         z+(?is)<TITLE>.*?(404|403).*?ERROR.*?</TITLE>gffffff?z+(?is)<TITLE>.*?ERROR.*?(404|403).*?</TITLE>z(?is)<TITLE>ERROR</TITLE>g333333?z(?is)<TITLE>.*?ERROR.*?</TITLE>g?z#(?is)<META .*?(404|403).*?ERROR.*?>g?z#(?is)<META .*?ERROR.*?(404|403).*?>z((?is)<TITLE>.*?File Not Found.*?</TITLE>z#(?is)<TITLE>.*?Not Found.*?</TITLE>g?z(?is)<BODY.*(404|403).*</BODY>z(?is)<H1>.*?(404|403).*?</H1>g333333?z(?is)<BODY.*not found.*</BODY>z(?is)<H1>.*?not found.*?</H1>z&(?is)<BODY.*the requested URL.*</BODY>z+(?is)<BODY.*the page you requested.*</BODY>z+(?is)<BODY.*page.{1,50}unavailable.*</BODY>z.(?is)<BODY.*request.{1,50}unavailable.*</BODY>z(?i)does not exist)(hpijszhp-alignzhp-colorcalzhp-faxsetupzhp-linefeedcalzhp-pkservicezhp-printsettingsz
hp-sendfaxzhp-timedatezhp-checkzhp-devicesettingszhp-firmwarezhp-makecopiesz	hp-pluginzhp-probezhp-setup
hp-toolboxzhp-check-pluginzhp-diagnose_pluginzhp-infoz
hp-makeuriz	hp-pqdiagzhp-query
hp-systrayz	hp-unloadzhp-cleanzhp-fabz	hp-levelszhp-printzhp-scanzhp-testpagezhp-wificonfigz
hp-upgradez
hplip-infozhp-check-upgradezhp-config_usb_printerzhp-diagnose_queueszhp-devicesetupz	hp-doctorzhp-logcapture)z
libhpmud.*z	libhpip.*zsane/libsane-hpaio.*zcups/backend/hpzcups/backend/hpfaxzcups/filter/hpcaczsane/libsane-hp2000S1*zlibjpeg*zcups/filter/hppszcups/filter/pstotiffzcups/filter/hpcupszcups/filter/hpcupsfaxzcups/filter/hplipjs)z
cupsext.soz
cupsext.laz
scanext.soz
scanext.lazhpmudext.sozhpmudext.lazpcardext.sozpcardext.la)	z/usr/share/cups/drv/hp/z/usr/local/share/ppd/HP/z/usr/local/share/cups/drv/hp/z%/usr/share/applications/hplip.desktopz)/usr/share/applications/hp-uiscan.desktopz(/etc/xdg/autostart/hplip-systray.desktopz/etc/hp/hplip.confz/usr/share/doc/hplip-*z./usr/lib/systemd/system/hplip-printer*.service)z56-hpmud.rulesz56-hpmud_sysfs.rulesz40-hplip.rulesz56-hpmud_support.rulesz56-hpmud_support_sysfs.rulesz55-hpmud.ruleszS99-2000S1.rulesz55-hpmud_sysfs.rulesz56-hpmud_add_printer.rulesz 56-hpmud_add_printer_sysfs.rulesz86-hpmud-hp_*.rulesz86-hpmud_plugin.rulesz86-hpmud_plugin_sysfs.rules)z*.pyz*.pycbasecopierdata	installerpcardui4uizfax/*.pyz	fax/*.pyczfax/pstotiff.convszfax/pstotiff.typeszfax/pstotiffz	prnt/*.pyz
prnt/*.pycz	scan/*.pyz
scan/*.pyc)zfax/plugins/zprnt/plugins/zscan/plugins/z/var/lib/hp/hplip.state)zadept-notifieradept_notifierzyum-updatesdzGeneral/unknown errorzlibusb not foundzcups-devel not foundzlibnetsnmp not found   znetsnmp-devel not found   zpython-devel not found   zpthread-devel not found   zppdev-devel not found	   zlibcups not found
   zlibm not found   zlibusb-devel not found   zsane-backends-devel not found   zlibdbus not found   zdbus-devel not found   zfax requires dbus supportf   zlibjpeg not foundg   zjpeg-devel not foundh   zlibdi not foundzlibjpeg - JPEG libraryz+libtool - Library building support servicesz"CUPS - Common Unix Printing Systemz9CUPS devel- Common Unix Printing System development filesz)CUPS image - CUPS image development filesz$gcc - GNU Project C and C++ Compilerz6make - GNU make utility to maintain groups of programsz"libpthread - POSIX threads libraryzCGhostScript - PostScript and PDF language interpreter and previewerzlibusb - USB libraryz&CUPS DDK - CUPS driver development kitzSANE - Scanning libraryz)SANE - Scanning library development filesz+xsane - Graphical scanner frontend for SANEz"scanimage - Shell scanning programzDBus - Message bus systemz+PolicyKit - Administrative policy frameworkz<libnetsnmp-devel - SNMP networking library development filesz)libcrypto - OpenSSL cryptographic libraryznetwork -wgetavahi-utilsz3Python 2.2 or greater - Python programming languagezJPython libnotify - Python bindings for the libnotify Desktop notificationsz$PyQt 4 DBus - DBus Support for PyQt4z4PyQt 4- Qt interface for Python (for Qt version 4.x)z$PyQt 5 DBus - DBus Support for PyQt5z4PyQt 5- Qt interface for Python (for Qt version 4.x)z&Python DBus - Python bindings for DBuszPython XML librariesz'Python devel - Python development fileszMPIL - Python Imaging Library (required for commandline scanning with hp-scan)z!PIP - preferred installer programz(Tesseract - Tesseract library for pythonzFTesserocr - Optical-character-recognition tesseract library for pythonz6Imutils - A series of basic image processing functionsz"Opencv - opencv library for pythonzZBAR -zbar library for pythonz(leptonica - leptonica library for pythonzpypdf2 - pdf library for pythonz"Reportlab - PDF library for PythonzCUPS-ExtensionzIO-ExtensionzHPLIP-SANE-BackendzScan-SANE-Extensionz	Python-QtzBuild Debian PackagezBuild Driverlibavahi-devz/etc/apparmor.dz$/etc/selinux/targeted/policy/policy*z/etc/apparmor.d/usr.share.hplipz"/etc/apparmor.d/abstractions/hplipz5/etc/selinux/targeted/modules/active/modules/hplip.pp)AppArmorSELinuxupdate_wrapperc                 &      fd}t        |       S )Nc                  d    t         j                  dj                  d| d|        | i |S NzTRACE: func=z	(), args=z	, kwargs=logdebug__name__argskwfs     r
   newfztrace.<locals>.newf   -    IIzz4- .d>b>!r   r8   rD   rE   s   ` r
   tracerH      s    	" dA&&r   c                       fd} j                   |_         |j                  j                   j                          j                  |_         j                  |_        |S )Nc                  d    t         j                  dj                  d| d|        | i |S r<   r=   rA   s     r
   rE   ztrace.<locals>.newf   rF   r   )r@   __dict__update__doc__
__module__rG   s   ` r
   rH   rH      sF    	" 

QZZ(yy,,r   c                      e Zd ZeedfdZdbdZdcdZdbdZd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0	 d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@ddd?ZAdbd@ZBdddAZCdbdBZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZN	 dddMZOdddNZPdddOZQdddPZRdddQZSdbdRZTdddSZUdddTZVdbdUZWdV ZXdbdWZYdX ZZdY Z[dZ Z\d[ Z]e^fd\Z_edfd]Z`efd^Zaefd_Zbefd`Zceg g g fdaZdy)eCoreInstallqt4c                    t        j                  d       || _        || _        t	        j
                  |      | _        d\  | _        | _        | _	        d| _
        t        j                  | _        t        dt        c| _        | _        | _        d| _        d| _        d| _        i | _        d| _        d | _        d | _        i | _        || _        d | _        d | _        d| _        d| _        i dt@        d	tB        d
t@        dtD        dt@        dtF        dtD        dt@        dtD        dt@        dt@        dt@        dt@        dt@        dtD        dtD        dtD        i dtD        dtF        dtD        dtD        dtF        dtD        dtF        d tD        d!t@        d"t@        d#tD        d$tF        d%tF        d&tF        d'tF        d(tF        d)tF        tD        tF        tD        tF        tF        tF        tF        tF        t@        t@        tD        tD        d*| _$        d+d,g d-fi| _%        d+| _&        dd.g fdd/g fdd0g fdd1g fdd2g fdd3g fdd4g fdd5g fdd6g fdd7g fdd8g fdd9g fd:| _'        ddddddddddddddd;| _(        i d<dd=gtR        | jT                  tV        d>d tX        fd?dd=gtZ        | j\                  tV        d>d tX        fd@ddAd=gt^        | j`                  tV        d>d tX        fdBddAd=gtb        | jd                  tf        d>dCth        fdDddAd=gtj        | jl                  tn        dEdFtp        fdGddAd=gtr        | jt                  tf        d>dFtX        fdHddAd=gtv        | jx                  tf        d>dFtX        fdIddAd=gtz        | j|                  tf        d>dJth        fdKddAd=gt~        | j                  tf        dLdMth        fdNddAd=gt        | j                  tV        d>dOtX        fdPddAd=gt        | j                  tn        dQdRtp        fdSddAgt        | j                  tV        d>dTtX        fdUddAd=gt        | j                  tn        d>d tX        fdVddWgt        | j                  tn        d>dXtX        fdYddWgt        | j                  tf        d>dXtX        fdZddWgt        | j                  tV        d>d[tX        fd\ddWgt        | j                  tn        d]d^tp        fddWgt        | j                  tn        d_d`tp        fddagt        | j                  tV        d>dbtp        fddcddgt        | j                  tn        d>detp        fddfgt        | j                  tV        dgdhtX        fddfgt        | j                  tV        d>ditX        fddfgt        | j                  tn        d>djtp        fddfgt        | j                  tn        d>dktp        fdl| __        ddAgt        | j                  tV        dmdntX        fddddcgt        | j                  tn        d>dotX        fddcgt        | j                  tn        dpdqtX        fddcgt        | j                  tn        dpdqtX        fdddgt        | j                  tn        drdstX        fdddgt        | j                  tn        drdstX        fddagt        | j                  tn        dtdutX        fddAgt        | j                  tn        d>dvtX        fddAgt        | j                  tf        dmdntX        fddWgt        | j                  tn        d>dwtX        fddagt        | j                  tn        dxdytX        fdz}ddAgt        | j                  tV        dmd{tX        fddddcgt        | j                  tn        d>dotX        fddcgt        | j                  tn        dpdqtX        fddcgt        | j                  tn        dpdqtX        fdddgt        | j                  tn        drdstX        fdddgt        | j                  tn        drdstX        fddagt        | j                  tn        dtdutX        fddAgt        | j                  tn        d>dvtX        fddAgt        | j                  tf        dmd{tX        fddWgt        | j                  tn        d>dwtX        fddagt        | j                  tn        dxdytX        fd|}d}d~lvmw} |r| j                  j                  |       n| j                  j                  |       ddAgt        | j                  tV        d>dt        fddAgt        | j                  tV        d>dt        fddWgt        | j                  tV        d>dt         fddWgt        | j                  tV        d>dt         fddgt        | j                  tV        ddtX        fd| _        t        t        t        t        t        t        t        t        t        t        t         d| _        | jN                  D ]U  }t%                | j                  D ]9  }|| j                  |   d   v s| jN                  |   d   j'                  |       ; W | j)                          i | _        | j4                  D ]"  }|| j*                  | j4                  |   d	   <   $ y )N    rU   rU       rU   Fz/usrTdistrosindexversionsdisplay_name	alt_namesdisplaynotespackage_mgrspackage_mgr_cmdpre_install_cmdpre_depend_cmdpost_depend_cmdscanjet_depend_cmdscanjet_py3_depend_cmdhpoj_remove_cmdhplip_remove_cmdsu_sudoppd_installudev_mode_fixppd_dirdrv_dirfix_ppd_symlink	code_name	supportedrelease_datepackagescommandssame_as_versionscan_supportedfax_supportedpcard_supportednetwork_supportedparallel_supportedusb_supported)packaged_versioncups_path_with_bitness
ui_toolkit	policykitlibusb01udev_sysfs_rulenative_cupspackage_availablepackage_archopen_mdns_portlibdir_pathhp_libs_remove_cmdhplipz$HP Linux Imaging and Printing System)prntr   networkgui_qt4gui_qt5faxscandocszPrint Component z1Required HPLIP base components (including hpcups)zNetwork/JetDirect I/OzGraphical User Interfaces (Qt4)zGraphical User Interfaces (Qt5)zGraphical User Interfaces (Qt)zPC Send Fax supportzScanning supportzHPLIP documentation (HTML)zAdministrative policy framework
libusb-1.0r~   )r   r   r   r   r   gui_qtr   r   r   r|   r}   r~   )r   r   r   r   r   r   r   r   r   r|   r}   r~   r   class-driverepmr   -automakelibjpegr   libtoollibtool --versioncupsz1.1	lpstat -rz
cups-develz
cups-imagegccgcc --versionmakez3.0make --version
libpthreadFUNC#get_libpthread_versiongsz7.05zgs --versionlibusbFUNC#get_libusb_versionzcups-ddksaner   zsane-config --versionz
sane-develr5   zFUNC#check_libavahi_devxsane0.9FUNC#get_xsane_versionz1.0scanimage --versionr   zdbus-daemon --versionr   r   zpkexec --versionr   z5.0.9znet-snmp-config --versionzopenssl versionzwget --versionzavahi-browse --version)	scanimagedbusr|   zlibnetsnmp-devel	libcryptor   r4   z2.2zpython --versionzpython-notify --versionz4.0FUNC#get_pyQt4_version5.0FUNC#get_pyQt5_versionz0.80.0FUNC#get_python_dbus_verFUNC#get_python_xml_versionFUNC#get_pil_version2.0FUNC#get_reportlab_version)python2Xzpython-notifyz
pyqt4-dbuspyqt4z
pyqt5-dbuspyqt5python-dbusz
python-xmlzpython-develpil	reportlabzpython3 --version)python3Xzpython3-notify2zpython3-pyqt4-dbuszpython3-pyqt4zpython3-pyqt5-dbuszpython3-pyqt5python3-dbuszpython3-xmlzpython3-develzpython3-pilzpython3-reportlabr   PY3FUNC#get_HPLIP_versionr   z2.3FUNC#get_pyQt_version)cupsexthpmudexthpaioscanextpyqt)r   r   r   r   r   r   r   r   r   r   r   r   r   )osumaskmodeui_moder   PasswordpasswordObjversion_descriptionversion_publicversion_internalbitnessr   LITTLE_ENDIANendianDISTRO_UNKNOWNDISTRO_VER_UNKNOWNdistrodistro_namedistro_versiondistro_version_supportedinstall_locationhplip_presenthave_dependenciesr   rj   rk   rW   r{   enabledisablereload_dbussecurity_package	TYPE_LISTTYPE_INTTYPE_STRING	TYPE_BOOLFIELD_TYPES
componentsselected_componentoptionsselected_optionsEPM_STR	check_epmDEPENDENCY_RUN_AND_COMPILE_TIME
GENERALDEPAUTOMAKE_STRcheck_automakeJPEG_STRcheck_libjpegLIBTOOL_STRcheck_libtoolDEPENDENCY_COMPILE_TIME
COMPILEDEPCUPS_STR
check_cupsDEPENDENCY_RUN_TIMEEXTERNALDEPCUPS_DEV_STRcheck_cups_develCUPS_IMG_STRcheck_cups_imageGCC_STR	check_gccMAKE_STR
check_make
THREAD_STRcheck_libpthreadGS_STRcheck_gsUSB_STRcheck_libusbCUPS_DDK_STRcheck_cupsddkSANE_STR
check_saneSANE_DEV_STRcheck_sane_devel	LIB_AVAHIcheck_libavahi_dev	XSANE_STRcheck_xsaneSCANIMAGE_STRcheck_scanimageDBUS_STR
check_dbus
POLKIT_STRcheck_policykitSNMP_DEV_STRcheck_libnetsnmp
CRYPTO_STRcheck_libcryptoNETWORK_STR
check_wget	AVAHI_STRcheck_avahi_utilsdependencies
PYTHON_STRcheck_python	PYNTF_STRcheck_pynotifyQT4DBUS_STRcheck_pyqt4_dbusQT4_STRcheck_pyqt4QT5DBUS_STRcheck_pyqt5_dbusQT5_STRcheck_pyqt5
PYDBUS_STRcheck_python_dbus	PYXML_STRcheck_python_xml
PY_DEV_STRcheck_python_develPIL_STR	check_pilREPORTLAB_STRcheck_reportlabbase.sixextr   rL   CUPSEXT_STRcheck_cupsextPYEXTHPMUDEXT_STRcheck_hpmudext	HPAIO_STRcheck_hpaioSCANCONFSCANEXT_STRcheck_scanextQT_STR
check_pyqthplip_dependenciesget_python_dbus_verget_pyQt5_versionget_pyQt4_versionget_pyQt_versionget_reportlab_versionget_xsane_versionget_pil_versionget_libpthread_versionget_python_xml_versionget_HPLIP_versionget_libusb_versionversion_funcupdate_spinnerappendload_distrosdistros_index)	selfr   r   r{   python2_deppython3_depr   optds	            r
   __init__zCoreInstall.__init__   s   
	#,,W5OYL $"5t7L))=KRQc:T%t':(-% &"!#$  "/
y/
X/
 	/
 K	/

 /
 y/
 [/
 I/
 {/
 y/
 i/
 y/
 !)/
 %i/
 {/
  !/
" {#/
$ ;%/
& Y'/
( {)/
* {+/
, y-/
. //
0 1/
2 K3/
4 	5/
6 	7/
8 {9/
: i;/
< Y=/
> y?/
@  A/
B !)C/
D YE/
F !,&/%"!($!*%'&"-]/
h < ?a b

 #* 126 SUWX6;@"E@"E>C4b9 2B7 <bA!BBGb1 %'8"=
& !    $ !!
*.
'4>>Kjloqu  xB  !C.
 xt?R?RTsuxz~  AK  !L.
 (8(DDVDVXwy|  C  EO  !P	.

 (8+tGYGY[rtw  zM  OY  !Z.
 '74??Tginp{  ~I   J.
 (8,H]H]_vx{  ~I  KU  !V.
 (8,H]H]_vx{  ~I  KU  !V.
 '7$..Riknp  BL   M.
 '74??Tkmr  uE  GQ   R.
 '7TEZEZ\{  ~A  C`  bl   m.
 (8&$--Qdfln|  J  !K.
 '4;L;LNmor  uN  PZ  ![.
" %&&)9<I[I[]pruw{  ~H  "I#.
* x4??L_adf}  @J   K+.
, xt?T?TVmor  uL  NX   Y-.
. xD<S<SUtvy  |U  Wa   b/.
< )T=M=MObdi  lD  FQ  !R=.
> "'-AUAUWjlq  tI  KV  !W "&4??Lkmp  sJ  LW  !X
 "'I(>
DL`L`buwz  }O  Q\  !] "&\4CXCXZy  |C  E`  bl  !m!%ZAUAUWvx{  ~O  Q[  !\$yk;Qdfik{  ~I  J#(9+y$BXBXZmor  uM  OZ  #[[.
b "&*d>O>OQprw  zL  NX  !Y !&	9'=y$J]J]_rtw  zS  U_   ` $	{KAVAVXkmr  uM  OY   Z!%Wd>N>NPcej  mE  GQ  !R %[$BWBWYlns  vN  PZ   [!%Wd>N>NPcej  mE  GQ  !R!%T=S=SUhjr  uO  Q[  !\#vh	4;P;PRegj  mJ  LV  W $xT=T=TVmot  wI  KU   V!&'4>>K^`ce{  ~H  !I "'@T@TVikp  sO  Q[  !\+
6 $(6(J@Q@QSrty  |O  Q[  #\ #()Y)?DL_L_atvy  |U  Wa  "b#(9+{DDYDY[npu  xP  R\  #]#'9+w@P@PRegl  oG  IS  #T#(9+{DDYDY[npu  xP  R\  #]#'9+w@P@PRegl  oG  IS  #T#'5':t?U?UWjlt  wQ  S]  #^!%)T=R=RTgil  oL  NX  !Y"&&:t?V?VXoqv  yL  NX  "Y#(6(GT^^M`beg}  @J  #K $)5'=$BVBVXkmr  uQ  S]  #^)
0 	$$$[1$$[1 !%xd>P>PRqsv  yQ  SX   Y $xt?R?RTsux  {S  UZ   [ $xD<L<LNmor  uM  OW   X"&&;@R@RTsux  {S  U]  "^ $z64??Lkmr  uL  NX   Y#
 )<&7&7%5*?&7$3+A+A&7'9
 << 	3C&& 3$++A.q11LL%a(//23	3 	 	=A;<Dt||Aw78	=r   Nc                 	   | |d       t                g | _        | j                  D ]]  }t                | j                  |   j                  dg       D ]/  }|s|| j                  vs| j                  j	                  |       1 _ | j                         \  | _        | _        | _        t        j                  d| j                  d| j                  d| j                         | j                  D ]  }t                d| j                  |<    | j                          | j                  | j                     | _        | j#                          | |d| j                  z         | j%                  |       | j                  D ]S  }t                t        j                  d|d	| j                  |          |8 |d
|d	| j                  |   d       U t'        j(                  | j                        \  }}|rt        j                  d|d|d       t'        j*                         | _        t        j                  d| j,                  z         t                t'        j.                         | _        t        j                  d| j0                  z         t                | j3                  dd      | _        t        j                  d| j                  d| j                   d| j                  | j                      d   d| j6                  d| j4                  
       t                | j9                         | _        t        j                  d| j:                  z         t'        j<                  d| j>                        \  }}|jA                         | _!        t        j                  d| jB                  z         | j                   dk(  rd| _"        t        j                  d| jD                  z         t'        j<                  d| j>                        \  }| _#        | jF                  jI                  dd      | _#        t        j                  | jF                         tJ        jM                  d d!tO        jP                  d"tO        jR                                      tJ        jM                  d d#| j                         |	 |d$       y y )%NzInit...
r^   zHPLIP Description=z Public version=z Internal version = FzDistro: %s
have  = zResult: 
zRunning package manager: z ()zBitness = %dzEndian = %drn   z	Distro = z Distro Name = z Display Name= rZ   z Version = z Supported = zHPLIP (prev install) = %szcups-config --versionzCUPS version = %subuntuTz&DBUS configuration reload possible? %szuname -arU   installation	date_timez%x %H:%M:%SversionDone)*rK  r^   rW   getrL  get_hplip_versionr   r   r   r>   r?   r  r   
get_distrorN  r   r   distro_changedcheck_dependenciesr   check_pkg_mgr
getBitnessr   	getEndianr   get_distro_ver_datar   r   check_hplipr   runr   stripcups_verr   sys_uname_inforeplace	user_confsettimestrftime	localtime)rO  callbackrS  apidcmdlinestatusoutputs           r
   initzCoreInstall.init  s   [!  	0A\\!_((< 0$"3"33%%,,Q/0	0 PTOeOeOgL $"5t7L		++T-@-@$BWBWY 	Z "" 	.A(-D""1%	. 	--dkk:^dkk12)"" 	OAII4+A+A!+DEF#43I3I!3LMN	O **4+<+<=WIIGSIJ'')		.4<</0oo'		-$++-.(,(@(@) % 			;; 0 0$,,t?O?O2PQ_2`&&(E(EG 	H 	!--/		-0B0BBC#:D<L<LM		%56x'#D		:T=M=MMN&+ii
D<L<L&M##"1199$C		$%%& 	nkmmM4>>3CD	Fni1D1DEV  r   c                    || _         || _        	 | j                  |   d   | _        || _	        | j                  D ]  }d| j                  |<    | j                  dd      dk(  | _        | j                  d      | _        | j                  d      | _        d| _        y # t        $ r0 t
        j                  d|z         t        j                  d       Y w xY w)	NrX   zInvalid distro name: %sr   Trh   ppdrj   rk   )r   r   rW   r   KeyErrorr>   errorsysexitr   r  r   rg  enable_ppdsrj   rk   r   )rO  r   r]  r   rS  s        r
   init_for_docszCoreInstall.init_for_docsN  s    &%	,,{3G<DK
 "" 	-A(,D""1%	-  335"%*+//	://	:(,%  	II/+=>HHQK	s   B 6CCc                 D   t                | j                  D ]}  }t                t        j	                  d|z         | |d|z          | j                  |   d          | j
                  |<   t        j	                  d|d| j
                  |           t                y )Nz Checking for dependency '%s'...
zChecking: %s
r   rV  rW  )update_ld_outputr  rK  r>   r?   r   cleanup_spinner)rO  rs  rS  s      r
   rc  zCoreInstall.check_dependenciesd  s    "" 		GAII9A=>#)A-.(?(9(9!(<Q(?(AD""1%II4+A+A!+DEF		G 	r   c                     | j                   r| j                   S | j                  t        k(  rdd l}|j                  d      S y)Nr   zEnter password: rU   )r   r   INTERACTIVE_MODEgetpass)rO  r  s     r
   password_funczCoreInstall.password_funct  s6    ==== \\--??#566r   c                 L   t         j                  d       d\  }}d}dd l}|j                  d      }|d   }|d   }d}|r|j	                         j                         }t         j                  d|z         |j                  d	      d
kD  s|j                  d      d
kD  rd}t         j                  d|z         |dk(  r|d   dk(  r|d   dk(  rd}n|dk(  r|d   dk(  r
|d   dk(  rd}d|v r|dd }d}d|j	                         v r|j                  d      }|d   dz   |d   z   }d}| j                  D ]  }|j                  |      d
kD  r| j                  |   d   | _        d}nV| j                  |   j                  dd      D ]4  }	|	s|j                  |	      d
kD  s| j                  |   d   | _        d} n |s n || _
        || _        n(t         j                  d       t        dc| _        | _
        t         j                  d| j                  | j                  fz         y )NzDetermining distro...)rU   r   Fr   )full_distribution_namer   TzDistro name=%sredhatenterpriseredhatrhelzDistro version=%s5.r   6z6.0MXr   r&   mxlinuxmanjarorX   r[   rU   z%Failed to get the distro information.r   zdistro=%d, distro_version=%s)r>   r?   r   linux_distributionlowerrj  findsplitrW   r_  r   r   warnr   )
rO  nameverfoundr   ldr]  found_in_listrS  xs
             r
   ra  zCoreInstall.get_distro}  s'   		)*	c&&e&D!ue ::<%%'DII&-.yy+,r1TYYx5H25MII)C/0v~#a&C-CFcMCFcMc!fmt|1Qi DJJL())C.aj#ogaj0!M\\ 99Q<"$"&,,q/'":DK$(M!\\!_00bA "1!2*.,,q/'*BDK,0M!	"
 ! #&D#DHH<=/=u,DK,		0;; 3 345 	6r   c                 :   | j                  dd      }|dvrt        j                  d|z         |dk(  | _        t        j	                  d| j                  z         | j                  d      | _        | j                  d      | _        | j                  s.| j                  s"t        j                  d| j                  z         | j                  d	d
      | _        | j                  dd      | j                  d<   | j                  dd      | j                  d<   | j                  dd      | j                  d<   | j                  dd
      | j                  d<   | j                  dd
      | j                  d<   | j                  dd
      | j                  d<   | j                  dd
      | _	        | j                  dd      j                         }|dk(  r,t        j	                  d       d| _        d| j                  d<   n0|dk(  r+t        j	                  d       d| _        d| j                  d<   | j                  sd| j                  v r,t        j	                  d       d| _        d| j                  d<   n9d| j                  v r+t        j	                  d       d| _        d| j                  d<   | j                  gd| j                  v r%t        j	                  d       d
| j                  d<   y d| j                  v r%t        j	                  d        d
| j                  d<   y y y )!Nrh   r{  )r{  drvzInvalid ppd_install value: %sz"Enable PPD install: %s (False=drv)rj   rk   zInvalid drv_dir value: %srn   Frt   Tr   rv   r   rs   r   r|   r}   r~   r   r{   rQ   zDefault UI toolkit: Qt4r   qt5zDefault UI toolkit: Qt5r   zUser selected UI toolkit: Qt4zUser selected UI toolkit: Qt5zUser deselected UI toolkit: Qt4zUser deselected UI toolkit: Qt5)rg  r>   warningr  r?   rj   rk   r   r   r   r  r{   r   r   )rO  rh   r{   s      r
   rb  zCoreInstall.distro_changed  s   ..}eDn,KK7+EF'50		69I9IIJ//	://	:KK3dllBC(,(@(@) %'+'?'?T(#e$+/+C+C,'i((,(@(@d)$f%-1-E-E. k* 22:uE 		373K3Ku4&/033M5I --lEBHHJ
II/0#DO/3D!!),5 II/0#DO/3D!!), ;;"#		9:"'37%%i0$++%		9:"'37%%i0<<#$		;<38%%i0$,,&		;<38%%i0 '	 $r   c                    | j                   j                  |t              }|t        k(  rt	        j
                  |      S |t        k(  r)t        d      t        |      k(  r|j                         S |S |t        k(  r	 t        |      S |t        k(  r"|j                  d      D cg c]  }|s|	 c}S y # t        $ r Y yw xY wc c}w )NrU   r   ,)r   r_  r   r   r   to_booltyperj  r   int
ValueErrorr   r  )rO  keyr    
field_typer  s        r
   __fixup_datazCoreInstall.__fixup_data  s    %%))#{;
 "==&&;&Bx4:%zz|#8#4y  9$#zz#4!!A44 %   5s   ;
B2 "C*C2	B>=B>c                    d}t        |      }| j                  d|j                  dd            }t        j	                  |       |D ]  }t                i }|j                  |      st        j	                  d|z         :|j                  |      D ]'  }| j                  ||j                  ||            ||<   ) || j                  |<   | j                  d|j                  |d            }i | j                  |   d<   || j                  |   d<   |D ]h  }d\  }	}
i }|d|}|j                  |      st        j                  d|d|d	       @d
|j                  |      v rd}	| j                  d|j                  |d            }
|j                  |      D ]'  }| j                  ||j                  ||            ||<   ) || j                  |   d   |<   i | j                  |   d   |   d<   |	r| j                  D ]x  }i }|d|d|}|j                  |      s|	s#|j                  |      D ]'  }| j                  ||j                  ||            ||<   ) || j                  |   d   |   d   |<   z k | j                  |   d   }|D ]C  }|d|}d
|j                  |      v s| j                  d
|j                  |d
            }	 dd l}|j                  | j                  |   d   |         }||d
<   || j                  |   d   |<   |j                  |      D ]'  }| j                  ||j                  ||            ||<   ) i }| j                  D ]t  }|d|d|}|j                  |      s|j                  |      D ]'  }| j                  ||j                  ||            ||<   ) || j                  |   d   |   d   |<   v F  y # t        $ r  t        j	                  d|d|d       Y sw xY w)Nz&/usr/share/hplip/installer/distros.datrW   z+Missing distro section in distros.dat: [%s]rY   versions_list)FT:z)Missing version section in distros.dat: []rr   Trn   dependency_cmdsr   z?Missing 'same_as_version=' version in distros.dat for section [z].)
ConfigBase_CoreInstall__fixup_datar_  r>   r?   rK  has_sectionkeysrW   r}  r  copydeepcopyr|  )rO  distros_dat_filedistros_datdistros_listr   rS  r  rY   r  rr   rn   vver_sectiondepdddep_sectionr  vvs                     r
   rM  zCoreInstall.load_distros  s   C !12(({y)<>		," ^	!FA**62		AFJL"''/ N**30LM#N $%DLL ((KOOFJ?AH/1DLL ,4<DLL 1 ):-8*)/5"..{;IIMSUXY[$(8(8(EE&*O --k!JL	 '++K8 @C!..[__[#>@AcF@ 9:V$Z05KMV$Z056GH",, :CB06S"AK&22;? 
  +//< D"&"3"3c!B#D3D
 8: LL(4.0035:5):V ||F+J7H  !)/5$(8(8(EE))*;[__#%6>8 9A!#!]]4<<+?
+KA+NO01,-@BV,Z8=#.#3#3K#@ HC&*&7&7 #[__[#%F'HBsGH  #'#4#4 
BC8>S*IK#.#:#:;#G ('2'7'7'D L*.*;*;$'c)J+L3L
 @B !LL0< #%%688;=
B# !}^	!v $ !		hnpqrt !s   DO%PPc                      y r    rO  s    r
   pre_installzCoreInstall.pre_installs      r   c                      y r   r  r  s    r
   
pre_dependzCoreInstall.pre_dependv  r  r   c                 p    t         j                  }|d d \  }}t        j                  d||fz         |dk\  S )Nr   Python ver=%d.%dr~  version_infor>   r?   rO  py_verpy_major_verpy_minor_vers       r
   r  zCoreInstall.check_pythony  s?    !!%+BQZ"l		$l'CCDq  r   c                 6    t        dd      xr t        dd      S )Nr   r   zg++ --version
check_toolr  s    r
   r   zCoreInstall.check_gcc  s    /1-P*_a2PPr   c                     t        dd      S )Nr   g      @r  r  s    r
   r   zCoreInstall.check_make  s    *C00r   c                     | j                  dd      }|dk(  r2t        d      sy| j                  dk7  rt        t	        ddd            S yt        d	      sy| j                  dk7  rt        t	        d
dd            S y)Nr}   FTr   r  zusb.h/usr/includeusb_initr   zlibusb.hz/usr/include/libusb-1.0libusb_init)rg  	check_libr   lenlocate_file_contains)rO  Is_libusb01_enableds     r
   r  zCoreInstall.check_libusb  s    "66z5I$&X&6)/TUU\*6)/
<UWdeffr   c                     t        d      S )Nzepm --versionr  r  s    r
   r   zCoreInstall.check_epm  s    /**r   c                     t        d      S )Nzautomake --versionr  r  s    r
   r   zCoreInstall.check_automake  s    .//r   c                 2    t        d      xr t        d      S )Nr   z	jpeglib.hr  
check_filer  s    r
   r   zCoreInstall.check_libjpeg  s    #?
;(??r   c                 2    t        d      xr t        d      S )Nr   zcrypto.hr  r  s    r
   r  zCoreInstall.check_libcrypto  s    %@*Z*@@r   c                 2    t        d      xr t        d      S )Nr   z	pthread.hr  r  s    r
   r   zCoreInstall.check_libpthread  s    &B:k+BBr   c                 2    t        d      xr t        d      S )N
libnetsnmpznet-snmp-config.hr  r  s    r
   r  zCoreInstall.check_libnetsnmp  s    &J:6I+JJr   c                    	 t         j                  d       dd l}t        |j                        }t         j                  d|z         |dk\  rt         j                  d       yy# t
        $ r t         j                  d       Y yw xY w)	NzTrying to import 'reportlab'...r   zVersion: %.1sr   zSuccess.TFzFailed.)r>   r?   r   strVersionImportError)rO  r   r  s      r
   r0  zCoreInstall.check_reportlab  so    	II78i''(CIIo+,e|		*% 	IIi 	s   A A$ $BBc                 ~    t         j                  }|d d \  }}t        j                  d||fz         |dk\  xr |dk\  S )Nr   r  r   r  r  s       r
   check_python23zCoreInstall.check_python23  sI    !!%+BQZ"l		$l'CCDq 6\Q%66r   c                 ,    	 dd l }y# t        $ r Y yw xY wNr   TF)xml.parsers.expatr  )rO  xmls     r
   r*  zCoreInstall.check_python_xml  s#    	$   		    	c                     t        d      S )Nlibsane)r  r  s    r
   r  zCoreInstall.check_sane  s    ##r   c                 .    t        t        ddd            S )Nzsane.hr  zextern SANE_Status sane_init)r  r  r  s    r
   r  zCoreInstall.check_sane_devel  s    '.B`abbr   c                     t        j                  d      rt        t               d      S t	        t        j                  d            S )NDISPLAYr   r   )r   getenvcheck_versionrD  boolr   whichr  s    r
   r  zCoreInstall.check_xsane  s5    99Y !2!4e<<
 G,--r   c                     t        dd      S )Nr   g      ?r  r  s    r
   r  zCoreInstall.check_scanimage  s    /55r   c                     t        dd      S )Nzgs -vg333333@r  r  s    r
   r   zCoreInstall.check_gs  s    '4((r   c                 L    | j                   dk(  r	 dd l}yy# t        $ r Y yw xY w)NrQ   r   TF)r{   PyQt4r  )rO  r  s     r
   r"  zCoreInstall.check_pyqt4  2    ??e#       	##c                 L    | j                   dk(  r	 dd l}yy# t        $ r Y yw xY w)Nr  r   TF)r{   PyQt5r  )rO  r   s     r
   r&  zCoreInstall.check_pyqt5  r  r  c                 P    | j                   dk(  r	 ddlm} yy# t        $ r Y yw xY w)NrQ   r   DBusQtMainLoopTF)r{   dbus.mainloop.qtr  r  rO  r  s     r
   r   zCoreInstall.check_pyqt4_dbus  s2    ??e#;       	%%c                 P    | j                   dk(  r	 ddlm} yy# t        $ r Y yw xY w)Nr  r   r  TF)r{   dbus.mainloop.pyqt5r  r  r  s     r
   r$  zCoreInstall.check_pyqt5_dbus  s2    ??e#>   r  c                 L    | j                   dk(  r	 dd l}yy# t        $ r Y yw xY w)Nqt3r   TF)r{   qtr  )rO  r  s     r
   r=  zCoreInstall.check_pyqt  s4    ??e#    r  c                     t        j                   dt        j                  d   z        }d}|D ]  }t        d|      sd} |S  |S )Nz/usr/include/python%d*r   FzPython.h)dirT)globr~  r  r  )rO  dir_listFoundps       r
   r,  zCoreInstall.check_python_devel  sS    9958H8H8KKL 	A*!,	
 r   c                 n    	 dd l }y# t        t        f$ r 	 dd l}Y y# t        t        f$ r Y Y yw xY ww xY w)Nr   FT)notify2r  RuntimeErrorpynotify)rO  r  r  s      r
   r  zCoreInstall.check_pynotify"  sK    	  \* 	   . 	s    40404c                    t         j                  d       	 dd l}	 |j                  }t         j                  ddj	                  |j                  D cg c]  }t        |       c}      z         |dk\  S c c}w # t        $ rl 	 |j                  }t         j                  d|j                  z         t         j                  d       Y y# t        $ r t         j                  d       Y Y yw xY ww xY w# t        $ r Y yw xY w)	Nz%Checking for python-dbus (>= 0.80)...r   zVersion: %sr  )r   P   r   z#HPLIP requires dbus version > 0.80.Fz4Unknown version. HPLIP requires dbus version > 0.80.)	r>   r?   r   r]  joinr  AttributeError__version__r  )rO  r   r  r  s       r
   r(  zCoreInstall.check_python_dbus,  s    		9:	!ll		-#((%)\\2SV2+4 4 5j(( 3 " 
!	!**CIImd.>.>>?IICD % !IINP !
!  		s_   C2 5A: A5#A: 5A: :	C/AC	C2 	C+'C/(C2 *C++C//C2 2	C>=C>c                 ,    	 dd l }y# t        $ r Y yw xY wr  )ctypesr  )rO  r  s     r
   check_python_ctypeszCoreInstall.check_python_ctypesE  s    	 		r  c                     t         j                  d       | j                  j                         dk(  r| j                  dk\  ryt        dg      xr t        t        ddd            S )	NzBChecking for dbus running and header files present (dbus-devel)...fedora30Tzdbus-daemonzdbus-message.hr  dbus_message_new_signal)r>   r?   r   r  r   check_psr  r  r  s    r
   r  zCoreInstall.check_dbusL  sg    		VW""$h.T5H5H$5N]O, U()9)79RT UUr   c                 X    t        d      xr t        t        j                  d            S )Nzcups.hlpr)r  r  r   r  r  s    r
   r   zCoreInstall.check_cups_develU  s     (#@U[[-?(@@r   c                     t        j                  d| j                        \  }}|dkD  sd|v rt        j	                  d|z         yt        j	                  d|z         y)Nr   r   znot runningzCUPS is not running. %sFzCUPS is running. %s T)r   ri  r   r>   r?   )rO  rw  rx  s      r
   r   zCoreInstall.check_cupsX  sT    ;0@0@AA:&0II/&89II,v56r   c                     t        dd      S )Nzraster.hz/usr/include/cups)r  r  s    r
   r   zCoreInstall.check_cups_imagea  s    *&9::r   c                 D    t         j                  d       t        dd      S )NzChecking for HPLIP...z
hplip.confz/etc/hp)r>   r?   locate_filesr  s    r
   rh  zCoreInstall.check_hplipd  s    		)*L)44r   c                 B    t         j                  d       t        d      S )NzChecking for libtool...r   )r>   r?   r  r  s    r
   r   zCoreInstall.check_libtoolh  s    		+,-..r   c                 Z    t         j                  d       	 ddlm} y# t        $ r Y yw xY w)NzChecking for PIL...r   )ImageTF)r>   r?   PILr+  r  )rO  r+  s     r
   r.  zCoreInstall.check_pil  s,    		'(	! 		s    	**c                 D    t         j                  d       t        dd      S )NzChecking for cups-ddk...z
media.defsz/usr/share/cups/ppdc/r>   r?   r  r  s    r
   r  zCoreInstall.check_cupsddk  s    		,-,(?@@r   c                 D    t         j                  d       t        dd      S )NzChecking for libavahi-devzclient.hz/usr/include/avahi-clientr.  r  s    r
   r	  zCoreInstall.check_libavahi_dev  s    		-.*&ABBr   c                     t         j                  d       t        dd      rt        dd      ryt        dd      rt        d	d
      ryt        dd      ryt        dd      rt        dd      rt        dd      ryy)NzChecking for PolicyKit...zPolicyKit.confz/etc/PolicyKitz0org.gnome.PolicyKit.AuthorizationManager.servicez/usr/share/dbus-1/servicesTz50-localauthority.confz#/etc/polkit-1/localauthority.conf.dz"org.freedesktop.PolicyKit1.servicez!/usr/share/dbus-1/system-serviceszorg.freedesktop.PolicyKit1.confz/etc/dbus-1/system.dpolkitdz/usr/lib/polkit-1zpolkit-agent-helper-1zpolkit.confz/usr/lib/sysusers.dFr.  r  s    r
   r  zCoreInstall.check_policykit  s    		-.&(89jI{  ~Z  ?[02WX]g  iM  Or  ^s9;QR	#67JG^`s<t  zD  ER  Ti  zjr   c                     t         j                  d       	 t        j                  d       y# t        $ r t         j                  d       Y yw xY w)Nz$Checking 'cupsext' CUPS extension...r   TzeNOT FOUND OR FAILED TO LOAD! Please reinstall HPLIP and check for the proper installation of cupsext.Fr>   r?   r   
import_extr  r}  r  s    r
   r3  zCoreInstall.check_cupsext  sK    		89	Y'   	IIwy	   - AAc                     t         j                  d       	 t        j                  d       y# t        $ r t         j                  d       Y yw xY w)Nz$Checking 'hpmudext' I/O extension...r   TzfNOT FOUND OR FAILED TO LOAD! Please reinstall HPLIP and check for the proper installation of hpmudext.Fr3  r  s    r
   r6  zCoreInstall.check_hpmudext  sK    		89	Z(   	IIxz	r5  c                     t         j                  d       	 t        j                  d       y# t        $ r t         j                  d       Y yw xY w)Nz*Checking 'pcardext' Photocard extension...pcardextTzfNOT FOUND OR FAILED TO LOAD! Please reinstall HPLIP and check for the proper installation of pcardext.Fr3  r  s    r
   check_pcardextzCoreInstall.check_pcardext  sK    		>?	Z(   	IIxz	r5  c                 \   d}dD ]f  }t         j                  d|z         	 t        |d      }|D ]5  }t        j                  dd|      }t        j
                  d|      }|s3d} n 	 |sf n |st         j                  d
       |S # t        $ r t         j                  d	|z         Y Bw xY w)NF)/etc/sane.d/dll.confz/etc/sane.d/dll.d/hpaioz/etc/sane.d/dll.d/hplipz'Checking for hpaio' in '%s'...r\srU   r   Tz'%s' not found.z8'hpaio' not found in SANE conf files. Is SANE installed?)	r>   r?   openresubmatchIOErrorinfor}  )rO  r  pathrD   linelineNoSpacehpaiomatcheds          r
   r8  zCoreInstall.check_hpaio  s    b 	DII7$>?
sO  D"$&&D"9K#%88G[#AL# $ 	  IIPQ  3*T123s   B!B+*B+c                 2   d}t         j                  dd      }t        j                  d      }d }|j	                  |      |j	                  |      j                  d      dz   }t        j                  j                  |dz         rpt        j                  d       	 t        d	d
      }|D ]5  }t        j                  dd|      }t        j                  d|      }	|	s3d} n |j                          |st        j(                  d	      }| j                   j#                         dz  }
t        j                  d|
z         t%        j&                  |
| j                          	 t        d	d      }|j+                  d       |j                          |j,                  dz  }d|z  }
| j                   j#                         |
z  }
t        j                  d|
z         t%        j&                  |
| j                          |S # t        $ rn t        j                  d       | j                   j#                         dz  }
t        j                  d|
z         t%        j&                  |
| j                          Y |w xY w# t        $ r t        j                  d       Y w xY w)NFdirshome(\S.*)share\/hplipr   lib/zsane/libsane-hpaio.so.1z-'Updating hpaio' in '/etc/sane.d/dll.conf'...r;  r<  r=  rU   r   Tz8'/etc/sane.d/dll.conf' not found. Creating dll.conf fileztouch /etc/sane.d/dll.confzcmd=%szchmod 777 /etc/sane.d/dll.confza+i  zchmod %o /etc/sane.d/dll.conf)sys_confr_  r?  compilerA  groupr   rD  existsr>   r?   r>  r@  closerB  r}  r   
getAuthCmdr   ri  statwritest_mode)rO  r  home_dirpat
usrbin_dir
usrlib_dirrD   rE  rF  rG  cmdstactv_permissionss                r
   update_hpaiozCoreInstall.update_hpaio  s-   <</jj23
99X*8,2215>Jww~~j+DDE		IJ3S9A !" "&(ffUB&=')xx'E'$(E!" GGI!78B**557:ZZCIIhn-IIc4#3#34" !7>
 (	')zzE'9$9<LLC**557#=CIIhn-IIc4#3#34C  5IIRT**557:VVCIIhn-IIc4#3#345, # X		VXXs%   G: "I4 :A3I10I14JJc                     t         j                  d       d}	 t        j                  d       d}|S # t        $ r t         j                  d       Y |S w xY w)Nz-Checking 'scanext' SANE scanning extension...Fr   TzeNOT FOUND OR FAILED TO LOAD! Please reinstall HPLIP and check for the proper installation of scanext.r3  )rO  r  s     r
   r;  zCoreInstall.check_scanext#  s]    		AB	Y'
 E  	yIIwy 	ys   2 AAc                     ddg}t         j                         D ]Z  }t        j                  t         |   d         s#||d<   t        t	        t        j                  t         |   d               |d<   |c S  |S )NrU   Fr   r   )SEC_DICTr  r  allmap)rO  r  r  s      r
   security_package_statusz#CoreInstall.security_package_status/  sl    U==? 	Cyy#q)*as499hsmA.>?@a	 r   c                     t        j                         }|dz   }d|z   }| j                  j                         |z  }t        j                  d       t        j                  || j                        \  }}y )Nz/selinux/hplip.ppzsemodule -n -i zInstalling SELinux profile...)r   getcwdr   rR  r>   rC  r   ri  )rO  src_dirprofile_locationprofile_cmdrZ  rw  rx  s          r
   selinux_installzCoreInstall.selinux_install;  sd    ))+"%88'*::))+k9013(8(89r   c                    d\  | _         | _        | _        | j                  t        k(  rt        j                  dt
        j                        }	 t        dd      }|D ]y  }|j                  d      s|j                  |      }|j                  d      | _         |j                  d      | _        |j                  d      | _        |j                  d	      } n |j                          d
k7  rQt        j                  d       n;	 dt         j#                  ddd      t$        j&                  	 c| _         | _        | _        | j                   | j                  | j                  fS # t        $ r= dt         j#                  ddd      t$        j&                  	 c| _         | _        | _        Y hw xY w# t(        $ r d\  | _         | _        | _        Y w xY w)NrT   z:AC_INIT\(\[(.*?)\], *\[(.*?)\], *\[(.*?)\], *\[(.*?)\] *\)z./configure.inr<  AC_INITr   r   r   r   r   zInvalid archive!rU   	configurezinternal-tag0.0.0)r   r   r   r   MODE_INSTALLERr?  rN  
IGNORECASEr>  
startswithsearchrO  rQ  r>   r}  rB  rM  r_  propinstalled_versionr|  )rO  ac_init_pat	config_inc	match_objr  s         r
   r`  zCoreInstall.get_hplip_versionC  s   OYL $"5t7L99&**QSUS`S`bK2 !137	 # A||I.$/$6$6q$9	3<??13E0.7ooa.@+090B-(q1 !7?II01b[.%,./3/E/EF U($*=t?T '')<)<d>S>SSS7  F[.%,./3/E/EF U($*=t?TF0  bWaT($*=t?Tbs%   E! :F* !AF'&F'*G
Gc                    d}i }t         r!| j                  d   xr | j                  d   }n | j                  d   xr | j                  d   }| j                  d   |d<   |rd|d<   d|d	<   d|d
<   d|d<   d|d<   d|d<   nc| j                  d   |d<   | j                  d   xr ||d	<   ||d
<   | j                  d   |d<   | j                  d   |d<   | j                  d   |d<   | j                  d   |d<   | j                  d   |d<   | j                  d   |d<   | j                  d   |d<   | j                  r6d|d<   d|d<   d|d<   d|d<   | j                  rd|d<   d|d<   n@d|d<   d|d<   n5d|d<   d|d<   d|d<   d|d<   | j                  rd|d<   d|d<   n
d|d<   d|d<   | j
                  g| j
                  D ]X  }|dk(  rd|d<   d|d<   d|d<   |dk(  rd|d<   d|d<   d|d<   -|dk(  rd|d<   8|dk(  rd|d<   C|dk(  rd|d<   N|dk(  sTd|d<   Z | j                  g| j                  D ]X  }|dk(  rd|d<   d|d<   d|d<   |dk(  rd|d<   d|d<   d|d<   -|dk(  rd|d<   8|dk(  rd|d<   C|dk(  rd|d<   N|dk(  sTd|d<   Z | j                  |d | j                  z  z  }| j                  d!d      }|r| j                  d"k(  r	|d#|z  z  }n| j                  d"k(  r|d$z  }|d%| j                  z  z  }| j                  d&d      r| j                  d"k(  r|d'z  }| j
                  | j
                  D ]  }d||<   	 | j                  | j                  D ]  }d||<   	 |D ]  }||   r	|d(|z  z  }|d)|z  z  } | j                  d*k(  r|d+z  }| j                  d,k(  r|d-z  }d.t        j                  v r$t        j                  j!                  d/      r|d0z  }|S )1N./configurer   r   r   r   znetwork-buildFz
scan-buildz	fax-buildz
dbus-buildrQ   r  Tr   r   r   r   r   r   z	doc-buildr|   r}   libusb01_buildr~   udev_sysfs_ruleszhpcups-installzhpijs-installzfoomatic-ppd-installzfoomatic-drv-installzcups-ppd-installzcups-drv-install --with-hpppddir=%sr   @    --libdir=%s --libdir=/usr/lib64z --prefix=%srz   zZ --with-cupsbackenddir=/usr/lib64/cups/backend --with-cupsfilterdir=/usr/lib64/cups/filterz --enable-%sz --disable-%sr6   z --enable-apparmor_buildr7   z --enable-selinux_buildz	.internalztestcommon/z --enable-hplip_testing_flag)r   r   r   r   r  r   r   rj   rg  r   r   r   rr  r]  r   rD  rP  )rO  bClassDriverconfigure_cmdconfiguration
dbus_availrv  r   s          r
   rl  zCoreInstall.configurei  sp   %// C 22>B  // B 22=A )-)>)>y)Io&*/M,').M+&*/M,'#(M% #(M% ,0M.)*.*?*?*GM,'#44U;J
 *4M,'#'#8#8#CM% #'#8#8#CM% ,0,A,A- M.) &*%:%:6%Bk"%)%:%:;%Gk"*.*?*?
*K&',0,A,A-() .2M*+-2M/*49M0149M014801490149014801 /4M*+-1M/*05M,-05M,-8<458=458=458<45 ;;"[[ >((5:M/2<AM"89<AM"89/)6;M"238=M"458=M"4500<AM"8900<AM"89,,8=M"45,,8=M"45!>$ <<#\\ =((59M/28=M"458=M"45/)6:M"23<AM"89<AM"8900<@M"8900<@M"89,,8<M"45,,8<M"45!=$ <<#2T\\AAM..}eD4<<2-^{;;M\\R33M$*?*???##$<eDY[I[yyM;;"[[ (#'a ( <<#\\ )#(a )  	5AQ!!331!44		5   J.77M  I-66M $,,&277>>-+H;;Mr   c                 L   d}|dz  }|d| j                   z  z  }| j                  dd      }|r| j                  dk(  r	|d|z  z  }n| j                  dk(  r|dz  }| j                  d	      | _        | j                  | j                  d
k(  r|dz  }n|dz  }| j                  d      | _        | j                  '| j                  dk(  r| j
                  r|dz  }n|dz  }n|dz  }| j                  d      | _        | j                  |dz  }n|dz  }| j                  d      | _        | j                  |dz  }n|dz  }| j                  d      | _        | j                  |dz  }n|dz  }| j                  d      | _	        | j                  | j                  dk(  r|dz  }n|dz  }| j                  d      | _
        | j                  | j                  dk(  r|dz  }n|d z  }| j                  d!      | _        | j                  | j                  dk(  r|d"z  }n|d#z  }|d$z  }|S )%Nry  z --prefix=/usrr|  r   Fr}  r~  r  r{   r
  z --enable-qt3 --disable-qt4z --enable-qt4r   r   z --enable-hpcups-install --disable-cups-drv-install --enable-cups-ppd-install --disable-hpijs-install --disable-foomatic-drv-install --disable-foomatic-ppd-install --disable-foomatic-rip-hplip-installz --enable-hpcups-install --enable-cups-drv-install --disable-cups-ppd-install --disable-hpijs-install --disable-foomatic-drv-install --disable-foomatic-ppd-install --disable-foomatic-rip-hplip-installz --disable-hpcups-install --disable-cups-drv-install --disable-cups-ppd-install --enable-hpijs-install --enable-foomatic-drv-install --enable-foomatic-ppd-install --enable-foomatic-rip-hplip-installrt   z) --disable-fax-build --disable-dbus-buildz' --enable-fax-build --enable-dbus-buildrv   z --disable-network-buildz --enable-network-buildrs   z --disable-scan-buildz --enable-scan-buildr|   z --enable-policykitz --disable-policykitr}   z --enable-libusb01_buildz --disable-libusb01_buildr~   z --enable-udev_sysfs_rulesz --disable-udev_sysfs_rulesz --enable-doc-build)rj   rg  r   r{   r   r  rt   rv   rs   r|   r}   r~   )rO  r  r   s      r
   configure_htmlzCoreInstall.configure_html  s   %)).==..}eD4<<2-^{;;M\\R33M22<@??&4??e+C::M_,M33MB'D,<,<,A  "l  l  "l  l  f  fM!55oF%HHMFFM!%!9!9:M!N!!)77M66M"667GH&44M33M11+>>>%$..A*=22M33M00<==$!);77M88M#778IJ+0D0D0I99M::M..r   c                    |dk(  rJd}t         j                  d|z         | j                  |      dd| j                  j	                         |z  gS |dk(  r/d}t         j                  d|z         | j                  |      dd|gS |dk(  r/d	}t         j                  d|z         | j                  |      dd|gS |d
k(  rJd}t         j                  d|z         | j                  |      dd| j                  j	                         |z  gS |dk(  r0| j                  |      dd| j                  j	                         dz  gS | j                  |      dd| j                  j	                         dz  gS )Nizmake installzcmnd:%sz
make cleanr   tz	make distr<  zmake rpmbzmake debrS  )r>   rC  rl  r   rR  )rO  r  optioncmnds       r
   
build_cmdszCoreInstall.build_cmds7  s   S=!DHHY%&NN<0 D,,779D@B B s]DHHY%&NN<0 D" " s]DHHY%&NN<0 D" " s]DHHY%&NN<0 D,,779D@B B s]NN<0 $$//1NBD D
 NN<0 $$//1NBD Dr   c                    	 |r^| j                   | j                     d   |   j                  |d       xs- | j                   | j                     j                  |d       xs |S | j                   | j                     d   | j                     j                  |d       xs- | j                   | j                     j                  |d       xs |S # t        $ r |cY S w xY wNrY   rW   r   r_  r   r|  valuerO  r  default
distro_vers       r
   rg  zCoreInstall.get_distro_ver_data_  s    	||D$4$45jA*MQQRUW[\ MLL!1!1266sDAMELM ||D$4$45jA$BUBUVZZ[^`de MLL!1!1266sDAMELM 	N	s   AC
 "A'C
 
CCc                     	 | j                   | j                     j                  |d       xs |S # t        $ r |cY S w xY wr   )rW   r   r_  r|  )rO  r  r  s      r
   get_distro_datazCoreInstall.get_distro_datal  sB    	<< 0 0155c4@KGK 	N	s   ,/ ==c                 
   	 |r3| j                   | j                     d   |   j                  |d       xs |S | j                   | j                     d   | j                     j                  |d       xs |S # t        $ r |cY S w xY wr  r  r  s       r
   get_ver_datazCoreInstall.get_ver_datar  s    	||D$4$45jA*MQQRUW[\g`gg||D$4$45jA$BUBUVZZ[^`depipp 	N	s   4A4 <A4 4BBc                     | j                  di |      }|j                  |i       }|j                  dg       }|j                  dg       }||fS )Nr  rp   rq   )r  r_  )rO  
dependencysupported_distro_vrsr  dependency_datarp   rq   s          r
   get_dependency_datazCoreInstall.get_dependency_data~  s[    ++r#79)--j"="&&z26"&&z26!!r   c                 P   t        | j                  j                               }|j                          g }g }g }|D ]w  }d}| j                  |   d   D ]  }| j                  |   sd} |s1| j                  |      \  }}	|r|D ]  }
|
|vs|j                  |
        |	sg|j                  |	       y | j                  d      }|j                  |       |r5dj                  |      }|j                  t        j                  |             |st        j                  d       |S )NFr   Tr_    zNo cmds/pkgs)listr  r  sortr   r  rL  extendrg  r  r   catr>   r}  )rO  r  commands_to_runpackages_to_installoverall_commands_to_runrS  includerR  pkgscmdsr  r_   s               r
   get_dependency_commandsz#CoreInstall.get_dependency_commands  s0   $##((*+
	 "$ 	1AG((+A. #((-"G# !55a8
d! : $77/66q9: #**40	1  223DE&&7"%((+>"?#**599_+EF&IIn%&&r   c                 R    | j                   t        k7  xr | j                  t        k7  S r   )r   r   r   r   r  s    r
   distro_knownzCoreInstall.distro_known  s"    {{n,Z1D1DHZ1ZZr   c                     | j                   t        k(  r<| j                  t        k7  xr' | j                  t
        k7  xr | j                  dd      S y)Nrn   FT)r   rn  r   r   r   r   r  r  s    r
   distro_supportedzCoreInstall.distro_supported  s[    99&;;.0  IT5H5HL^5^  Icgctct  vA  CH  dI  Ir   c                 F    d}| j                         D ]  \  }}}|dz  } |S Nr   r   )missing_required_dependencies)rO  num_req_missingrS  descrR  s        r
   'count_num_required_missing_dependenciesz3CoreInstall.count_num_required_missing_dependencies  s5     >>@ 	!LAtSq O	!r   c                 H    d}| j                         D ]  \  }}}}|dz  } |S r  )missing_optional_dependencies)rO  num_opt_missingrS  r  reqrR  s         r
   'count_num_optional_missing_dependenciesz3CoreInstall.count_num_optional_missing_dependencies  s8    !%!C!C!E 	!AtS#q O	!r   c              #   P  K   | j                   | j                     d   D ]  }| j                  |   s| j                  |   d   D ]\  }| j                  |   t
           s| j                  |   r*t        j                  d|z         || j                  |   t           |f ^  y w)Nr   r   zMissing required dependency: %s
r   r   r   r   r  DEPENDENCY_REQUIRED_INDEXr   r>   r?   DEPENDENCY_DISPLAY_INDEXrO  compr  s      r
   r  z)CoreInstall.missing_required_dependencies  s     OOD$;$;<Q? 		^D$$T*<<-a0 ^C((-.GH#55c:II&G#&MN"%t'8'8'=>V'WY]"]]^		^s   /B&+B&B&.8B&c              #   r  K   | j                   | j                     d   D ]  }| j                  |   s| j                  |   d   D ]m  }| j                  |   t
           r| j                  |   r*t        j                  d|z         || j                  |   t           | j                  |   d   |f o  y w)Nr   r   Missing optional dependency: %sr   r  r  s      r
   r  z)CoreInstall.missing_optional_dependencies  s     OOD$;$;<Q? 		yD$$T*<<-a0 yC,,S12KL#55c:II&G#&MN"%t'8'8'=>V'WY]YjYjknYopqYrtx"xxy		ys   /B7+B7B7.A	B7c                    d}| j                   | j                     d   D ]  }|j                  d      dk7  r|j                  | j                        dk(  r6| j                  |   d   rId}| j
                  |   sd} ||| j                  |   d   |      | j
                  |<   | j
                  |   s| j                  |   d   D ]/  }| j                  |   rt        j                  d|z         |dz  }1  |S )	Nr   r   gui_r  ynr   r  )	r   r   r  r{   r   r   r   r>   r?   )rO  answer_callbackr  rR  r  rS  s         r
   select_optionszCoreInstall.select_options  s   ??4#:#:;A> 	1Cxx2%#((4??*Cr*I<<$Q',,S1!G-<c*1-w.8%%c* ((-!\\#.q1 1#55a8II&G!&KL+q0O1	1$ r   c                 Z    t        j                  d      ryt        j                  d       y)NwgetTzwget is not installedFr   r  r>   r?   r  s    r
   r  zCoreInstall.check_wget  s!    ;;vII-.r   c                 Z    t        j                  d      ryt        j                  d       y)Nzavahi-browseTzavahi-browse is not installedFr  r  s    r
   r  zCoreInstall.check_avahi_utils  s!    ;;~&II56r   c                    | j                  dd |      }t        j                  |       |r]d}|D ]U  }t        j                  || j
                        \  }}|dk7  rt        j                  d|z         | ||d|z         |dz  }W yy)Nr`   r   r   An error occurred running '%s'zPre-install step %dTFrg  r>   r?   r   ri  r   r  rO  rs  r  pre_cmdr  rZ  rw  rx  s           r
   run_pre_installzCoreInstall.run_pre_install  s    **+<dJO		'A 	!&30@0@!AQ;HH=CD'S"7!";<Q	  r   c                    | j                  dd |      }t        j                  |       t        |       |rd}t	        j
                  || j                        \  }}t        d|v d|v d|v d|v g      r|dk(  r6t        j                  d|z         n|dk7  rt        j                  d|z         | ||d	|z         |dz  }y y )
Nr   r   yumzypperdnfpacmanr  r   z hp_libs_remove step %d)	rg  r>   r?   printr   ri  r   anyr  )rO  rs  r  hp_lib_rm_cmdr  rw  rx  s          r
   remove_default_hplip_libsz%CoreInstall.remove_default_hplip_libs  s    001EtZX		- mA"YY}d6F6FGNFFE]*8}+De}F\^fjw^wxyQ;HH=MNQ;HH=MN#(AA(EFFA r   c                 |   | j                  dd |      }t        j                  |       |rd}|D ]  }t        j                  || j
                        \  }}t        d|v d|v d|v d|v g      r|dk(  r6t        j                  d|z         n|dk7  rt        j                  d|z         | ||d	|z         |dz  } y y )
Nra   r   r  r  r  r  r  r   zPre-depend step %d)rg  r>   r?   r   ri  r   r  r  r  s           r
   run_pre_dependzCoreInstall.run_pre_depend0  s    **+;T:N		'A !&30@0@!Ah#ou|XQT_UV{!AC!GH{!AC!GH'S"6":;Q r   c                    | j                  dd |      }t        j                  |       |r]d}|D ]U  }t        j                  || j
                        \  }}|dk7  rt        j                  d|z         | ||d|z         |dz  }W y y )Nrb   r   r   r  zPost-depend step %dr  )rO  rs  r  post_cmdr  rZ  rw  rx  s           r
   run_post_dependzCoreInstall.run_post_dependC  s    ++tZ1		(A 	!&30@0@!AQ;HH=CD'S"7!";<Q	 r   c                 D   ddl m} |r| j                  dd |      }n| j                  dd |      }t        j	                  |       |rZd}|D ]R  }| ||d|z         t        j                  || j                        \  }}|dk7  rt        j                  d       |dz  }T y y )Nr   r   rd   rc   r   zScanjet-depend step %dzWFailed to install this Scanjet dependency package. Some Scanjet features will not work.)	r1  r   rg  r>   r?   r   ri  r   r  )	rO  rs  r  r   scanjet_cmdr  rZ  rw  rx  s	            r
   run_scanjet_dependzCoreInstall.run_scanjet_dependT  s    #223KTS]^K223GzZK		+A" 'S":Q">?!&30@0@!AA:HHvw Q r   c                     g }| j                  dd|      r,|j                  | j                  j                         dz         |S )Nrl   Fz!python ./installer/fix_symlink.py)rg  rL  r   rR  )rO  r  r  s      r
   	pre_buildzCoreInstall.pre_buildm  sF    ##$5ujIKK((335;< = r   c                     d}| j                  |      D ]8  }t        j                  || j                        \  }}| ||d|z         |dz  }: y )Nr   zPre-build step %d)r  r   ri  r   rO  rs  r  r  rZ  rw  rx  s          r
   run_pre_buildzCoreInstall.run_pre_buildu  sX    >>*- 	C"YYsD,<,<=NFF#1A56FA	r   c                     d}| j                  |      D ]8  }t        j                  || j                        \  }}| ||d|z         |dz  }: y )Nr   zPost-build step %d)
post_buildr   ri  r   r  s          r
   run_post_buildzCoreInstall.run_post_build~  sX    ??:. 	C"YYsD,<,<=NFF#2Q67FA	r   c                    g }| j                   rP| j                  d   rA|j                  | j                  j	                         dz         t
        j                  d       t        ddg      }t        j                  dd      }|D ]U  }t
        j                  d|d	||   d
       |d|z  z   }|j                  | j                  j	                         |z         W |S )Nr|   zsh /etc/init.d/dbus reloadz4Will reload DBUS configuration for PolicyKit supportr   hpssdkillTFound  for  process %s)
r   r   rL  r   rR  r>   r?   
get_ps_pidr   r  )rO  r  r  pid_listkill_cmdru  r  s          r
   r  zCoreInstall.post_build  s      5 5k BKK((33545 6IILM |W56;;vt, 	>CII3FGeck)DKK((335<=	>
 r   c                     d}| j                   j                         |z  }t        j                  || j                         \  }}y )Nz{rm -rf .libs/libhpipp.so.0.0.1T .libs/libsane-hpaio.so.1.0.0T .libs/libhpmud.so.0.0.6T .libs/hpmudext.soT .libs/cupsext.soT)r   rR  r   ri  )rO  run_cmdrZ  rw  rx  s        r
   
remove_soTzCoreInstall.remove_soT  s?     P))+g5 3(8(89r   c                     d}| j                  d      }|rV|	 ||d       t        j                  || j                        \  }}|dk(  r#| j	                         | _        | j
                  sd}|S )NTrf   zRemoving old HPLIP versionr   F)rg  r   ri  r   rh  r   )rO  rs  failedrf   rw  rx  s         r
   remove_hplipzCoreInstall.remove_hplip  st    334FG#)+GH"YY'79I9IJNFF{%)%5%5%7"))"Fr   c                 t    | j                   j                          | j                   j                         dk(  ryy)NrU   FT)r   clearPasswordgetPasswordr  s    r
   check_passwordzCoreInstall.check_password  s1    &&('')R/r   c                     d}t        t        j                               D ](  \  }}|dkD  r nt        j                  ||      s$||z  }* t
        j                  d|z         |dkD  S )zr
        Example code from David Mertz' Text Processing in Python.
        Released in the Public Domain.
        g        g?zFile error page score: %fg      ?)r  err_patsitemsr?  rq  r>   r?   )rO  page	err_scorerW  probs        r
   isErrorPagezCoreInstall.isErrorPage  si    
 	hnn./ 	"IC3yyd#T!			" 			-;<4r   c                 ,    | j                   t        k7  ryyNT)r   r   r  s    r
   validate_distozCoreInstall.validate_disto  s    ;;.(r   c                      yr  r  r  s    r
   validate_distro_versionz#CoreInstall.validate_distro_version  s    r   c                      y)NFr  )rO  r   s     r
   is_auto_installer_supportz%CoreInstall.is_auto_installer_support  s    r   c                    d}t        j                         dk7  rd}t        j                  ddd      }t        j                  ddd	      }|dk(  rt        j                  d
       y|t        k7  r't        j                  d|z  ddgd      \  }}|r|dk(  ry| j                  d      }t        j                  d|z         t        j                  d       t        j                  ddt              }	t        j                  d      \  }
}|
du r|t        k7  r9t        j                  dddgd      \  }}|r|dk(  rt        j                  d       yt!        dg      }t        j"                  dd      }|D ]\  }t        j                  d|d||   d       |d|z  z   }t        j$                  |      \  }}t        j                  d|d|       ^ t        j                  d      \  }}t        j                  d      \  }}|du s|du rt        j                  d       y|r;| j'                         \  }}|rt)        j*                  d       | j-                  |       d}|r| j.                  j1                         |z  }t        j$                  || j.                        \  }
}|K|j3                         D ]8  }|j5                  d       d!k7  rt        j6                  || j.                  |       : | j9                         }|d"   rQt        j                  d#       t:        |d      d"   D cg c]#  }t        j6                  || j.                  |      % c} t=        j>                  d$      }|jA                  |      }d }||jC                  d"      d%z   }|jC                  d"      d&z   }d}t        jD                  tF        |      }|tI        |      k  r8t        j6                  ||   | j.                  |       |d"z  }|tI        |      k  r8d}t        jD                  tJ        |      } |tI        |       k  r8t        j6                  | |   | j.                  |       |d"z  }|tI        |       k  r8d}!|t        k7  r/|	t        k7  r&t        j                  d'ddgd      \  }}|r
|dk(  rd}!nd}!|!du rt        jD                  tL        |      }"ng }"d}|tI        |"      k  r8t        j6                  |"|   | j.                  |       |d"z  }|tI        |"      k  r8t        j                  dd(d      }#|#r!t        j6                  |#| j.                  |       t        jD                  tN              }$d}|tI        |$      k  r8t        j6                  |$|   | j.                  |       |d"z  }|tI        |$      k  r8t        jD                  tP        d)      }%|%D ]#  }&t        j6                  |&| j.                  |       % t        jD                  tP        d*      }%|%D ]#  }&t        j6                  |&| j.                  |       % d+}| j.                  j1                         |z  }t        j$                  || j.                  |      \  }
}|
dk(  r>|j3                         }'|'D ])  }(|(|k7  s	t        j6                  |(| j.                  |       + tR        D ]m  })|)sd,|)z  }| j.                  j1                         |z  }t        j$                  || j.                  |      \  }
}|
dk7  sRt        jU                  d-|)d.|d/       o |!dk(  rd}t        jD                  tV        |      }*|tI        |*      k  r8t        j6                  |*|   | j.                  |       |d"z  }|tI        |*      k  r8d}t        jD                  tX              }+|tI        |+      k  r8t        j6                  |+|   | j.                  |       |d"z  }|tI        |+      k  r8t        j6                  || j.                  |       |&|d0z   },t        j6                  |,| j.                  |       t        j                  d1       yc c}w )2NFr   TrI  rJ  rU   r   r]  rm  zHPLIP is not installed.z4
Are you sure to uninstall HPLIP-%s (y=yes, n=no*)?:r  r  rf   zhplip_remove_cmd =%s zStarting uninstallation...plugin	installedr   zs
Some HPLIP applications are running. Press 'y' to close and proceed or Press 'n' to quit uninstall (y=yes*, n=no):zLQuiting HPLIP unininstallation. Close application(s) manually and run again.r  r  r  r  r  zsts =z out=r   zQFailed to close HP-Toolbox/HP-Systray. Close manually and run hp-uninstall again.zfind /home -name .hplipzfind:r  r   zRemoving Security ProfilesrK  zbin/rL  z?
Do you want to remove HP proprietary plug-ins (y=yes*, n=no)?:r{  z/etc/udev/rules.dz/lib/udev/rules.dzfind /usr -type d -name hplipz"find /usr -type f -name %s -deletezFailed to delete z library  [r  zhp-unistallz!HPLIP uninstallation is completed)-r   getuidrM  r_  r>   r}  NON_INTERACTIVE_MODEr   enter_choicer  r?   rC  	sys_statePLUGIN_NOT_INSTALLEDr   Is_Process_Runningr  r  ri  close_package_managersr~  r  r  r   rR  
splitlinesr  removerc  r`  r?  rN  rA  rO  
expandList	BINS_LISTr  	LIBS_LIST
HPLIP_LIST
FILES_LIST
RULES_LISTHPLIP_EXT_LISTr  PLUGIN_LISTPLUGIN_STATE)-rO  r   rs  	checkSudorV  r]  okchoicerf   plugin_staterw  rx  r  r  ru  r  stsouttoolbox_statussystray_status	User_exitIs_pkg_mgr_runningrZ  r  
package_strD   rW  r   rX  rY  cntBINS_LIST_FULLLIBS_LIST_FULLremove_pluginsHPLIP_LIST_FULLrj   FILES_LIST_FULLRULES_LIST_FULLflhplip_foldershplip_dext_fPLUGIN_LIST_FULLPLUGIN_STATE_FULLhp_uninstalls-                                                r
   	uninstallzCoreInstall.uninstall  s   	99;!I <<3,,w	7;r>II/0''))G'QTWY\S]_bdJB3//0BC		),<<=-. }}k#79 11,?T>++ -- K  NQ  SV  MW  Y\]
FVs]HHfh  "<.1H{{640H 9		sHSMJK%#+- 99T?S		c378	9 "'!9!9,!G!&!9!9,!GT!^t%;IIce,0,G,G,I)I)h' (""--/#5C3(8(89&&( =66'?b(Q 0 0)<	= 113
a=II23z!}-a02 \\!T--y9 2 jj23yy"
A/JA/JC"--iDNN++^C0$2B2BINq N++ C"--iDNN++^C0$2B2BINq N++ ''L<P,P))RUXZ]T^`ceJBfm!%!N U"#..z8DO OC((LL-t/?/?K1HC C((
 ,,vub1LL$"2"2I>  **:6C((LL-t/?/?K1HC C((
  **:7JK! 	:BLLT--y9	:  **:7JK! 	:BLLT--y9	: .))+c13(8(8)DQ;"--/M( Gh&LL$*:*:IFG
 $ 	OE:UB&&113c9!&30@0@)!LQ;HH?DfMO	O T!C$//XF,---c2!--y:q ,--
 C % 0 0 >-... "#'#3#3Y@q -..
 LL4#3#3Y? !%5LLLt'7'7C45U2s   &(ac                 p   d}d}t        j                  | j                        \  }}|r|t        k(  rt	        j
                  d|z  g dd      \  }}|sy|dk(  rt        j                  d       n|dk(  rt	        j                  d	|z  d
      \  }}|sy|rt| j                  j                         d|z  z  }	t        j                  |	| j                        \  }
}|
dk7  r,t        j                  d       nt        j                  d       n&t        j                  | j                        \  }}|r|rd}||fS )NFzA package manager '%s' appears to be running. Please quit the package manager and press enter to continue (i=ignore, r=retry*, f=force, q=quit) :)r  r<  qrD   r<  )TTr  zCIgnoring running package manager. Some package operations may fail.rD   z#
Force quit of package manager '%s'r  zkill %sr   zBFailed to kill process. You may need to manually quit the program.GUI is not yet supportedT)r   rd  r^   r  r   r  r>   r  enter_yes_nor   rR  ri  r}  )rO  MODEr)  r*  ru  rv  r"  
user_inputansrZ  rw  rx  s               r
   r  z"CoreInstall.close_package_managers  sP   	"**4+<+<=W''!$!1!1 h  kr  r  tH  JM"NJ%$HH]_$!..>H#OGB)"..99;y3O).38H8H)I!Q;II df 		45 ..t/@/@ALC3 6 !%,,,r   c           	      l   d}|t         k(  r|r|syt        j                  d|z  ddgd      \  }}|r|dk(  rt        j                  dd      }|ry|d|dt
        j                  }| j                  j                         |z  }t        j                  d|z         t        j                  || j                        \  }	}
|	d	k(  rXd}|S t        j                  d
       |S t        j                  t        j                  d|dt
        j                  d             |S t        j                  d       |S )NFz;Do you want to add missing groups %s to user?(y=yes*, n=no)r  r  usermodTr  z	cmd =  %sr   zusermod command not found.zPlease add z groups to z userr=  )r  r   r  r   r  rr  usernamer   rR  r>   r?   ri  r}  rC  bold)rO  missing_user_groupsmissing_user_groups_cmdr   ret_valr"  r@  usermod_pathrZ  r%  r&  s              r
   add_groups_to_userzCoreInstall.add_groups_to_user  s&   ##&.E --MPccfikneoqtvNB
jC'${{9d;$&=t}}NC**557#=CIIkC/0$yyd.>.>?HCax"&  II:;  #6#G H I
  II01r   c                    d}d}|t         k(  r,t        j                  dddgd      \  }}|r|dk7  rt        j                  j                  |      st        j                  d|z         y| j                  j                         d|z   z  }t        j                  d|z         t        j                  || j                        \  }}|d	k(  rd
}t        j                  j                  d      rLd}| j                  j                         |z  }t        j                  d|z         t        j                  |       |S t        j                  d       |S )NFz/etc/selinux/configzxSELinux is currently enabled in your system. Device may not work properly. Do you want to disable SELinux?(y=yes, n=no*)r  r  zFile %s is not foundz#vi -c %s/enforcing$/disabled -c wq zcmd= %s r   Tz/selinux/enforcezecho 0 >/selinux/enforcer=  )r  r   r  r   rD  rP  r>   r?   r   rR  r   ri  r   executer}  )	rO  r   rH  SELinux_filer"  r@  rZ  r%  r&  s	            r
   disable_SELinuxzCoreInstall.disable_SELinux  s?   ,## -- K  NQ  SV  MW  Y\]NB
jC'ww~~l3II4|CD &&1139LHJ		*s*+ 99S$*:*:;S!8"G77>>"454C**557#=CIIj3./$$S)  II01 r   c                 x   | j                  d      }| j                  d      }i }t        |      r'|D ]"  }|rt        j                  |      ||<   |||<   $ t        |      r'|D ]"  }|rt        j                  |      ||<   |||<   $ t        |      dk(  r$t        |      dk(  rt        j                  d       yy)Nr_   ra   r   zNo missing dependencies)rg  r  r   r  r>   rC  )	rO  r   required_dependenciesoptional_dependenciesmissing_cmdr_   ra   overall_install_cmdsr  s	            r
   install_missing_dependenciesz(CoreInstall.install_missing_dependencies	  s    223DE112BC!$%'< C#"/4yy/I )+- 0C )+-C $%'< C#"/4yy/I )+- 0C )+-C #$)c+.>!.CHH./ r   r   )rV   )NN)er@   rN   __qualname__rn  r  rT  ry  r  rc  r  ra  rb  r  rM  r  r  r  r   r   r  r   r   r   r  r   r  r0  r  r*  r  r  r  r  r   r"  r&  r   r$  r=  r,  r  r(  r  r  r   r   r   rh  r   r.  r  r	  r  r3  r6  r9  r8  r]  r;  rc  ri  r`  rl  r  r  rg  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r   r  r:  r  rJ  rN  rT  r  r   r
   rP   rP      sE   *4D!D=L[z-, 36j>9@5,f!V!Q1"+0@ACK"7$c.6)				
2UA;5/1dA
C
			.,\

:$TLJX@D&DP
"!'F[
^
y.
((&"2(:" " 8J  . wB +; "-Z Ue F $4 < 1AXZrt  CE r   rP   )mr~  r   os.pathr?  rp  grppwdtarfilerS  r  r   r   r  r   base.g
base.codesr   r   r   r   r   r   dcheckr   r   rn  
MODE_CHECKMODE_CREATE_DOCSr   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r   OK_PROCESS_LISTCONFIGURE_ERRORSr   r   r   r4  r9  r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r!  r#  r%  r'  r)  r+  r-  PIP_STRTESS_STRTESSEROCR_STRIMUTILS_STR
OPENCV_STRZBAR_STR	LEPTO_STR
PYPDF2_STRr/  r2  r5  r7  r:  r<  r   r   r  APPARMOR_DIRSELINUX_DIRr`  	functoolsr9   rH   objectrP   r  r   r
   <module>rm     s  .  	  	  
 
   
&+   9 9   
 		  "#   
:D :D($ / 3D	
 3D 8 3D .t -d .t -d 6t ;D ;D >t  "4!(C		N\
w
@
 A)*
A. )- - 0	
 / 0 . * ( 0 7 + . 3 ,  /!" *# * 

	#;/J:
0C1
	N
 7$:9	4&:
M8
	B
X	4
@4
@5
"	6

Y
-5XF1
*6	.
4 	#	
 
	 4%(IKo'pq#&]%^_
'('E!& E!C  &&&Z  
	
s#   F 6F FFF)(F)