def Unpack(Data_File=None): Preinst = '%s/%s' % (TTS.UPSTREAM['update_script_dir'], 'preinst') Postinst = '%s/%s' % (TTS.UPSTREAM['update_script_dir'], 'postinst') if not Data_File: Data_File = __data_file() if not Data_File or not os.path.exists(Data_File): raise TTE.UnpackException("Can't find Data_File %s" % Data_File) # check for control.tar section Control_Files = False File_List, Errors = TTU.popen_wrapper(['/bin/tar', '-tf', Data_File], sudo=False) if re.search('(?m)^control.tar', File_List): Control_Files = True if Control_Files: __open_control(Data_File) __run_control(Preinst) # unpack the data.tar into root File_List, Errors = TTU.tar_pipeline( arglist1=[ '/bin/tar', '--directory', '/tmp', '-xvOf', Data_File, # O to stdout 'data.tar' ], arglist2=[ '/usr/bin/sudo', '-u', 'root', # well, this is like handing the user a gun... '/bin/tar', '--directory', '/', '--no-overwrite-dir', # so we don't accidentally hose up directory perms '-xvf', '-' ], ) submit_to_smtpd( Destination='root@localhost', Payload=File_List, Subject='Installed files from update to %s' % Version(Data_File), From='Sysop <root>', ) # FIXME: email the file list to the admin? if Errors and not re.search('Removing\ leading', Errors): raise TTE.UnpackException('data.tar unpacking problem: %s' % Errors) if Control_Files: __run_control(Postinst) return True
def __open_control(DF=None): """ unpack control.tar files into update_script_dir """ File_List, Errors = TTU.tar_pipeline( arglist1=['/bin/tar', '-xvOf', DF, # O to stdout 'control.tar'], arglist2=['/bin/tar', '--directory', TTS.UPSTREAM['update_script_dir'], '-xvf', '-'], ) for F in File_List.split('\n'): logger.debug(F) if Errors and not re.search('Removing\ leading', Errors): raise TTE.PreInstException('control.tar unpacking problem: %s' % Errors)
def Unpack(Data_File=None): Preinst = '%s/%s' % (TTS.UPSTREAM['update_script_dir'], 'preinst') Postinst = '%s/%s' % (TTS.UPSTREAM['update_script_dir'], 'postinst') if not Data_File: Data_File = __data_file() if not Data_File or not os.path.exists(Data_File): raise TTE.UnpackException("Can't find Data_File %s" % Data_File) # check for control.tar section Control_Files = False File_List, Errors = TTU.popen_wrapper(['/bin/tar', '-tf', Data_File], sudo=False) if re.search('(?m)^control.tar', File_List): Control_Files = True if Control_Files: __open_control(Data_File) __run_control(Preinst) # unpack the data.tar into root File_List, Errors = TTU.tar_pipeline( arglist1=['/bin/tar', '--directory', '/tmp', '-xvOf', Data_File, # O to stdout 'data.tar'], arglist2=['/usr/bin/sudo', '-u', 'root', # well, this is like handing the user a gun... '/bin/tar', '--directory', '/', '--no-overwrite-dir', # so we don't accidentally hose up directory perms '-xvf', '-'], ) submit_to_smtpd( Destination='root@localhost', Payload=File_List, Subject='Installed files from update to %s' % Version(Data_File), From='Sysop <root>', ) # FIXME: email the file list to the admin? if Errors and not re.search('Removing\ leading', Errors): raise TTE.UnpackException('data.tar unpacking problem: %s' % Errors) if Control_Files: __run_control(Postinst) return True
def __open_control(DF=None): """ unpack control.tar files into update_script_dir """ File_List, Errors = TTU.tar_pipeline( arglist1=[ '/bin/tar', '-xvOf', DF, # O to stdout 'control.tar' ], arglist2=[ '/bin/tar', '--directory', TTS.UPSTREAM['update_script_dir'], '-xvf', '-' ], ) for F in File_List.split('\n'): logger.debug(F) if Errors and not re.search('Removing\ leading', Errors): raise TTE.PreInstException('control.tar unpacking problem: %s' % Errors)