示例#1
0
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()
示例#2
0
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
示例#3
0
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
示例#4
0
def delete_tmp_dir():
    '''
    Deletes TMP_DIR directory
    '''
    delete_dir(TMP_DIR)
示例#5
0
def delete_tmp_dir():
    '''
    Deletes TMP_DIR directory
    '''
    delete_dir(TMP_DIR)