Hello community,

here is the log from the commit of package openSUSE-release-tools for 
openSUSE:Factory checked in at 2017-11-03 16:26:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
 and      /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openSUSE-release-tools"

Fri Nov  3 16:26:10 2017 rev:16 rq:538263 version:20171102.0a45aba

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
    2017-11-01 11:10:22.832146602 +0100
+++ 
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new/openSUSE-release-tools.changes
       2017-11-03 16:27:32.662327227 +0100
@@ -1,0 +2,22 @@
+Thu Nov 02 07:03:40 UTC 2017 - opensuse-releaset...@opensuse.org
+
+- Update to version 20171102.0a45aba:
+  * accept_command: remove the ring package if it is 2nd specfile is removed
+  * accept_command: force to accept the staging if --force parameter is given
+
+-------------------------------------------------------------------
+Wed Nov 01 01:07:58 UTC 2017 - opensuse-releaset...@opensuse.org
+
+- Update to version 20171031.d8cd193:
+  * systemd/devel-list: allow three retry attempts to handle regular OBS crash.
+
+-------------------------------------------------------------------
+Wed Nov 01 00:40:43 UTC 2017 - opensuse-releaset...@opensuse.org
+
+- Update to version 20171031.0e1733f:
+  * repo_checker: add newline to cycles comment to format properly.
+  * repo_checker: project_only place dashboard update behind dryrun check.
+  * repo_checker: project_only ensure project repository is published.
+  * repo_checker: store and compare build hash to skip more aggressively.
+
+-------------------------------------------------------------------

Old:
----
  openSUSE-release-tools-20171031.c32b59b.obscpio

New:
----
  openSUSE-release-tools-20171102.0a45aba.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.h5Kb6i/_old  2017-11-03 16:27:38.114128801 +0100
+++ /var/tmp/diff_new_pack.h5Kb6i/_new  2017-11-03 16:27:38.114128801 +0100
@@ -20,7 +20,7 @@
 %define source_dir osc-plugin-factory
 %define announcer_filename factory-package-news
 Name:           openSUSE-release-tools
-Version:        20171031.c32b59b
+Version:        20171102.0a45aba
 Release:        0
 Summary:        Tools to aid in staging and release work for openSUSE/SUSE
 License:        GPL-2.0+ and MIT

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.h5Kb6i/_old  2017-11-03 16:27:38.158127200 +0100
+++ /var/tmp/diff_new_pack.h5Kb6i/_new  2017-11-03 16:27:38.158127200 +0100
@@ -1,6 +1,6 @@
 <servicedata>
   <service name="tar_scm">
     <param 
name="url">https://github.com/openSUSE/osc-plugin-factory.git</param>
-    <param 
name="changesrevision">c32b59bd554556520bdc4334c8cb6dd1b2957a6b</param>
+    <param 
name="changesrevision">0a45aba664a73e919c08490b0a8b0e187b0a6a5f</param>
   </service>
 </servicedata>

++++++ openSUSE-release-tools-20171031.c32b59b.obscpio -> 
openSUSE-release-tools-20171102.0a45aba.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20171031.c32b59b/osclib/accept_command.py 
new/openSUSE-release-tools-20171102.0a45aba/osclib/accept_command.py
--- old/openSUSE-release-tools-20171031.c32b59b/osclib/accept_command.py        
2017-10-31 23:21:12.000000000 +0100
+++ new/openSUSE-release-tools-20171102.0a45aba/osclib/accept_command.py        
2017-11-02 07:57:41.000000000 +0100
@@ -138,7 +138,8 @@
                 change_request_state(self.api.apiurl,
                                      str(req['id']),
                                      'accepted',
-                                     message='Accept to %s' % self.api.project)
+                                     message='Accept to %s' % self.api.project,
+                                     force=force)
                 self.create_new_links(self.api.project, req['package'], 
oldspecs)
 
         self.api.accept_status_comment(project, packages)
@@ -236,6 +237,11 @@
                 else:
                     # If the package was there bug could not be delete, raise 
the error
                     raise
