mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-19 20:59:01 +02:00
rrs/tools/rrs_upgrade_history.py: WORKAROUND Run recipe parse as different proccess.
When runs recipe parse with different revisions in same process it generates errors due to cooker parser uses global data cache's. Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
This commit is contained in:
parent
cbdfaa0e39
commit
5df636a9c3
|
@ -33,6 +33,7 @@ fetchdir = settings.LAYER_FETCH_DIR
|
||||||
if not fetchdir:
|
if not fetchdir:
|
||||||
logger.error("Please set LAYER_FETCH_DIR in settings.py")
|
logger.error("Please set LAYER_FETCH_DIR in settings.py")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
branch_name_tmp = "recipe_upgrades"
|
||||||
|
|
||||||
# setup bitbake
|
# setup bitbake
|
||||||
bitbakepath = os.path.join(fetchdir, 'bitbake')
|
bitbakepath = os.path.join(fetchdir, 'bitbake')
|
||||||
|
@ -40,6 +41,8 @@ sys.path.insert(0, os.path.join(bitbakepath, 'lib'))
|
||||||
from bb import BBHandledException
|
from bb import BBHandledException
|
||||||
from bb.utils import vercmp_string
|
from bb.utils import vercmp_string
|
||||||
|
|
||||||
|
import multiprocessing as mp
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Store upgrade into RecipeUpgrade model.
|
Store upgrade into RecipeUpgrade model.
|
||||||
"""
|
"""
|
||||||
|
@ -135,6 +138,64 @@ def _get_recipes_filenames(ct, repodir, layerdir, logger):
|
||||||
|
|
||||||
return ct_files
|
return ct_files
|
||||||
|
|
||||||
|
def do_initial(layerbranch, ct, logger):
|
||||||
|
layer = layerbranch.layer
|
||||||
|
urldir = layer.get_fetch_dir()
|
||||||
|
repodir = os.path.join(fetchdir, urldir)
|
||||||
|
layerdir = os.path.join(repodir, layerbranch.vcs_subdir)
|
||||||
|
|
||||||
|
utils.runcmd("git checkout %s -b %s -f" % (ct, branch_name_tmp),
|
||||||
|
repodir, logger=logger)
|
||||||
|
utils.runcmd("git clean -dfx", repodir, logger=logger)
|
||||||
|
|
||||||
|
title = "Initial import at 1.6 release start."
|
||||||
|
info = "No maintainer;;Mon, 11 Nov 2013 00:00:00 +0000;Mon, 11 Nov 2013 00:00:00 +0000"
|
||||||
|
|
||||||
|
(tinfoil, d, recipes) = load_recipes(layerbranch, bitbakepath,
|
||||||
|
fetchdir, settings, logger, nocheckout=True)
|
||||||
|
|
||||||
|
for recipe_data in recipes:
|
||||||
|
_create_upgrade(recipe_data, layerbranch, '', title,
|
||||||
|
info, logger, initial=True)
|
||||||
|
|
||||||
|
tinfoil.shutdown()
|
||||||
|
|
||||||
|
utils.runcmd("git checkout master -f", repodir, logger=logger)
|
||||||
|
utils.runcmd("git branch -D %s" % (branch_name_tmp), repodir, logger=logger)
|
||||||
|
|
||||||
|
def do_loop(layerbranch, ct, logger):
|
||||||
|
layer = layerbranch.layer
|
||||||
|
urldir = layer.get_fetch_dir()
|
||||||
|
repodir = os.path.join(fetchdir, urldir)
|
||||||
|
layerdir = os.path.join(repodir, layerbranch.vcs_subdir)
|
||||||
|
|
||||||
|
utils.runcmd("git checkout %s -b %s -f" % (ct, branch_name_tmp),
|
||||||
|
repodir, logger=logger)
|
||||||
|
utils.runcmd("git clean -dfx", repodir, logger=logger)
|
||||||
|
|
||||||
|
fns = _get_recipes_filenames(ct, repodir, layerdir, logger)
|
||||||
|
if not fns:
|
||||||
|
utils.runcmd("git checkout master -f", repodir, logger=logger)
|
||||||
|
utils.runcmd("git branch -D %s" % (branch_name_tmp), repodir, logger=logger)
|
||||||
|
return
|
||||||
|
|
||||||
|
(tinfoil, d, recipes) = load_recipes(layerbranch, bitbakepath,
|
||||||
|
fetchdir, settings, logger, recipe_files=fns,
|
||||||
|
nocheckout=True)
|
||||||
|
|
||||||
|
title = utils.runcmd("git log --format='%s' -n 1 " + ct,
|
||||||
|
repodir, logger=logger)
|
||||||
|
info = utils.runcmd("git log --format='%an;%ae;%ad;%cd' --date=rfc -n 1 " \
|
||||||
|
+ ct, destdir=repodir, logger=logger)
|
||||||
|
for recipe_data in recipes:
|
||||||
|
_create_upgrade(recipe_data, layerbranch, ct, title,
|
||||||
|
info, logger)
|
||||||
|
tinfoil.shutdown()
|
||||||
|
|
||||||
|
utils.runcmd("git checkout master -f", repodir, logger=logger)
|
||||||
|
utils.runcmd("git branch -D %s" % (branch_name_tmp), repodir, logger=logger)
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Upgrade history handler.
|
Upgrade history handler.
|
||||||
"""
|
"""
|
||||||
|
@ -152,16 +213,15 @@ def upgrade_history(options, logger):
|
||||||
since = (now - timedelta(days=8)).strftime("%Y-%m-%d")
|
since = (now - timedelta(days=8)).strftime("%Y-%m-%d")
|
||||||
|
|
||||||
# do
|
# do
|
||||||
branch_name_tmp = "recipe_upgrades"
|
|
||||||
for layerbranch in LayerBranch.objects.all():
|
for layerbranch in LayerBranch.objects.all():
|
||||||
layer = layerbranch.layer
|
layer = layerbranch.layer
|
||||||
urldir = layer.get_fetch_dir()
|
urldir = layer.get_fetch_dir()
|
||||||
repodir = os.path.join(fetchdir, urldir)
|
repodir = os.path.join(fetchdir, urldir)
|
||||||
layerdir = os.path.join(repodir, layerbranch.vcs_subdir)
|
layerdir = os.path.join(repodir, layerbranch.vcs_subdir)
|
||||||
|
|
||||||
utils.runcmd("git checkout origin/master -f", repodir)
|
|
||||||
## try to delete temp_branch if exists
|
## try to delete temp_branch if exists
|
||||||
try:
|
try:
|
||||||
|
utils.runcmd("git checkout origin/master -f", repodir)
|
||||||
utils.runcmd("git branch -D %s" % (branch_name_tmp), repodir,
|
utils.runcmd("git branch -D %s" % (branch_name_tmp), repodir,
|
||||||
logger=logger)
|
logger=logger)
|
||||||
except:
|
except:
|
||||||
|
@ -177,55 +237,23 @@ def upgrade_history(options, logger):
|
||||||
if options.initial:
|
if options.initial:
|
||||||
logger.debug("Adding initial upgrade history ....")
|
logger.debug("Adding initial upgrade history ....")
|
||||||
|
|
||||||
title = "Initial import at 1.6 release start."
|
|
||||||
info = "No maintainer;;Mon, 11 Nov 2013 00:00:00 +0000;Mon, 11 Nov 2013 00:00:00 +0000"
|
|
||||||
|
|
||||||
ct = commit_list.pop(0)
|
ct = commit_list.pop(0)
|
||||||
utils.runcmd("git checkout %s -b %s -f" % (ct, branch_name_tmp),
|
|
||||||
repodir, logger=logger)
|
|
||||||
utils.runcmd("git clean -dfx", repodir, logger=logger)
|
|
||||||
(tinfoil, d, recipes) = load_recipes(layerbranch, bitbakepath,
|
|
||||||
fetchdir, settings, logger, nocheckout=True)
|
|
||||||
|
|
||||||
for recipe_data in recipes:
|
# XXX: To avoid cooker parser problems due to load multiple instances
|
||||||
_create_upgrade(recipe_data, layerbranch, '', title,
|
# of cooker parser with different metadata revisions.
|
||||||
info, logger, initial=True)
|
p = mp.Process(target=do_initial, args=(layerbranch, ct, logger,))
|
||||||
|
p.start()
|
||||||
tinfoil.shutdown()
|
p.join()
|
||||||
|
|
||||||
utils.runcmd("git checkout master -f", repodir, logger=logger)
|
|
||||||
utils.runcmd("git branch -D %s" % (branch_name_tmp), repodir, logger=logger)
|
|
||||||
|
|
||||||
logger.debug("Adding upgrade history from %s to %s ..." % (since, today))
|
logger.debug("Adding upgrade history from %s to %s ..." % (since, today))
|
||||||
for ct in commit_list:
|
for ct in commit_list:
|
||||||
if ct:
|
if ct:
|
||||||
logger.debug("Analysing commit %s ..." % ct)
|
logger.debug("Analysing commit %s ..." % ct)
|
||||||
|
# XXX: To avoid cooker parser problems due to load multiple instances
|
||||||
utils.runcmd("git checkout %s -b %s -f" % (ct, branch_name_tmp),
|
# of cooker parser with different metadata revisions.
|
||||||
repodir, logger=logger)
|
p = mp.Process(target=do_loop, args=(layerbranch, ct, logger,))
|
||||||
utils.runcmd("git clean -dfx", repodir, logger=logger)
|
p.start()
|
||||||
|
p.join()
|
||||||
fns = _get_recipes_filenames(ct, repodir, layerdir, logger)
|
|
||||||
if not fns:
|
|
||||||
utils.runcmd("git checkout master -f", repodir, logger=logger)
|
|
||||||
utils.runcmd("git branch -D %s" % (branch_name_tmp), repodir, logger=logger)
|
|
||||||
continue
|
|
||||||
|
|
||||||
(tinfoil, d, recipes) = load_recipes(layerbranch, bitbakepath,
|
|
||||||
fetchdir, settings, logger, recipe_files=fns,
|
|
||||||
nocheckout=True)
|
|
||||||
|
|
||||||
title = utils.runcmd("git log --format='%s' -n 1 " + ct,
|
|
||||||
repodir, logger=logger)
|
|
||||||
info = utils.runcmd("git log --format='%an;%ae;%ad;%cd' --date=rfc -n 1 " \
|
|
||||||
+ ct, destdir=repodir, logger=logger)
|
|
||||||
for recipe_data in recipes:
|
|
||||||
_create_upgrade(recipe_data, layerbranch, ct, title,
|
|
||||||
info, logger)
|
|
||||||
tinfoil.shutdown()
|
|
||||||
|
|
||||||
utils.runcmd("git checkout master -f", repodir, logger=logger)
|
|
||||||
utils.runcmd("git branch -D %s" % (branch_name_tmp), repodir, logger=logger)
|
|
||||||
|
|
||||||
transaction.commit()
|
transaction.commit()
|
||||||
transaction.leave_transaction_management()
|
transaction.leave_transaction_management()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user