aboutsummaryrefslogtreecommitdiffstats
path: root/rrs
AgeCommit message (Collapse)Author
2018-05-04rrs: validate that a layerbranch is only part of one planPaul Eggleton
The processing code can't currently handle if a layerbranch is part of more than one plan, so disallow that. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/urls: Use new urlpatterns list syntaxPaul Eggleton
The patterns() function is deprecated in Django 1.8 and gone in 1.10, so we should switch over to the new list format. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: link maintenance/upstream history to layerbranchPaul Eggleton
RecipeUpstreamHistory was not linked to the layer it was produced from, which meant that it wasn't easy to query for a different maintenance plan (i.e. a different layer) and thus the maintenance plan selection on the recipe list didn't really work. Add a link field, populate it in a migration and then make it required. We had added a link earlier from RecipeMaintainerHistory to LayerBranch but it was optional; for the same reasons we now populate it and make it required. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: drop a couple of unused functions from Raw classPaul Eggleton
These two functions aren't being used anywhere. In the interest of having as little code directly reading the database using SQL as possible, drop them. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs/tools: add -p/--plan optionPaul Eggleton
Add an option to specify which maintenance plan to operate on (largely for debugging purposes). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: improve admin for Release/Milestone objectsPaul Eggleton
* Ensure the Release and Milestone names are separated by a space when listing Milesones * Include the maintenance plan name in the name shown for each Release/Milestone * Allow filtering Releases/Milestones by maintenance plan Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: duplicate releases from first plan when adding a new planPaul Eggleton
It's a pain to have to add all the releases when adding a new maintenance plan. Since these are likely to be the same (or similar) for every plan, then duplicate them across from the first plan when you save a new one. Also add "default" milestones on the assumption that other layers probably won't want to use the 4-milestone split per release, but there do have to be some milestone records, so just create one milestone for each release. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: default python2/3 environments for new maintenance plan layer branchesPaul Eggleton
It's a bit of a pain to have to set the two python environment fields on every record in order to have things set correctly, and it can easily get forgotten, so try to set them automatically by default (assuming reasonable naming). Note that this does introduce an annoying behaviour whereby if you click "Add another Maintenance plan layer branch" and then decide you don't want it, the admin form will insist you fill in the fields unless you clear out the python2/3 environment fields. I'm not sure how to fix that, so I'm leaving it as-is for now. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: releases should be unique by plan and name, not just namePaul Eggleton
I missed changing this constraint when adding the plan field. We want to be able to have the same named release on another plan. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: add charts pagePaul Eggleton
Add some basic charts to show recipe upstream / patch status. Implements [YOCTO #7909]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2018-05-04rrs: add patch listing to recipe list and detailPaul Eggleton
Expose the newly added patch information in the RRS: * Add a table to the recipe detail listing the patches for the recipe * Add pending / total counts to the recipe list page Implements [YOCTO #7909]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
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>