def do_white_rabbit_stage(flow_params): init_status = Status.get_instance() if not flow_params.get('skip', False): clear_screen() try: rabbit(1, 'left-to-right') except: pass clear_screen() msg = _("{string_username}, follow the white rabbit").format( string_username=init_status.username) typewriter_echo(msg, trailing_linebreaks=2) command = decorate_with_preset('cd rabbithole', 'code') typewriter_echo(_("Type {string_code_to_type}, then [ENTER]").format( string_code_to_type=command), trailing_linebreaks=2) # TODO: open shell rabbithole = "/home/{}/rabbithole".format(init_status.username) ensure_dir(rabbithole) cmd = "sudo -u {} -H bash --init-file {}".format( init_status.username, SUBSHELLRC_PATH) os.system(cmd) delete_dir(rabbithole) reset_overscan() matrix_binary(1, False) set_overscan() clear_screen() init_status.stage = Status.LOVE_STAGE init_status.save()
def upgrade_debian(gui_process): from kano_updater.utils import fix_broken, launch_gui_if_not_running, set_gui_stage # setting up apt-get for non-interactive mode os.environ['DEBIAN_FRONTEND'] = 'noninteractive' # Try to fix any broken packages prior to the upgrade fix_broken("Preparing packages to be upgraded") # apt upgrade gui_process = launch_gui_if_not_running(gui_process) set_gui_stage(4) # try to download all files first, retry in a loop for i in xrange(5): _, _, rc = run_cmd_log('apt-get -y -d dist-upgrade') if rc == 0: break elif i == 4: return -1 set_gui_stage(5) # do the actual update using the downloaded files cmd = 'yes "" | apt-get -y -o Dpkg::Options::="--force-confdef" ' + \ '-o Dpkg::Options::="--force-confold" dist-upgrade' _, debian_err, _ = run_cmd_log(cmd) # apt autoremove gui_process = launch_gui_if_not_running(gui_process) set_gui_stage(6) cmd = 'apt-get -y autoremove --purge' run_cmd_log(cmd) # apt autoclean cmd = 'apt-get -y autoclean' run_cmd_log(cmd) # Try to fix any broken packages after the upgrade fix_broken("Finalising package upgrade") # parsing debian error log if debian_err: err_split = debian_err.splitlines() dirs_delete = [] err_packages = [] for l in err_split: if 'dpkg: warning: unable to delete old directory' in l: parts = l.split("'") dirs_delete.append(parts[1].strip()) if 'dpkg: error processing' in l: parts = l.split('/var/cache/apt/archives/') packagename = parts[1].split()[0].strip()[:-4] err_packages.append(packagename) # remove left-over non-empty directories for dir in dirs_delete: delete_dir(dir) # return err_packages return err_packages return None
def upgrade_debian(gui_process): from kano_updater.utils import fix_broken, launch_gui_if_not_running, set_gui_stage # setting up apt-get for non-interactive mode os.environ['DEBIAN_FRONTEND'] = 'noninteractive' # Try to fix any broken packages prior to the upgrade fix_broken(_("Preparing packages to be upgraded")) # apt upgrade gui_process = launch_gui_if_not_running(gui_process) set_gui_stage(4) # try to download all files first, retry in a loop for i in xrange(5): _, _, rc = run_cmd_log('apt-get -y -d dist-upgrade') if rc == 0: break elif i == 4: return -1 set_gui_stage(5) # do the actual update using the downloaded files cmd = 'yes "" | apt-get -y -o Dpkg::Options::="--force-confdef" ' + \ '-o Dpkg::Options::="--force-confold" dist-upgrade' _, debian_err, _ = run_cmd_log(cmd) # apt autoremove gui_process = launch_gui_if_not_running(gui_process) set_gui_stage(6) cmd = 'apt-get -y autoremove --purge' run_cmd_log(cmd) # apt autoclean cmd = 'apt-get -y autoclean' run_cmd_log(cmd) # Try to fix any broken packages after the upgrade fix_broken(_("Finalising package upgrade")) # parsing debian error log if debian_err: err_split = debian_err.splitlines() dirs_delete = [] err_packages = [] for l in err_split: if 'dpkg: warning: unable to delete old directory' in l: parts = l.split("'") dirs_delete.append(parts[1].strip()) if 'dpkg: error processing' in l: parts = l.split('/var/cache/apt/archives/') packagename = parts[1].split()[0].strip()[:-4] err_packages.append(packagename) # remove left-over non-empty directories for dir in dirs_delete: delete_dir(dir) # return err_packages return err_packages return None
def delete_tmp_dir(): ''' Deletes TMP_DIR directory ''' delete_dir(TMP_DIR)