mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-19 20:59:01 +02:00
rrs_distros: support maintenance plans and remove poky hardcoding
Remove hardcoded references to the poky repository, and process layerbranches for all enabled maintenance plans. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
parent
034d66ab5a
commit
d4c400f7bf
|
@ -14,7 +14,7 @@ import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__))))
|
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__))))
|
||||||
from common import common_setup, update_repo, load_recipes, \
|
from common import common_setup, load_recipes, \
|
||||||
get_pv_type, get_logger, DryRunRollbackException
|
get_pv_type, get_logger, DryRunRollbackException
|
||||||
common_setup()
|
common_setup()
|
||||||
from layerindex import utils
|
from layerindex import utils
|
||||||
|
@ -29,20 +29,13 @@ 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)
|
||||||
|
|
||||||
update_repo(settings.LAYER_FETCH_DIR, 'poky', settings.POKY_REPO_URL,
|
|
||||||
True, logger)
|
|
||||||
|
|
||||||
# setup bitbake path
|
# setup bitbake path
|
||||||
bitbakepath = os.path.join(fetchdir, 'bitbake')
|
bitbakepath = os.path.join(fetchdir, 'bitbake')
|
||||||
sys.path.insert(0, os.path.join(bitbakepath, 'lib'))
|
sys.path.insert(0, os.path.join(bitbakepath, 'lib'))
|
||||||
|
|
||||||
# setup poky path
|
|
||||||
pokypath = os.path.join(fetchdir, 'poky')
|
|
||||||
sys.path.insert(0, os.path.join(pokypath, 'meta', 'lib'))
|
|
||||||
|
|
||||||
|
|
||||||
from layerindex.models import Recipe, LayerBranch
|
from layerindex.models import Recipe, LayerBranch
|
||||||
from rrs.models import RecipeDistro
|
from rrs.models import RecipeDistro, MaintenancePlan
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Searches the recipe's package in major distributions.
|
Searches the recipe's package in major distributions.
|
||||||
|
@ -101,46 +94,56 @@ if __name__=="__main__":
|
||||||
options, args = parser.parse_args(sys.argv)
|
options, args = parser.parse_args(sys.argv)
|
||||||
logger.setLevel(options.loglevel)
|
logger.setLevel(options.loglevel)
|
||||||
|
|
||||||
|
maintplans = MaintenancePlan.objects.filter(updates_enabled=True)
|
||||||
|
if not maintplans.exists():
|
||||||
|
logger.error('No enabled maintenance plans found')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
logger.debug("Starting recipe distros update ...")
|
logger.debug("Starting recipe distros update ...")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
origsyspath = sys.path
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
for layerbranch in LayerBranch.objects.all():
|
for maintplan in maintplans:
|
||||||
(tinfoil, d, recipes) = load_recipes(layerbranch, bitbakepath,
|
for item in maintplan.maintenanceplanlayerbranch_set.all():
|
||||||
fetchdir, settings, logger)
|
layerbranch = item.layerbranch
|
||||||
|
sys.path = origsyspath
|
||||||
if not recipes:
|
(tinfoil, d, recipes) = load_recipes(layerbranch, bitbakepath,
|
||||||
tinfoil.shutdown()
|
fetchdir, settings, logger)
|
||||||
continue
|
|
||||||
|
|
||||||
from oe import distro_check
|
|
||||||
logger.debug("Downloading distro's package information ...")
|
|
||||||
distro_check.create_distro_packages_list(fetchdir, d)
|
|
||||||
pkglst_dir = os.path.join(fetchdir, "package_lists")
|
|
||||||
|
|
||||||
RecipeDistro.objects.filter(recipe__layerbranch = layerbranch).delete()
|
|
||||||
|
|
||||||
for recipe_data in recipes:
|
|
||||||
pn = recipe_data.getVar('PN', True)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
recipe = Recipe.objects.get(pn = pn, layerbranch = layerbranch)
|
if not recipes:
|
||||||
except:
|
continue
|
||||||
logger.warn('%s: layer branch %s, NOT found' % (pn,
|
|
||||||
str(layerbranch)))
|
|
||||||
continue
|
|
||||||
|
|
||||||
distro_info = search_package_in_distros(pkglst_dir, recipe, recipe_data)
|
utils.setup_core_layer_sys_path(settings, layerbranch.branch.name)
|
||||||
for distro, alias in distro_info.items():
|
|
||||||
recipedistro = RecipeDistro()
|
|
||||||
recipedistro.recipe = recipe
|
|
||||||
recipedistro.distro = distro
|
|
||||||
recipedistro.alias = alias
|
|
||||||
recipedistro.save()
|
|
||||||
logger.debug('%s: layer branch %s, add distro %s alias %s' % (pn,
|
|
||||||
str(layerbranch), distro, alias))
|
|
||||||
|
|
||||||
tinfoil.shutdown()
|
from oe import distro_check
|
||||||
|
logger.debug("Downloading distro's package information ...")
|
||||||
|
distro_check.create_distro_packages_list(fetchdir, d)
|
||||||
|
pkglst_dir = os.path.join(fetchdir, "package_lists")
|
||||||
|
|
||||||
|
RecipeDistro.objects.filter(recipe__layerbranch = layerbranch).delete()
|
||||||
|
|
||||||
|
for recipe_data in recipes:
|
||||||
|
pn = recipe_data.getVar('PN', True)
|
||||||
|
|
||||||
|
try:
|
||||||
|
recipe = Recipe.objects.get(pn = pn, layerbranch = layerbranch)
|
||||||
|
except:
|
||||||
|
logger.warn('%s: layer branch %s, NOT found' % (pn,
|
||||||
|
str(layerbranch)))
|
||||||
|
continue
|
||||||
|
|
||||||
|
distro_info = search_package_in_distros(pkglst_dir, recipe, recipe_data)
|
||||||
|
for distro, alias in distro_info.items():
|
||||||
|
recipedistro = RecipeDistro()
|
||||||
|
recipedistro.recipe = recipe
|
||||||
|
recipedistro.distro = distro
|
||||||
|
recipedistro.alias = alias
|
||||||
|
recipedistro.save()
|
||||||
|
logger.debug('%s: layer branch %s, add distro %s alias %s' % (pn,
|
||||||
|
str(layerbranch), distro, alias))
|
||||||
|
finally:
|
||||||
|
tinfoil.shutdown()
|
||||||
if options.dry_run:
|
if options.dry_run:
|
||||||
raise DryRunRollbackException
|
raise DryRunRollbackException
|
||||||
except DryRunRollbackException:
|
except DryRunRollbackException:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user