Skip to contentSkip to conversation

Do not skip packages that were attempted recently.

PATCH In review Alexander Kanavin 1 participant 3 messages Mar 21, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 Do not skip packages that were attempted recently.

This was undocumented and made a number of hardcoded assumptions. The options were to make it configurable, or just remove the logic, and I chose the latter.

---
 upgradehelper.py | 40 ----------------------------------------
 1 file changed, 40 deletions(-)
upgradehelper.py +0 -40
index b5e696e..8fb27d3 100755
@@ -564,17 +564,6 @@ class UniverseUpdater(Updater):
                 E(" -t is only supported when upgrade one recipe\n")
                 exit(1)
 
-        # read history file
-        self.history_file = os.path.join(get_build_dir(), "upgrade-helper", "history.uh")
-        self.history = dict()
-        if os.path.exists(self.history_file):
-            with open(self.history_file) as history_file:
-                for line in history_file:
-                    line = line.strip()
-                    self.history[line.split(',')[0]] = [line.split(',')[1],
-                                                        line.split(',')[2],
-                                                        line.split(',')[3],
-                                                        line.split(',')[4]]
     def _get_recipes_by_layer(self):
         recipes = []
 
@@ -689,21 +678,6 @@ class UniverseUpdater(Updater):
                         (pn, maintainer))
                 return False
 
-        if pn in self.history:
-            # did we already try this version?
-            if next_ver == self.history[pn][0]:
-                retry_delta = \
-                    date.toordinal(date.today()) - \
-                    date.toordinal(datetime.strptime(self.history[pn][2], '%Y-%m-%d'))
-                # retry recipes that had fetch errors or other errors after
-                # more than 30 days
-                if (self.history[pn][3] == str(FetchError()) or
-                        self.history[pn][3] == str(Error())) and retry_delta > 30:
-                    return True
-
-                D(" Skipping upgrade of %s: is in history and not 30 days passed" % pn)
-                return False
-
         # drop native/cross/cross-canadian recipes. We deal with native
         # when upgrading the main recipe but we keep away of cross* pkgs...
         # for now
@@ -727,22 +701,8 @@ class UniverseUpdater(Updater):
 
         return pkgs_list
 
-    def _update_history(self, pn, new_ver, maintainer, upgrade_status):
-        with open(self.history_file + ".tmp", "w+") as tmp_file:
-            if os.path.exists(self.history_file):
-                with open(self.history_file) as history:
-                    for line in history:
-                        if not line.startswith(pn):
-                            tmp_file.write(line)
-            tmp_file.write(pn + "," + new_ver + "," + maintainer +
-                           "," + date.isoformat(date.today()) + "," +
-                           upgrade_status + "\n")
-        os.rename(self.history_file + ".tmp", self.history_file)
-
     def pkg_upgrade_handler(self, pkg_ctx):
         super(UniverseUpdater, self).pkg_upgrade_handler(pkg_ctx)
-        self._update_history(pkg_ctx['PN'], pkg_ctx['NPV'], pkg_ctx['MAINTAINER'],
-                self._get_status_msg(pkg_ctx['error']))
 
     def run(self):
         self._prepare()
Signature · 1 line
2.16.1
#1 lore raw

PATCH 2/2 When 'devtool upgrade' fails to rebase patches, stop and report a failure

Previously it would continue, which eventually resulted in an unhelpful, generic error message printed by 'devtool finish'.

---
 modules/steps.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
modules/steps.py +4 -1
index 5bbe38e..2eb4499 100644
@@ -82,6 +82,10 @@ def devtool_upgrade(devtool, bb, git, opts, pkg_ctx):
 
     try:
         devtool_output = devtool.upgrade(pkg_ctx['PN'], pkg_ctx['NPV'], pkg_ctx['NSRCREV'])
+        D(" 'devtool upgrade' printed:\n%s" %(devtool_output))
+        # If devtool failed to rebase patches, it does not fail, but we should
+        if 'conflict' in devtool_output:
+            raise DevtoolError("Running 'devtool upgrade' for recipe %s failed." %(pkg_ctx['PN']), devtool_output)
     except DevtoolError as e1:
         try:
             devtool_output = devtool.reset(pkg_ctx['PN'])
@@ -96,7 +100,6 @@ def devtool_upgrade(devtool, bb, git, opts, pkg_ctx):
         with open(os.path.join(pkg_ctx['workdir'], pkg_ctx['license_diff_fn']), 'wb') as f:
             f.write(b"".join(license_diff_info))
 
-    D(" 'devtool upgrade' printed:\n%s" %(devtool_output))
 
 def _compile(bb, pkg, machine, workdir):
         try:
Signature · 1 line
2.16.1
#2 lore raw
In reply to Alexander Kanavin
Quoted 3 lines · Alexander Kanavin

This was undocumented and made a number of hardcoded assumptions. The options were to make it configurable, or just remove the logic, and I chose the latter.

Uh, forgot to add the [auh] prefix to these two.

Alex