+
+            # Remove package from Rings in case 2nd specfile was removed
+            if self.api.ring_packages.get(spec[:-5]):
+                delete_package(self.api.apiurl, 
self.api.ring_packages.get(spec[:-5]), spec[:-5], force=True, msg="Cleanup 
package in Rings")
+
         if len(filelist) > 1:
             # There is more than one .spec file in the package; link package 
containers as needed
             origmeta = self.api.load_file_content(project, pkgname, '_meta')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20171031.c32b59b/osclib/cache.py 
new/openSUSE-release-tools-20171102.0a45aba/osclib/cache.py
--- old/openSUSE-release-tools-20171031.c32b59b/osclib/cache.py 2017-10-31 
23:21:12.000000000 +0100
+++ new/openSUSE-release-tools-20171102.0a45aba/osclib/cache.py 2017-11-02 
07:57:41.000000000 +0100
@@ -69,6 +69,7 @@
     TTL_SHORT = 5 * 60
     TTL_DUPLICATE = 3
     PATTERNS = {
+        '/build/[^/]+/_result': TTL_DUPLICATE,
         # Group members cannot be guaranteed, but change rarely.
         '/group/[^/?]+$': TTL_SHORT,
         # Clear target project cache upon request acceptance.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20171031.c32b59b/repo_checker.py 
new/openSUSE-release-tools-20171102.0a45aba/repo_checker.py
--- old/openSUSE-release-tools-20171031.c32b59b/repo_checker.py 2017-10-31 
23:21:12.000000000 +0100
+++ new/openSUSE-release-tools-20171102.0a45aba/repo_checker.py 2017-11-02 
07:57:41.000000000 +0100
@@ -3,13 +3,16 @@
 import cmdln
 from collections import namedtuple
 import hashlib
+from lxml import etree as ET
 import os
+from osc.core import show_results_meta
 import pipes
 import re
 import subprocess
 import sys
 import tempfile
 
+from osclib.comments import CommentAPI
 from osclib.core import binary_list
 from osclib.core import depends_on
 from osclib.core import package_binary_list
@@ -41,6 +44,12 @@
         # self.staging_config needed by target_archs().
         api = self.staging_api(project)
 
+        root = ET.fromstringlist(show_results_meta(
+            self.apiurl, project, multibuild=True, repository=['standard']))
+        if len(root.xpath('result[@state!="published"]')):
+            self.logger.info('{}/standard not published'.format(project))
+            return
+
         comment = []
         for arch in self.target_archs(project):
             directory_project = self.mirror(project, arch)
@@ -55,7 +64,10 @@
                 self.result_comment(arch, results, comment)
 
         text = '\n'.join(comment).strip()
-        api.dashboard_content_ensure('repo_checker', text, 'project_only run')
+        if not self.dryrun:
+            api.dashboard_content_ensure('repo_checker', text, 'project_only 
run')
+        else:
+            print(text)
 
         if post_comments:
             self.package_comments(project)
@@ -89,6 +101,7 @@
         # Reset for request batch.
         self.requests_map = {}
         self.groups = {}
+        self.groups_build = {}
 
         # Manipulated in ensure_group().
         self.group = None
@@ -98,6 +111,7 @@
         self.package_results = {}
 
         # Look for requests of interest and group by staging.
+        skip_build = set()
         for request in self.requests:
             # Only interesting if request is staged.
             group = request_staged(request)
@@ -119,6 +133,30 @@
             if request.reqid not in selected:
                 self.logger.debug('{}: inconsistent 
state'.format(request.reqid))
 
+            if group not in self.groups_build:
+                # Generate build hash based on hashes from relevant projects.
+                builds = []
+                for staging in api.staging_walk(group):
+                    builds.append(ET.fromstringlist(show_results_meta(
+                        self.apiurl, staging, multibuild=True, 
repository=['standard'])).get('state'))
+                builds.append(ET.fromstringlist(show_results_meta(
+                    self.apiurl, api.project, multibuild=True, 
repository=['standard'])).get('state'))
+
+                # Include meta revision for config changes (like whitelist).
+                builds.append(str(api.get_prj_meta_revision(group)))
+                self.groups_build[group] = 
hashlib.sha1(''.join(builds)).hexdigest()[:7]
+
+                # Determine if build has changed since last comment.
+                comment_api = CommentAPI(api.apiurl)
+                comments = comment_api.get_comments(project_name=group)
+                _, info = comment_api.comment_find(comments, self.bot_name)
+                if info and self.groups_build[group] == info.get('build'):
+                    skip_build.add(group)
+
+            if group in skip_build:
+                self.logger.debug('{}: {} build 
unchanged'.format(request.reqid, group))
+                continue
+
             self.requests_map[int(request.reqid)] = group
 
             requests = self.groups.get(group, [])
@@ -183,15 +221,18 @@
                 self.group_pass = False
                 self.result_comment(arch, results, comment)
 
+        info_extra = {'build': self.groups_build[group]}
         if not self.group_pass:
             # Some checks in group did not pass, post comment.
             self.comment_write(state='seen', result='failed', project=group,
-                               message='\n'.join(comment).strip(), 
identical=True)
+                               message='\n'.join(comment).strip(), 
identical=True,
+                               info_extra=info_extra)
         else:
             # Post passed comment only if previous failed comment.
             text = 'Previously reported problems have been resolved.'
             self.comment_write(state='done', result='passed', project=group,
-                               message=text, identical=True, only_replace=True)
+                               message=text, identical=True, only_replace=True,
+                               info_extra=info_extra)
 
         return self.group_pass
 
@@ -374,7 +415,7 @@
         if len(comment):
             # New cycles, post comment.
             self.logger.info('cycle check: failed')
-            return CheckResult(False, '\n'.join(comment))
+            return CheckResult(False, '\n'.join(comment) + '\n')
 
         self.logger.info('cycle check: passed')
         return CheckResult(True, None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20171031.c32b59b/systemd/osrt-staging-bot-devel-list.service
 
new/openSUSE-release-tools-20171102.0a45aba/systemd/osrt-staging-bot-devel-list.service
--- 
old/openSUSE-release-tools-20171031.c32b59b/systemd/osrt-staging-bot-devel-list.service
     2017-10-31 23:21:12.000000000 +0100
+++ 
new/openSUSE-release-tools-20171102.0a45aba/systemd/osrt-staging-bot-devel-list.service
     2017-11-02 07:57:41.000000000 +0100
@@ -7,5 +7,10 @@
 SyslogIdentifier=osrt-staging-bot
 ExecStart=/usr/bin/osrt-devel-project list -w
 
+# API query regularly times out, but will be cached if called again.
+Restart=on-failure
+StartLimitInterval=1 hour
+StartLimitBurst=3
+
 [Install]
 WantedBy=multi-user.target

++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.h5Kb6i/_old  2017-11-03 16:27:38.734106236 +0100
+++ /var/tmp/diff_new_pack.h5Kb6i/_new  2017-11-03 16:27:38.734106236 +0100
@@ -1,5 +1,5 @@
 name: openSUSE-release-tools
-version: 20171031.c32b59b
-mtime: 1509488472
-commit: c32b59bd554556520bdc4334c8cb6dd1b2957a6b
+version: 20171102.0a45aba
+mtime: 1509605861
+commit: 0a45aba664a73e919c08490b0a8b0e187b0a6a5f
 


Reply via email to