Bug ID 1217299
Summary zypp:plugins/zypper-changelog-plugin: Bug repodata is now using zstd compression
Classification openSUSE
Product openSUSE.org
Version unspecified
Hardware x86-64
OS openSUSE Tumbleweed
Status NEW
Severity Normal
Priority P5 - None
Component 3rd party software
Assignee zbalogh@suse.com
Reporter ianmepham@gmail.com
QA Contact screening-team-bugs@suse.de
CC nadvornik@suse.com
Target Milestone ---
Found By ---
Blocker ---

I'm running Tumbleweed x86_64, all up-to-date as of 18 Nov 2023 with snapshot
20231116.
The package zypper-changelog-plugin I'm using is version 0.3-1.2.

Recently zypper-changelog has stopped working with no error messages nor any
other output given. I've tested both trying to download the changelog for a
single package, such as with zypper-changelog --package vim, as well as the
changelogs for any upcoming system updates with zypper-changelog ‐‐update

I understand that the repodata is now compressed with zstd rather than gz as
mentioned in the Factory mailing list here
https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/LJNSBPCMIOJMP37PFPV7C7EJVIOW26BN/

I tested modifying zypper-changelog to accept both gz and zstd compressed
repodata so it would work with both the official repos and any other repos
which still use gz compression. Please keep in mind that I've only tested this
in Tumbleweed. It also requires using zstdcat in place of zcat. Fortunately
zstdcat also supports gz compression. The version of zstdcat I tested this with
is 1.5.5-3.5.

Here's a diff of the changes I've tested to give you an idea of what I mean
comparing the current version 0.3-1.2 zypper-changelog and a modified test
version:

147c147
<         if file.endswith("primary.xml.gz"):
---
>         if file.endswith(("primary.xml.zst", "primary.xml.gz")):
172c172
<     zcat_process = subprocess.Popen(["zcat",
---
>     zstdcat_process = subprocess.Popen(["zstdcat",
176c176
<     stdout_value, stderr_value = zcat_process.communicate()
---
>     stdout_value, stderr_value = zstdcat_process.communicate()



I understand that using a tuple is considered to be more pythonic, but I'm not
sure if some may find it more legible to do something like this:
if file.endswith("primary.xml.zst") or if file.endswith("primary.xml.gz"):

I've not really done stuff like this before so my sincere apologies if I've
picked the wrong option or made a mistake in this bug report. I'm also just an
amateur with Python too so I may have easily overlooked something.

Please ask if you need any more information.

Thank you for your time and for such a useful tool.


You are receiving this mail because: