djeuscan/tasks: fix update_portage() and layman --sync

This commit is contained in:
Corentin Chary 2012-11-04 12:30:22 +01:00
parent df1da16e45
commit 5c460e895a
2 changed files with 26 additions and 15 deletions

View File

@ -1,9 +1,10 @@
import os import os
import sys
from django.conf import settings from django.conf import settings
def _launch_command(cmd, logger=None): def _launch_command(cmd, env=None, logger=None):
""" """
Helper for launching shell commands inside tasks Helper for launching shell commands inside tasks
""" """
@ -11,7 +12,7 @@ def _launch_command(cmd, logger=None):
import subprocess import subprocess
import select import select
fp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) fp = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
mask = select.EPOLLIN | select.EPOLLHUP | select.EPOLLERR mask = select.EPOLLIN | select.EPOLLHUP | select.EPOLLERR
@ -51,7 +52,7 @@ def emerge_sync(logger):
""" """
cmd = ["emerge", "--sync", "--root", settings.PORTAGE_ROOT, cmd = ["emerge", "--sync", "--root", settings.PORTAGE_ROOT,
"--config-root", settings.PORTAGE_CONFIGROOT] "--config-root", settings.PORTAGE_CONFIGROOT]
return _launch_command(cmd, logger) return _launch_command(cmd, logger=logger)
def emerge_metadata(logger): def emerge_metadata(logger):
@ -60,7 +61,7 @@ def emerge_metadata(logger):
""" """
cmd = ["emerge", "--metadata", "--root", settings.PORTAGE_ROOT, cmd = ["emerge", "--metadata", "--root", settings.PORTAGE_ROOT,
"--config-root", settings.PORTAGE_CONFIGROOT] "--config-root", settings.PORTAGE_CONFIGROOT]
return _launch_command(cmd, logger) return _launch_command(cmd, logger=logger)
def layman_sync(logger, cache=True): def layman_sync(logger, cache=True):
@ -70,20 +71,23 @@ def layman_sync(logger, cache=True):
from layman import Layman from layman import Layman
import shutil import shutil
l = Layman(config=settings.LAYMAN_CONFIG) l = Layman(stderr=sys.__stderr__, stdin=sys.__stdin__, stdout=sys.__stdout__,
config=settings.LAYMAN_CONFIG, root="/")
installed_overlays = l.get_installed() installed_overlays = l.get_installed()
for overlay in installed_overlays: for overlay in installed_overlays:
logger.info('Cleaning cache for overlay %s...' % overlay) logger.info('Cleaning cache for overlay %s...' % overlay)
overlay_path = os.path.join(l.config['storage'], overlay) overlay_path = os.path.join(l.config['storage'], overlay)
shutil.rmtree(os.path.join(overlay_path, 'metadata/cache'), True) shutil.rmtree(os.path.join(overlay_path, 'metadata'), True)
shutil.rmtree(os.path.join(overlay_path, 'metadata/md5-cache'), True) shutil.rmtree(os.path.join(overlay_path, 'profiles'), True)
# FIXME, try to find a way to log layman output... # FIXME, try to find a way to log layman output...
#l.sync(installed_overlays, output_results=False) #l.sync(installed_overlays, output_results=False)
env = dict(os.environ)
env['ROOT'] = '/'
cmd = ['layman', '-S', '--config', settings.LAYMAN_CONFIG] cmd = ['layman', '-S', '--config', settings.LAYMAN_CONFIG]
_launch_command(cmd, logger) _launch_command(cmd, env=env, logger=logger)
cmd = ['egencache', '--jobs', "%s" % settings.EGENCACHE_JOBS, cmd = ['egencache', '--jobs', "%s" % settings.EGENCACHE_JOBS,
'--rsync', '--config-root', settings.PORTAGE_CONFIGROOT, '--rsync', '--config-root', settings.PORTAGE_CONFIGROOT,
@ -95,7 +99,7 @@ def layman_sync(logger, cache=True):
repo_path = os.path.join(overlay_path, 'profiles/repo_name') repo_path = os.path.join(overlay_path, 'profiles/repo_name')
if not os.path.exists(repo_path): if not os.path.exists(repo_path):
continue continue
_launch_command(cmd + ['--repo', overlay], logger) _launch_command(cmd + ['--repo', overlay], logger=logger)
def eix_update(logger): def eix_update(logger):
@ -103,7 +107,7 @@ def eix_update(logger):
Launches eix-update Launches eix-update
""" """
cmd = ["eix-update"] cmd = ["eix-update"]
return _launch_command(cmd, logger) return _launch_command(cmd, logger=logger)
def update_portage_trees(logger=None): def update_portage_trees(logger=None):

View File

@ -185,11 +185,18 @@ def update_portage(packages=None):
prefetch=True prefetch=True
) )
scan_metadata(packages=None, populate=True) scan_metadata(packages=None, populate=True)
if updated_packages:
group_chunks(scan_upstream, updated_packages, if not updated_packages:
settings.TASKS_UPSTREAM_GROUPS, # Simple/Fast path
purge_versions=True)() update_counters(fast=False)
update_counters(fast=False) return
(
group_chunks(scan_upstream, updated_packages,
settings.TASKS_UPSTREAM_GROUPS,
purge_versions=True) |
update_counters.si(fast=False)
)()
""" Currently broken """ Currently broken
update_portage_trees() update_portage_trees()