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:
Paul Eggleton 2018-03-01 17:22:39 +13:00
parent 034d66ab5a
commit d4c400f7bf

View File

@ -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,18 +94,28 @@ 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:
for item in maintplan.maintenanceplanlayerbranch_set.all():
layerbranch = item.layerbranch
sys.path = origsyspath
(tinfoil, d, recipes) = load_recipes(layerbranch, bitbakepath, (tinfoil, d, recipes) = load_recipes(layerbranch, bitbakepath,
fetchdir, settings, logger) fetchdir, settings, logger)
try:
if not recipes: if not recipes:
tinfoil.shutdown()
continue continue
utils.setup_core_layer_sys_path(settings, layerbranch.branch.name)
from oe import distro_check from oe import distro_check
logger.debug("Downloading distro's package information ...") logger.debug("Downloading distro's package information ...")
distro_check.create_distro_packages_list(fetchdir, d) distro_check.create_distro_packages_list(fetchdir, d)
@ -139,7 +142,7 @@ if __name__=="__main__":
recipedistro.save() recipedistro.save()
logger.debug('%s: layer branch %s, add distro %s alias %s' % (pn, logger.debug('%s: layer branch %s, add distro %s alias %s' % (pn,
str(layerbranch), distro, alias)) str(layerbranch), distro, alias))
finally:
tinfoil.shutdown() tinfoil.shutdown()
if options.dry_run: if options.dry_run:
raise DryRunRollbackException raise DryRunRollbackException