示例#1
0
def layman_sync(logger, cache=True):
    """
    Syncs Layman repos
    """
    from layman import Layman
    import shutil

    l = Layman(stderr=sys.__stderr__,
               stdin=sys.__stdin__,
               stdout=sys.__stdout__,
               config=settings.LAYMAN_CONFIG,
               root="/")

    installed_overlays = l.get_installed()

    for overlay in installed_overlays:
        logger.info('Cleaning cache for overlay %s...' % overlay)
        overlay_path = os.path.join(l.config['storage'], overlay)
        dirs = [
            os.path.join(overlay_path, 'metadata/cache'),
            os.path.join(overlay_path, 'metadata/md5-cache')
        ]
        files = [os.path.join(overlay_path, 'profiles/use.local.desc')]
        for dirname in dirs:
            if os.path.isdir(dirname):
                shutil.rmtree(dirname, True)
        for filename in files:
            if os.path.exists(filename):
                os.remove(filename)

    # FIXME, try to find a way to log layman output...
    #l.sync(installed_overlays, output_results=False)
    env = dict(os.environ)
    env['ROOT'] = '/'
    cmd = ['layman', '-S', '--config', settings.LAYMAN_CONFIG]
    _launch_command(cmd, env=env, logger=logger)

    cmd = [
        'egencache', '--jobs',
        "%s" % settings.EGENCACHE_JOBS, '--rsync', '--config-root',
        settings.PORTAGE_CONFIGROOT, '--update', '--update-use-local-desc'
    ]

    for overlay in installed_overlays:
        logger.info('Generating cache for overlay %s...' % overlay)
        overlay_path = os.path.join(l.config['storage'], overlay)
        repo_path = os.path.join(overlay_path, 'profiles/repo_name')
        if not os.path.exists(repo_path):
            continue
        _launch_command(cmd + ['--repo', overlay], logger=logger)
示例#2
0
def populate_overlays(logger):
    l = Layman(stderr=sys.__stderr__, stdin=sys.__stdin__,
               stdout=sys.__stdout__, config=settings.LAYMAN_CONFIG, root="/")
    installed_overlays = l.get_installed()
    info = l.get_all_info(installed_overlays)
    for overlay in installed_overlays:
        if not overlay:
            continue
        obj, created = Overlay.objects.get_or_create(name=overlay)
        if overlay in info and type(info[overlay]) == dict:
            obj.description = info[overlay]["description"]
            obj.homepage = info[overlay]["homepage"]
        obj.overlay_path = os.path.join(l.config['storage'], overlay)
        obj.save()
        if created:
            logger.info("+ [o] %s", overlay)
示例#3
0
def layman_sync(config):
    # check for an available layman api
    try:
        from layman import Layman
    except ImportError:
        # run it in a subprocess
        if config['verbose'] >= 0:
            emsg("Doing " + config['layman-cmd'] + " now", config)

        if config['verbose'] == 1:
            errorcode = os.system(config['layman-cmd'] + " | tee " +
                                  laymanlog_sync + " 2>&1")
        else:
            errorcode = os.system(config['layman-cmd'] + " > " +
                                  laymanlog_sync + " 2>&1")

        if errorcode != 0:
            error("'" + config['layman-cmd'] + "' failed, see " +
                  laymanlog_sync + " for errors",
                  fatal=False)
            print("")
            return False, []
        return True, []
    # run the api to sync
    emsg("Running the Layman API", config)
    if config['verbose'] < 1:
        quietness = 0
    else:
        quietness = 4
    _layman = Layman(stdout=config['stdout'],
                     stderr=config['stderr'],
                     quiet=config['verbose'] < 1,
                     quietness=quietness,
                     verbose=config['verbose'] > 0,
                     nocolor=config['nocolor'])
    repos = _layman.get_installed()
    success = _layman.sync(repos, output_results=config['verbose'] > 0)
    warnings = _layman.sync_results[1]
    if not success:
        error("Syncing with the layman api "\
             "failed.\n   Failures were:", fatal=False)
        fatals = _layman.sync_results[2]
        for ovl, result in fatals:
            error(result, fatal=False)

    return success, warnings
