Ë
    &£Ëe�$  ã                   ó¨   — 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	m	Z	 d dl
mZ d dlmZ g d¢ZddlmZ d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)é    N)Údatetime)ÚOptionParser)Úgettext)
z/binz/bootz/etcz/initrdz/libz/lib32z/lib64z/sbinz/usrz/varé   )ÚDistUpgradeConfigc            	      ó  — t        «       } | j                  dddd¬«       | j                  ddd¬«       | j                  d	dd
¬«       | j                  dddt        d«      ¬«       | j                  dddt        d«      ¬«       | j                  ddddt        d«      ¬«       | j                  dddt        d«      ¬«       | j                  dddt        d«      ¬«       | j                  ddd dt        d!«      ¬"«       | j                  «       S )#z/ setup option parser and parse the commandline z--have-prerequistsÚhavePrerequistsÚ
store_trueF)ÚdestÚactionÚdefaultz--with-networkÚwithNetwork)r   r   z--without-networkÚstore_falsez
--frontendÚfrontendNz_Use frontend. Currently available: 
DistUpgradeViewText, DistUpgradeViewGtk, DistUpgradeViewKDE)r   r   Úhelpz--modeÚmodeÚdesktopz(*DEPRECATED* this option will be ignoredz	--partialÚpartialz:Perform a partial upgrade only (no sources.list rewriting))r   r   r   r   z--disable-gnu-screenzDisable GNU screen support)r   r   r   z	--datadirÚdatadirú.zSet datadirz--devel-releaseÚdevel_releasez"Upgrade to the development release)r   r   r   r   )r   Ú
add_optionÚ_Ú
parse_args)Úparsers    ú=/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeMain.pyÚdo_commandliner   6   sH  € ä‹^€FØ
×ÑÐ*Ð1BØ)°5ð ô :à
×ÑÐ&¨]À,ÐÔOØ
×ÑÐ)°À]ÐÔSØ
×Ñ�l¨¸DÜð [ó \ð ô ]ð ×Ñ�h V°IÜÐGÓHð ô Jà
×Ñ�k¨	¸5Ø)ÜÐYÓZð ô \ð ×ÑÐ,°\Ø#ÜÐ9Ó:ð ô <ð ×Ñ�k¨	¸3Ü˜]Ó+ð ô -à
×ÑÐ'°Ø*°EÜÐAÓBð ô Dð ×ÑÓÐó    c           
      óF  — |j                  ddd«      }t        j                  j                  |«      st        j                  |«       t        j
                  |dz   «      rõt        j                  «       }|d|j                  |j                  |j                  |j                  |j                  fz  z   }t        j                  j                  |«      st        j                  |«       t        j
                  |dz   «      D ]S  }t        j                  |t        j                  j                  |t        j                  j!                  |«      «      «       ŒU t        j                  j                  |d«      }| j"                  r|dz  }t%        |d«      5  	 d	d	d	«       t'        j(                  t&        j*                  |d
d¬«       t'        j,                  d|j.                  z  «       t'        j,                  ddj                  t        j0                  «       «      z  «       t2        j4                  j7                  d	«      }|d   j8                  j:                  }t'        j,                  d|z  «       t'        j,                  dt<        j>                  z  «       |S # 1 sw Y   �ŒxY w)z setup the logging ÚFilesÚLogDirz/var/log/dist-upgrade/z/*.logz/%04i%02i%02i-%02i%02izmain.logz.partialÚaNz%%(asctime)s %(levelname)s %(message)sÚw)ÚlevelÚfilenameÚformatÚfilemodezUsing config files '%s'zuname information: '%s'ú Úaptzapt version: '%s'zpython version: '%s') ÚgetWithDefaultÚosÚpathÚexistsÚmkdirÚglobr   ÚnowÚyearÚmonthÚdayÚhourÚminuteÚshutilÚmoveÚjoinÚbasenamer   ÚopenÚloggingÚbasicConfigÚDEBUGÚinfoÚconfig_filesÚunamer)   Úapt_pkgÚCacheÚcurrent_verÚver_strÚsysÚversion)	ÚoptionsÚconfigÚlogdirr0   Ú
backup_dirÚfÚfnameÚcacheÚapt_versions	            r   Úsetup_loggingrO   O   sÞ  € à×"Ñ" 7¨8Ð4LÓM€FÜ�7‰7�>‰>˜&Ô!Ü
�‰�Ôä‡y�y�˜‘Ô!Ü�l‰l‹nˆØÐ4¸¿¹ÀÇÁÈ3Ï7É7ÐSV×S[ÑS[Ð\_×\fÑ\fÐ7gÑgÑgˆ
Ü�w‰w�~‰~˜jÔ)Ü�H‰H�ZÔ Ü—‘˜6 (™?Ó+ò 	IˆAÜ�K‰K˜œ2Ÿ7™7Ÿ<™<¨
´2·7±7×3CÑ3CÀAÓ3FÓGÕHð	Iä�G‰G�L‰L˜ 
Ó+€Eà‡‚Ø�ÑˆÜ	ˆe�SÓ	ñ Ø÷ä×ÑœgŸm™mØ!&ØFØ!$õ&ô ‡L�LÐ*¨V×-@Ñ-@Ñ@ÔAÜ‡L�LÐ*¨S¯X©X´b·h±h³jÓ-AÑAÔBÜ�K‰K×Ñ˜dÓ#€EØ˜‘,×*Ñ*×2Ñ2€KÜ‡L�LÐ$ {Ñ2Ô3Ü‡L�LÐ'¬#¯+©+Ñ5Ô6Ø€M÷ñ ús   ÆJÊJ c                 óÆ  — 	 ddl m} t
        j                  j                  | d«      }t        j                  d|z  «       t        j                  d«      } |«       }|j                  d|dd¬	«       t        j                  |«       	 t        j                  d
