
    tSf#                         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dS )    N)datetime)OptionParser)gettext)
z/binz/bootz/etcz/initrdz/libz/lib32z/lib64z/sbinz/usrz/var   )DistUpgradeConfigc            	      r   t                      } |                     ddd           |                     ddd           |                     ddd	t          d
                     |                     dddt          d                     |                     ddddt          d                     |                     dddt          d                     |                     dddt          d                     |                     ddddt          d                     |                                 S ) z/ setup option parser and parse the commandline z--with-networkwithNetwork
store_true)destactionz--without-networkstore_falsez
--frontendfrontendNz_Use frontend. Currently available: 
DistUpgradeViewText, DistUpgradeViewGtk, DistUpgradeViewKDE)r   defaulthelpz--modemodedesktopz(*DEPRECATED* this option will be ignoredz	--partialpartialFz: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    N/home/let_prod/public_html/lightetech2/upgrader/DistUpgrade/DistUpgradeMain.pydo_commandliner   6   s   ^^F
&],OOO
)]SSS
lD [ \ \  ] ] ] hVIGHH  J J J
k	5)YZZ  \ \ \ ,\#9::  < < < k	3]++  - - -
'*EABB  D D D     c           
         |                     ddd          }t          j                            |          st          j        |           t          j        |dz             rt          j                    }|d|j        |j	        |j
        |j        |j        fz  z   }t          j                            |          st          j        |           t          j        |dz             D ]R}t          j        |t          j                            |t          j                            |                               St          j                            |d          }| j        r|dz  }t%          |d          5  	 d	d	d	           n# 1 swxY w Y   t'          j        t&          j        |d
d           t'          j        d|j        z             t'          j        dd                    t          j                              z             t2          j                            d	          }|d         j        j        }t'          j        d|z             t'          j        dt<          j        z             |S )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logdirr/   
backup_dirffnamecacheapt_versions	            r   setup_loggingrN   M   sW   ""784LMMF7>>&!! 
y!! Ilnn437SVS[\_\f7ggg
w~~j)) 	!HZ   6(?++ 	I 	IAK27<<
273C3CA3F3FGGHHHHGLL
++E 	eS		                gm!&F!$& & & & L*V-@@AAAL*SXXbhjj-A-AABBBKd##E,*2KL${2333L'#+5666Ms   4FF	Fc                    	 ddl m} n%# t          $ r t          j        d           Y d S w xY wt
          j                            | d          }t          j        d|z             t          j	        d          } |            }|
                    d|dd	           t          j	        |           	 t          j        d
dgt          j        d                                          d         }t          t
          j                            | d          d          5 }|                    |           d d d            d S # 1 swxY w Y   d S # t"          $ r"}t          j        d|z             Y d }~d S 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_newlinesz	lspci.txtr"   zlspci failed: %s)	apt_clonerP   ImportErrorr:   errorr*   r+   r7   debugumask
save_state
subprocessPopenPIPEcommunicater9   writeOSError)rH   rP   rT   	old_umaskclonesrJ   es           r   save_system_staterk   n   s   &&&&&&&   1222 W\\&"ABBFM,v5666   IHJJE	s6D     HY.

GE?:?.24 4 44?KMM!E"',,v{33S99 	QGGAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 . . .(1,---------.sI   	 ++1A)E
 D=0E
 =EE
 EE
 

E6E11E6c           	         | j         g|                    dd          z   D ]}|s	 ddlm}  |d|z   d          }t	          ||          } ||| j                  } n# t          $ r;}t          j        d|d|d	           t          d
|d|d	           Y d}~d}~ww xY wt          j
        d           t          d           t          j        d           |S )z0 setup view based on the config and commandline Viewr   )import_moduler   DistUpgrade)rH   r   zcan't import view 'z' ()zcan't load z (Nz!No view can be imported, abortingr   )r   getlist	importlibrn   getattrr   	Exceptionr:   warningprintr]   rD   exit)	rF   rG   rH   requested_viewrn   
view_modul
view_classinstancerj   s	            r   
setup_viewr|      s.    #+,V^^F6-J-JJ   		>//////&s>'9=IIJ !^<<J!zIIIHE 	> 	> 	>OO^^^AAANOOOE...!!!<========	> 	9:::1222Os   7A
B$)1BB$c                     d} 	 t          j        ddgt           j        d                                          d         }t	          j        d|z             n%# t          $ r t	          j        d           Y d	S w xY w| |v r.t	          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|           d	S )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-lsTrX   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')ra   rb   rc   rd   r:   r^   rf   r=   r*   execvenvironrD   argv)
SCREENNAMEoutcmds      r   %run_new_gnu_screen_window_or_reattachr      s3   
 8JeZ_#% % %%0[]]16 	-34444   ./// S@AAA
"hdD*%MNNN-0BJ+,  !X&C L.4555H$$$$$s   AA A98A9c                  r   t                      \  } }t          | j                  }t          | |          }ddlm} t          j        d|z             t          j	        d           | j        | j        dk    rFt          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        |j                   | j        r<|                                st7          j        d           t7          j        d           t;          |           |                                rdS dS )z main method r   )VERSIONz%release-upgrader version '%s' startedzubuntu-release-upgraderNr   mor   NEEDRESTART_SUSPENDy)DistUpgradeController)r   r   )r   r   r   rN   DistUpgradeVersionr   r:   r=   r   
textdomainr*   r+   r7   getcwdbindtextdomainr|   needs_screenr   disable_gnu_screenr   getenvr   atexitregister_enableAptCronJobr   doPartialUpgraderD   rw   rk   run)	rF   argsrG   rH   r   	localedirviewr   apps	            r   mainr      s    %&&OWdw//F7F++F++++++L87BCCC0111'/S"8"8GLLd33	8)DDD gvv..D 	 0(BJ66& 7-/// 9*++ 0,/
()<<<<<<

gw
G
G
GC
OC)***  ##%% 	HQKKK f wwyy q1r   )r(   r   r   r.   r:   r*   r5   ra   rD   r   optparser   r   SYSTEM_DIRSDistUpgradeConfigParserr   r   rN   rk   r|   r   r    r   r   <module>r      s  , 


     				      



       ! ! ! ! ! !            
 
 
 7 6 6 6 6 6  .  B. . .4  4% % %B. . . . .r   