commit:     c059e969ff0e106823e0bed4729d4c04db02eee8
Author:     Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 20 07:05:33 2021 +0000
Commit:     Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Tue Apr 20 07:05:33 2021 +0000
URL:        
https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=c059e969

Support more then one Chaange USE

Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>

 buildbot_gentoo_ci/steps/builders.py | 48 ++++++++++++++++++++++++------------
 1 file changed, 32 insertions(+), 16 deletions(-)

diff --git a/buildbot_gentoo_ci/steps/builders.py 
b/buildbot_gentoo_ci/steps/builders.py
index d9817d8..50f924d 100644
--- a/buildbot_gentoo_ci/steps/builders.py
+++ b/buildbot_gentoo_ci/steps/builders.py
@@ -86,21 +86,35 @@ def PersOutputOfEmerge(rc, stdout, stderr):
     # split the lines
     #FIXME: Handling of stderr output
     stderr_line_list = []
+    emerge_output['change_use'] = False
     for line in stderr.split('\n'):
         if 'Change USE:' in line:
             line_list = line.split(' ')
             change_use_list = []
             # get cpv
             cpv_split = line_list[1].split(':')
-            change_use_list.append(cpv_split[0])
+            change_use = {}
             # add use flags
             if line_list[4].startswith('+') or line_list[4].startswith('-'):
-                # we only support one for now
+                # we only support tre for now
                 if line_list[4].endswith(')'):
                     change_use_list.append(line_list[4].replace(')', ''))
+                elif line_list[5].endswith(')'):
+                    change_use_list.append(line_list[4])
+                    change_use_list.append(line_list[5].replace(')', ''))
+                elif line_list[6].endswith(')'):
+                    change_use_list.append(line_list[4])
+                    change_use_list.append(line_list[5])
+                    change_use_list.append(line_list[6].replace(')', ''))
+                elif not line_list[6].endswith(')'):
+                    change_use_list.append(line_list[4])
+                    change_use_list.append(line_list[5])
+                    change_use_list.append(line_list[6])
                 else:
                     change_use_list = False
-            emerge_output['change_use'] = change_use_list
+            if change_use_list:
+                change_use[cpv_split[0]] = change_use_list
+                emerge_output['change_use'] = change_use
         err_line_list = []
         if line.startswith(' * '):
             if line.endswith('.log.gz'):
@@ -226,7 +240,7 @@ class SetupPropertys(BuildStep):
     
     name = 'SetupPropertys'
     description = 'Running'
-    descriptionDone = 'Ran'
+    #descriptionDone = 'Ran'
     descriptionSuffix = None
     haltOnFailure = True
     flunkOnFailure = True
@@ -240,6 +254,7 @@ class SetupPropertys(BuildStep):
     def run(self):
         self.gentooci = 
self.master.namedServices['services'].namedServices['gentooci']
         print('build this %s' % self.getProperty("cpv"))
+        self.descriptionDone = 'Building this %s' % self.getProperty("cpv")
         self.setProperty('portage_repos_path', self.portage_repos_path, 
'portage_repos_path')
         projectrepository_data = self.getProperty('projectrepository_data')
         print(projectrepository_data)
@@ -550,6 +565,7 @@ class CheckEmergeLogs(BuildStep):
         # update package.* if needed and rerun pre-build max 3 times
         if self.step == 'pre-build':
             print(emerge_output)
+            # this should be set in the config
             if self.getProperty('rerun') <= 3:
                 # when we need to change use. we could rerun pre-build with
                 # --autounmask-use=y --autounmask-write=y --autounmask-only=y
@@ -560,21 +576,21 @@ class CheckEmergeLogs(BuildStep):
                     separator = '\n'
                     separator2 = ' '
                     change_use_list = []
-                    cpv = emerge_output['change_use'][0]
-                    c = yield catpkgsplit(cpv)[0]
-                    p = yield catpkgsplit(cpv)[1]
-                    change_use_list.append(c + '/' + p)
-                    # we only support one use
-                    use_flag = emerge_output['change_use'][1]
-                    if use_flag.startswith('+'):
-                        change_use_list.append(use_flag.replace('+', ''))
-                    else:
-                        change_use_list.append(use_flag)
+                    for cpv, v in emerge_output['change_use'].items():
+                        c = yield catpkgsplit(cpv)[0]
+                        p = yield catpkgsplit(cpv)[1]
+                        change_use_list.append(c + '/' + p)
+                        for use_flag in v:
+                            if use_flag.startswith('+'):
+                                change_use_list.append(use_flag.replace('+', 
''))
+                            else:
+                                change_use_list.append(use_flag)
                     change_use_string = separator2.join(change_use_list)
                     self.aftersteps_list.append(
                         steps.StringDownload(change_use_string + separator,
-                                workerdest='zz_autouse' + 
str(self.getProperty('rerun')),
-                                workdir='/etc/portage/package.use/')
+                            workerdest='zz_autouse' + 
str(self.getProperty('rerun')),
+                            workdir='/etc/portage/package.use/'
+                            )
                         )
                     # rerun
                     self.aftersteps_list.append(RunEmerge(step='pre-build'))

Reply via email to