dgt        j                  d¬«      j                  «       d   }t        t
        j                  j                  | d«      d«      5 }|j!                  |«       d d d «       y # t        $ r t        j                  d«       Y y w xY w# 1 sw Y   y xY w# t"        $ r"}t        j                  d|z  «       Y d }~y d }~ww xY w)Nr   )ÚAptClonezfailed to import AptClonezapt-clone_system_state.tar.gzzcreating statefile: '%s'é6   ú/T)Ú	sourcedirÚtargetÚwith_dpkg_statusÚscrub_sourcesÚlspciz-nn©ÚstdoutÚuniversal_newlinesr   z	lspci.txtr#   zlspci failed: %s)Ú	apt_clonerQ   ÚImportErrorr;   Úerrorr+   r,   r8   ÚdebugÚumaskÚ
save_stateÚ
subprocessÚPopenÚPIPEÚcommunicater:   ÚwriteÚOSError)rI   rQ   rU   Ú	old_umaskÚcloneÚsrK   Úes           r   Úsave_system_staterl   p   s,  € ðÝ'ô �W‰W�\‰\˜&Ð"AÓB€FÜ‡M�MÐ,¨vÑ5Ô6ô —‘˜Ó €IÙ‹J€EØ	×Ñ˜s¨6ÀDØð ô ô ‡H�HˆYÔð.Ü
×
Ñ
˜G E˜?´:·?±?Ø.2ô4ß4?±K³MÀ!ñEˆä”"—'‘'—,‘,˜v {Ó3°SÓ9ð 	¸QØ�G‰G�AŒJ÷	ð 	øô# ò Ü�‰Ð1Ô2Ùðú÷"	ð 	ûäò .Ü�‰Ð(¨1Ñ,×-Ñ-ûð.úsH   ‚D ÂA#D5 Ã*D)Ã<D5 ÄD&Ä%D&Ä)D2Ä.D5 Ä2D5 Ä5	E Ä>EÅE c           	      ó²  — | j                   g|j                  dd«      z   D ]:  }|sŒ	 ddlm}  |d|z   d«      }t	        ||«      } ||| j
                  ¬«      } |S  t        j                  d«       t        d«       t        j                  d«       S # t        $ r8}t        j                  d|›d|›d	�«       t        d
|›d|›d	�«       Y d}~Œ°d}~ww xY w)z0 setup view based on the config and commandline ÚViewr   )Úimport_moduler   ÚDistUpgrade)rI   r   zcan't import view 'z' (ú)zcan't load z (Nz!No view can be imported, abortingr   )r   ÚgetlistÚ	importlibro   Úgetattrr   Ú	Exceptionr;   ÚwarningÚprintr^   rE   Úexit)	rG   rH   rI   Úrequested_viewro   Ú
view_modulÚ
view_classÚinstancerk   s	            r   Ú
setup_viewr}   Š   sÎ   € ð #×+Ñ+Ð,¨V¯^©^¸FÀ6Ó-JÑJò ˆÙØð	>å/á& s¨>Ñ'9¸=ÓIˆJô ! ¨^Ó<ˆJÙ!¨¸¿¹ÔIˆHØð €Oð)ô" 	�‰Ð9Ô:ÜÐ1Ô2Ü�‰�ŒØ€Oøô ò 	>Ü�OŠOº^ÊAÐNÔOÝª.º!Ð<×=Ñ=ûð	>ús   ¨2BÂ	CÂ.CÃCc                  ó  — d} 	 t        j                  ddgt         j                  d¬«      j                  «       d   }t	        j
                  d|z  «       | |v r0t	        j                  d
