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.