Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openSUSE-release-tools for
openSUSE:Factory checked in at 2022-03-17 17:01:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.25692 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Thu Mar 17 17:01:54 2022 rev:402 rq:962396 version:20220317.518f6f90
Changes:
--------
---
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
2022-03-16 20:20:55.584990074 +0100
+++
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.25692/openSUSE-release-tools.changes
2022-03-17 17:02:12.725718129 +0100
@@ -1,0 +2,6 @@
+Thu Mar 17 10:29:24 UTC 2022 - [email protected]
+
+- Update to version 20220317.518f6f90:
+ * pkglisten: Generate a comment for staging diffs
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20220315.0bbf3b2b.obscpio
New:
----
openSUSE-release-tools-20220317.518f6f90.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.cQtNih/_old 2022-03-17 17:02:13.517718735 +0100
+++ /var/tmp/diff_new_pack.cQtNih/_new 2022-03-17 17:02:13.521718739 +0100
@@ -20,7 +20,7 @@
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20220315.0bbf3b2b
+Version: 20220317.518f6f90
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.cQtNih/_old 2022-03-17 17:02:13.569718776 +0100
+++ /var/tmp/diff_new_pack.cQtNih/_new 2022-03-17 17:02:13.573718778 +0100
@@ -1,7 +1,7 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
- <param
name="changesrevision">0bbf3b2bdf803594c68feed8439039fb70fac30e</param>
+ <param
name="changesrevision">bceaa53e13d4167b6e480bf502d27a0b3e5a8405</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20220315.0bbf3b2b.obscpio ->
openSUSE-release-tools-20220317.518f6f90.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20220315.0bbf3b2b/pkglistgen/tool.py
new/openSUSE-release-tools-20220317.518f6f90/pkglistgen/tool.py
--- old/openSUSE-release-tools-20220315.0bbf3b2b/pkglistgen/tool.py
2022-03-15 13:44:45.000000000 +0100
+++ new/openSUSE-release-tools-20220317.518f6f90/pkglistgen/tool.py
2022-03-17 11:27:45.000000000 +0100
@@ -7,6 +7,7 @@
import shutil
import subprocess
import yaml
+import textwrap
from lxml import etree as ET
@@ -22,6 +23,7 @@
from osclib.core import repository_path_expand
from osclib.core import repository_arch_state
from osclib.cache_manager import CacheManager
+from osclib.comments import CommentAPI
from urllib.parse import urlparse
@@ -31,6 +33,7 @@
SCRIPT_PATH = os.path.dirname(os.path.realpath(__file__))
PRODUCT_SERVICE = '/usr/lib/obs/service/create_single_product'
+MARKER = 'PackageListDiff'
# share header cache with repochecker
CACHEDIR = CacheManager.directory('repository-meta')
@@ -45,6 +48,7 @@
def __init__(self):
ToolBase.ToolBase.__init__(self)
self.logger = logging.getLogger(__name__)
+ self.comment = CommentAPI(self.apiurl)
self.reset()
def reset(self):
@@ -504,6 +508,86 @@
print('%endif', file=output)
output.flush()
+ def read_summary_file(self, file):
+ ret = dict()
+ with open(file, 'r') as f:
+ for line in f:
+ pkg, group = line.strip().split(':')
+ ret.setdefault(pkg, [])
+ ret[pkg].append(group)
+ return ret
+
+ def calculcate_package_diff(self, old_file, new_file):
+ old_file = self.read_summary_file(old_file)
+ new_file = self.read_summary_file(new_file)
+
+ # remove common part
+ keys = list(old_file.keys())
+ for key in keys:
+ if new_file.get(key, []) == old_file[key]:
+ del new_file[key]
+ del old_file[key]
+
+ if not old_file and not new_file:
+ return None
+
+ moved = dict()
+ for pkg in old_file:
+ old_groups = old_file[pkg]
+ new_groups = new_file.get(pkg, [])
+ movekey = ','.join(old_groups) + ' to ' + ','.join(new_groups)
+ moved.setdefault(movekey, [])
+ moved[movekey].append(pkg)
+
+ report = ''
+ for move in sorted(moved.keys()):
+ report += f"**Move from {move}**\n\n```\n"
+ paragraph = ', '.join(moved[move])
+ report += "\n".join(textwrap.wrap(paragraph, width=90,
break_long_words=False, break_on_hyphens=False))
+ report += "\n```\n\n"
+
+ added = dict()
+ for pkg in new_file:
+ if pkg in old_file:
+ continue
+ addkey = ','.join(new_file[pkg])
+ added.setdefault(addkey, [])
+ added[addkey].append(pkg)
+
+ for group in sorted(added):
+ report += f"**Add to {group}**\n\n```\n"
+ paragraph = ', '.join(added[group])
+ report += "\n".join(textwrap.wrap(paragraph, width=90,
break_long_words=False, break_on_hyphens=False))
+ report += "\n```\n\n"
+
+ return report.strip()
+
+ def handle_package_diff(self, project, old_file, new_file):
+ comments = self.comment.get_comments(project_name=project)
+ comment, _ = self.comment.comment_find(comments, MARKER)
+
+ report = self.calculcate_package_diff(old_file, new_file)
+ if not report:
+ if comment:
+ self.comment.delete(comment['id'])
+ return 0
+ report = self.comment.add_marker(report, MARKER)
+
+ if comment:
+ write_comment = report != comment['comment']
+ else:
+ write_comment = True
+ if write_comment:
+ if comment:
+ self.comment.delete(comment['id'])
+ self.comment.add_comment(project_name=project, comment=report)
+ else:
+ for c in comments.values():
+ if c['parent'] == comment['id']:
+ print(c)
+
+ return 1
+
def solve_project(self, ignore_unresolvable=False,
ignore_recommended=False, locale=None, locales_from=None):
self.load_all_groups()
if not self.output:
@@ -652,6 +736,8 @@
release_dir = os.path.join(cache_dir, release)
oldrepos_dir = os.path.join(cache_dir, oldrepos)
+ # FOR DEBUG ret = self.handle_package_diff(project,
f"{group_dir}/summary-staging.txt", f"{product_dir}/summary-staging.txt")
+
self.input_dir = group_dir
self.output_dir = product_dir
@@ -738,7 +824,6 @@
file_utils.multibuild_from_glob(product_dir, '*.kiwi')
self.build_stub(product_dir, 'kiwi')
- self.commit_package(product_dir)
# new way
reference_summary = os.path.join(group_dir, f'summary-{scope}.txt')
@@ -753,37 +838,7 @@
for line in sorted(output):
f.write(line + '\n')
- done = subprocess.run(['diff', '-u', reference_summary,
summary_file])
- return done.returncode
+ self.commit_package(product_dir)
- # old way
- error_output = b''
- reference_summary = os.path.join(group_dir, 'reference-summary.yml')
if os.path.isfile(reference_summary):
- summary_file = os.path.join(product_dir, 'summary.yml')
- with open(summary_file, 'w') as f:
- f.write('# Summary of packages in groups')
- for group in sorted(summary):
- # the unsorted group should appear filtered by
- # unneeded.yml - so we need the content of unsorted.yml
- # not unsorted.group (this grew a little unnaturally)
- if group == 'unsorted':
- continue
- f.write('\n' + group + ':\n')
- for package in sorted(summary[group]):
- f.write(' - ' + package + '\n')
-
- try:
- error_output += subprocess.check_output(['diff', '-u',
reference_summary, summary_file])
- except subprocess.CalledProcessError as e:
- error_output += e.output
- reference_unsorted = os.path.join(group_dir,
'reference-unsorted.yml')
- unsorted_file = os.path.join(product_dir, 'unsorted.yml')
- try:
- error_output += subprocess.check_output(['diff', '-u',
reference_unsorted, unsorted_file])
- except subprocess.CalledProcessError as e:
- error_output += e.output
-
- if len(error_output) > 0:
- self.logger.error('Difference in yml:\n' +
error_output.decode('utf-8'))
- return 1
+ return self.handle_package_diff(project, reference_summary,
summary_file)
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.cQtNih/_old 2022-03-17 17:02:14.253719299 +0100
+++ /var/tmp/diff_new_pack.cQtNih/_new 2022-03-17 17:02:14.257719302 +0100
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20220315.0bbf3b2b
-mtime: 1647348285
-commit: 0bbf3b2bdf803594c68feed8439039fb70fac30e
+version: 20220317.518f6f90
+mtime: 1647512865
+commit: 518f6f90f5537792d1b7dcba236d23115f43cff9