«       t        j                  ddddd| g«       dt        j                  d<   dddddd| gt        j                  z   }t	        j                  d|z  «       t        j                  d|«       y	# t        $ r t	        j                  d«       Y y	w xY w)z… check if there is a upgrade already running inside gnu screen,
        if so, reattach
        if not, create new screen window
    z$ubuntu-release-upgrade-screen-windowÚscreenz-lsTrY   r   zscreen returned: '%s'zscreen could not be runNz)found active screen session, re-attachingz/usr/bin/screenz-dz-rz-pÚ1ÚRELEASE_UPGRADER_NO_SCREENz-ez\0\0z-cÚscreenrcz-Szre-exec inside screen: '%s')rb   rc   rd   re   r;   r_   rg   r>   r+   ÚexecvÚenvironrE   Úargv)Ú
SCREENNAMEÚoutÚcmds      r   Ú%run_new_gnu_screen_window_or_reattachr‰   ¤   sþ   € ð
 8€JðÜ×ÑØ�eÐ¤Z§_¡_Ø#ô%ç%0¡[£]°1ñ6ˆô 	�‰Ð-°Ñ3Ô4ð
 �SÑÜ�‰Ð@ÔAä
�‰Ð" h°°d¸DÀ*Ð%MÔNà-0„B‡J�JÐ+Ñ,ð Ø�Ø�Ø�ðô !ŸX™Xñ&€Cô ‡L�LÐ.°Ñ4Ô5Ü‡H�HÐ Õ$øô% ò Ü�‰Ð.Ô/Ùðús   „AC% Ã%DÄDc                  ó–  — t        «       \  } }t        | j                  «      }t        | |«      }ddlm} t        j                  d|z  «       t        j                  d«       | j                  �| j                  dk(  rHt        j                  j                  t        j                  «       d«      }t        j                  d|«       t        | ||«      }|j                   r(dt        j"                  vr| j$                  s
t'        «        t        j(                  d«      sd	t        j"                  d<   dd
lm}  ||| | j                  ¬«      }t-        j.                  |j0                  «       | j2                  r:|j5                  «       st7        j8                  d«       t7        j8                  d«       t;        |«       |j=                  «       ryy)z main method r   )ÚVERSIONz%release-upgrader version '%s' startedzubuntu-release-upgraderr   Úmor�   ÚNEEDRESTART_SUSPENDÚy)ÚDistUpgradeController)r   r   )r   r   r   rO   ÚDistUpgradeVersionr‹   r;   r>   r   Ú
textdomainr+   r,   r8   ÚgetcwdÚbindtextdomainr}   Úneeds_screenr„   Údisable_gnu_screenr‰   Úgetenvr�   ÚatexitÚregisterÚ_enableAptCronJobr   ÚdoPartialUpgraderE   rx   rl   Úrun)	rG   ÚargsrH   rI   r‹   Ú	localedirÚviewr�   Úapps	            r   Úmainr    Å   sO  € ô %Ó&�O€WˆdÜ˜wŸ™Ó/€FÜ˜7 FÓ+€Få+Ü‡L�LÐ8¸7ÑBÔCä×ÑÐ0Ô1Ø‡�Ð '§/¡/°SÒ"8Ü—G‘G—L‘L¤§¡£¨dÓ3ˆ	Ü×ÑÐ8¸)ÔDô �g˜v vÓ.€Dð 	×ÒØ(¬B¯J©JÑ6Ø×&Ò&Ü-Ô/ô �9‰9Ð*Ô+Ø,/Œ�
‰
Ð(Ñ)å<Ù
  g°w·±Ô
G€CÜ
‡O�O�C×)Ñ)Ô*ð ‡‚Ø×#Ñ#Ô%Ü�H‰H�QŒKÜ�‰�Œô �fÔð ‡w�w„yØØr   )r)   r—   r   r/   r;   r+   r6   rb   rE   r   Úoptparser   r   ÚSYSTEM_DIRSÚDistUpgradeConfigParserr   r   rO   rl   r}   r‰   r    © r   r   ú<module>r¥      sW   ðó, Û Û Û Û Û 	Û Û Û 
å Ý !Ý  ò
€õ 7òò2òB.ò4ò4%óB.r   