aboutsummaryrefslogtreecommitdiffstats
path: root/rrs
AgeCommit message (Collapse)Author
2018-05-04rrs_upgrade_history: improve checkout logicPaul Eggleton
* Consolidate the code for checking out a repository, using the newly added utils.checkout_repo() function * Check out a layer's dependencies, not just the layer itself * Only check out if the desired revision isn't already checked out (mostly useful for bitbake which we would otherwise be checking out much more frequently than necessary since it may not have changed even if we've moved to a new commit in the layer). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04Implement layer web repo commit URLPaul Eggleton
The Recipe Reporting System needs to be able to provide links to commits in the web interface for the repository, but we can only do this if we have a custom template URL just like we do for file/tree links, since it's different for different git web interfaces. Add support in all the various places for such a URL and make use of it in the RRS. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: handle linking maintainershipPaul Eggleton
Provide a mechanism set the maintainer for things like gcc-cross-<arch> to the same as gcc. (We do have entries in the .inc file for these, however they aren't useful as they don't match the recipe name when we parse it, and due to the fact that RecipeMaintainer objects link directly to Recipe objects, we can't handle entries that don't map to a real recipe). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/views: replace mimetype with content_typePaul Eggleton
Adapt to this change that happened sometime in Django 1.7. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_maintainer_history: avoid unnecessary checkoutsPaul Eggleton
We don't actually need to check out the repository until we actually analyse a commit, so avoid doing so. Additionally, there's not much point in checking out master at the end, let the next script invocation do that if needed (if it needs to, it should since otherwise there's no guarantee what state the repository is in). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_maintainer_history: add --fullreload optionPaul Eggleton
Add an option that deletes all maintainer history records for the current layer branch so that they can then be reloaded from scratch. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: drop final cleanPaul Eggleton
We don't really need to clean up the repository, we'll take care of it on subsequent runs. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: handle only .inc file changingPaul Eggleton
If a recipe upgrade only consists of a .inc file changing, we were not picking it up, since we were only looking specifically for recipes (.bb). If a .inc file changes, assume all .bb files in the same directory (if any) should be parsed to look for an upgrade. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/tools: ensure recipe parsing code deletes temporary dirPaul Eggleton
load_recipes() was leaving files around in /tmp; on my Fedora system this eventually resulted in /tmp running out of space which we do not want. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: Add debug option to process specific commitPaul Eggleton
Sometimes it's useful to be able to re-try processing a particular commit (generally in conjunction with --dry-run), so add an option to enable that. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: ignore files outside of the layerPaul Eggleton
We were parsing recipes that were in the repository but not inside the actual layer we're dealing with (e.g. we have meta-selftest within the OE-Core repository, containing a number of recipes that are only intended for testing purposes and should not be looked at by this script). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: show text of any exception that blocks parsingPaul Eggleton
If an exception occurs during parsing, let's actually see what kind of exception it was in the output. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: handle broken version numbersPaul Eggleton
In OE-Core revision e0531174119bff21e9014b95ed1bbd0e1c01af26 we accidentally committed a new e2fsprogs recipe with ..bb at the end of its name instead of .bb. This was fixed immediately afterwards, but when the RRS hits this commit, it doesn't fail immediately, but the bogus version "1.43." gets into the database and all subsequent commits touching the e2fsprogs recipe cause bb.utils.vercmp_part() to blow up because one of the version parts in the "previous" version in the database is apparently empty. To work around this and any similar issues, just reject any change that results in such a broken version string (on the assumption that it'll be corrected in a subsequent commit and thus we will get to re-parse the recipe then and therefore not miss the upgrade.) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/tools: use layer index lockPaul Eggleton
We check out different revisions while we do this processing, and so does the layer index update script, so we shouldn't be allowing both to run at once or nasty stuff will happen. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: only look at commits that actually change recipesPaul Eggleton
Since we're now executing a separate script per commit, we should try not to do that unless the commit actually touches recipe files in order to avoid wasting time. (Whilst it's possible that a change to a bbclass might alter what's in the recipe, we can ignore that since we are only concerned with actual upgrades which would always require some sort of change to the recipe or an include file, so we can safely skip commits that don't do that.) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upstream_history: use try...finally to ensure tinfoil is shut downPaul Eggleton
We want tinfoil.shutdown() to be called even if an exception occurs. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: use date/commit of last recipe upgrade importPaul Eggleton
Instead of arbitrarily importing the last 8 days of upgrades, record the date and commit when we do an import, and then use that information the next time the script is run. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: handle multiple recipes with same pn per layerPaul Eggleton
We should expect multiple matches for layerbranch + pn, so use filter() instead of get() and take the first id that matches. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: add a --fullreload optionPaul Eggleton
Add a --fullreload option which deletes all upgrade records for the layerbranch first. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/tools/common.py: ensure we pass a string to loadDataFull()Paul Eggleton
We're calling translate() on the string deep in the bowels of the parsing code and that doesn't work well if the string is unicode, so convert it to a plain string first. That won't work well if the filename is unicode but the chances of that with a recipe is pretty small I would think. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history.py: ensure we shut down tinfoil safelyPaul Eggleton
Use try...finally to ensure we shut down tinfoil, but since we are potentially dealing with older bitbake releases when importing older upgrades, only call shutdown() if it's actually there (and although it's unlikely, guard against the broken shutdown() in fido as we do in the main layer index update script). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history.py: enable to work across python2/3 versionsPaul Eggleton
If you want to go back and get history for the earlier releases (krogoth and previous) then we need to be able to support both python 2 and 3, which practically means we need the same split for this script as we have for the main layer index update script. The catch here is that since we are going back and following the history of changes forward, we basically need to use the same version of bitbake that was current at that time. This works except for around the transition between python 2 to 3 where the metadata lagged behind a bit, so we need to take that into account. In order to keep things generic we have a date field on the maintenance plan layer branch that specifies the date in the metadata where we should switch over to python 3, and then link to PythonEnvironment records that should be used for python 2 and 3 respectively. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/tools: run all tools scripts with python3Paul Eggleton
These scripts should all now be run under python 3, so update the shebangs accordingly. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: add breadcrumb to recipe detail pagePaul Eggleton
Make it possible to get back to the maintenance plan from the recipe detail page. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: handle dependency field differencesPaul Eggleton
The old RRS branch had its own addition of dependency support, but in the mean time we added that to the layer index in the master branch using a different structure. Adapt the RRS recipe detail page to that structure. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04Add link to maintenance plan in layer detailPaul Eggleton
If the RRS is enabled, then add a way to get from the layer detail page to any maintenance plans in which the layer is included. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: add maintenance plan selectionPaul Eggleton
Add a drop-down for selecting the maintenance plan from the recipes page. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: replace fixtures with initial data migrationPaul Eggleton
Fixtures aren't supported in current Django versions. Add some code to the initial migration to add the data instead. Also add releases/milestones up to and including 2.5. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/views: fix SQL parameter in get_reup_by_last_updated()Paul Eggleton
We were passing in a parameter value but not using that in the query. Add a WHERE clause to fix that. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/views: fix case in table namesPaul Eggleton
Table names should be lowercase. I'm unsure if the collation settings have an effect on this, but with the mariadb database I set up here I needed to make this change or else I got errors about missing tables. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/models: handle All missing in milestonesPaul Eggleton
If we call objects.get() with no matching record then the result will be an exception, not a null return, so handle that properly. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: handle maintenance plans in viewsPaul Eggleton
Insert maintenance plan into views, their corresponding URLs and templates. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upstream_email: Adapt to template rendering API changePaul Eggleton
With Django 1.10+, if you use get_template() to retrieve a template, then you can't pass a context when calling .render() on it, you need to pass a dict instead. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upstream_email: reworkPaul Eggleton
* Use maintenance plans to get layerbranches * Use from/to/subject and admin contact from maintenance plan * Use an actual template to render the email (and drop tabulate dependency) * Improve grammar in the email text * Use a single line to represent the most recent commit Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/models: add fields for more flexible email handlingPaul Eggleton
* Add a flag to say whether emails should be sent * Add fields for from/to/subject (to replace what's currently in settings) * Add user link for administrator to replace the hardcoded values in the email template Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/tools: drop update_repo()Paul Eggleton
This function is no longer needed - we now rely upon the layer index's code to do this (update through the update script, and checkout through setup_layer()). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_distros: support maintenance plans and remove poky hardcodingPaul Eggleton
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>
2018-05-04rrs/tools: print debug message when parsing recipesPaul Eggleton
Without this it's not clear what's happening if debug mode is enabled and you are waiting for the parsing step. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upstream_history: properly handle missing RecipePaul Eggleton
If the Recipe object doesn't exist here then an exception will be raised rather than None being returned, and this will also trigger if multiple recipes match. This may have never triggered in the past because this would have been run right after updating all the recipes in the layer and clearing out duplicates (which we were doing earlier), and thus what is in the database would match the recipe files in the repository, assuming no errors occurred during parsing). We can't remove duplicates though so we need to switch over to using filter() and taking the first recipe. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history: drop unused importPaul Eggleton
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upstream_history.py: support maintenance plans and remove poky hardcodingPaul Eggleton
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>
2018-05-04rrs_upstream_history.py: drop threadingPaul Eggleton
This is never going to work, the only way we can practically do parallel execution is to run these things in a task which would basically amount to distrodata's do_checkpkg; we may move to that in future but for now just drop the threading code. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_maintainer_history.py: support maintenance plans and remove poky hardcodingPaul Eggleton
Instead of hardcoded references to the poky repository, look for any maintainers.inc file in layers associated with the layerbranches for all enabled maintenance plans. At present few layers have this file, but at least it will now work generically in any layer index instance. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/tools/common.py: import sys/os at topPaul Eggleton
These are common enough that they should be imported up front. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: fix model string representations for Python 3Paul Eggleton
__unicode__ doesn't work anymore, we need to use __str__ for models instead. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs_upgrade_history.py: add maintenance plan handlingPaul Eggleton
Instead of processing all layerbranches, only process those associated with an enabled maintenance plan. This is one step towards being able to use the RRS together with a more general layer index database. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/tools: avoid unnecessary checkoutsPaul Eggleton
We don't need to create branches here, and we don't need to actually check anything out unless we're going to parse, so we can save a bit of time by not doing so. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: show full name in adminPaul Eggleton
It's neater to show "Recipe Reporting System" instead of "Rrs". Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: add Release link to MaintenancePlanPaul Eggleton
If any Releases exist then we create a default MaintenancePlan and then link all Releases to it - this needs to be done in multiple upgrade steps since the field needs to be non-null. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: add maintenance plansPaul Eggleton
The MaintenancePlan will provide some context for the RRS records so we can effectively enable RRS functionality only on certain layers where we want it. You can also consider the maintenance of multiple layers together under a single plan if desired. Here we add just the MaintenancePlan and the corresponding migration; a non-null link from the Release requires a separate migration and thus that will be done in a separate commit. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>