示例#4
0
def layman_sync(logger, cache=True):
    """
    Syncs Layman repos
    """
    from layman import Layman
    import shutil

    l = Layman(stderr=sys.__stderr__, stdin=sys.__stdin__,
               stdout=sys.__stdout__, config=settings.LAYMAN_CONFIG, root="/")

    installed_overlays = l.get_installed()

    for overlay in installed_overlays:
        logger.info('Cleaning cache for overlay %s...' % overlay)
        overlay_path = os.path.join(l.config['storage'], overlay)
        dirs = [os.path.join(overlay_path, 'metadata/cache'),
                os.path.join(overlay_path, 'metadata/md5-cache')]
        files = [os.path.join(overlay_path, 'profiles/use.local.desc')]
        for dirname in dirs:
            if os.path.isdir(dirname):
                shutil.rmtree(dirname, True)
        for filename in files:
            if os.path.exists(filename):
                os.remove(filename)

    # FIXME, try to find a way to log layman output...
    #l.sync(installed_overlays, output_results=False)
    env = dict(os.environ)
    env['ROOT'] = '/'
    cmd = ['layman', '-S', '--config', settings.LAYMAN_CONFIG]
    _launch_command(cmd, env=env, logger=logger)

    cmd = ['egencache', '--jobs', "%s" % settings.EGENCACHE_JOBS,
           '--rsync', '--config-root', settings.PORTAGE_CONFIGROOT,
           '--update', '--update-use-local-desc']

    for overlay in installed_overlays:
        logger.info('Generating cache for overlay %s...' % overlay)
        overlay_path = os.path.join(l.config['storage'], overlay)
        repo_path = os.path.join(overlay_path, 'profiles/repo_name')
        if not os.path.exists(repo_path):
            continue
        _launch_command(cmd + ['--repo', overlay], logger=logger)
示例#5
0
def populate_overlays(logger):
    l = Layman(stderr=sys.__stderr__,
               stdin=sys.__stdin__,
               stdout=sys.__stdout__,
               config=settings.LAYMAN_CONFIG,
               root="/")
    installed_overlays = l.get_installed()
    info = l.get_all_info(installed_overlays)
    for overlay in installed_overlays:
        if not overlay:
            continue
        obj, created = Overlay.objects.get_or_create(name=overlay)
        if overlay in info:
            obj.description = info[overlay]["description"]
            obj.homepage = info[overlay]["homepage"]
        obj.overlay_path = os.path.join(l.config['storage'], overlay)
        obj.save()
        if created:
            logger.info("+ [o] %s", overlay)
示例#6
0
文件: sync.py 项目: fuzzyray/esearch
def layman_sync(config):
    # check for an available layman api
    try:
        from layman import Layman
    except ImportError:
        # run it in a subprocess
        if config['verbose'] >= 0:
            emsg("Doing " + config['layman-cmd'] +" now", config)

        if config['verbose'] == 1:
            errorcode = os.system(config['layman-cmd'] + " | tee " +
                laymanlog_sync + " 2>&1")
        else:
            errorcode = os.system(config['layman-cmd'] + " > " +
                laymanlog_sync + " 2>&1")

        if errorcode != 0:
            error("'" + config['layman-cmd'] + "' failed, see " +
                laymanlog_sync + " for errors", fatal=False)
            print("")
            return False, []
        return True, []
    # run the api to sync
    emsg("Running the Layman API", config)
    if config['verbose']<1:
        quietness=0
    else:
        quietness=4
    _layman = Layman(stdout=config['stdout'], stderr=config['stderr'],
        quiet=config['verbose']<1, quietness=quietness,
        verbose=config['verbose']>0, nocolor=config['nocolor'])
    repos = _layman.get_installed()
    success = _layman.sync(repos, output_results=config['verbose']>0)
    warnings = _layman.sync_results[1]
    if not success:
        error("Syncing with the layman api "\
             "failed.\n   Failures were:", fatal=False)
        fatals = _layman.sync_results[2]
        for ovl, result in fatals:
            error(result, fatal=False)

    return success, warnings
示例#7
0
文件: helpers.py 项目: EvaSDK/euscan
def get_layman_repos():
    lay = Layman(config=settings.LAYMAN_CONFIG)
    installed_overlays = lay.get_installed()
    return lay.get_all_info(installed_overlays)
示例#8
0
def get_layman_repos():
    lay = Layman(config=settings.LAYMAN_CONFIG)
    installed_overlays = lay.get_installed()
    return lay.get_all_info(installed_overlays)