rpm-software-management / createrepo_c

C implementation of the createrepo.
http://rpm-software-management.github.io/createrepo_c
GNU General Public License v2.0
97 stars 93 forks source link

Has `--deltas` option been removed? #398

Closed mattiaverga closed 10 months ago

mattiaverga commented 10 months ago

Since 1.0.2 update Bodhi tests started to fail due to

E           subprocess.CalledProcessError: Command '['createrepo_c', '--groupfile', 'comps.xml', '--deltas', '--xz', '--database', '--quiet', '/tmp/tmp23ga5f6cbodhi/f17-updates-testing/compose/Everything/i386/os/f17-updates-testing/i386']' returned non-zero exit status 1.
/usr/lib64/python3.12/subprocess.py:413: CalledProcessError
---------------------------- Captured stderr setup -----------------------------
Argument parsing failed: Unknown option --deltas

I can't find any documentation about that option been removed.

jan-kolarik commented 10 months ago

Hello, I believe the issue is related to this change: https://github.com/rpm-software-management/createrepo_c/pull/372. The removal of drpm was supposed to be included in createrepo_c version 1.0.0, but it seems to have been propagated only now with this update.

jan-kolarik commented 10 months ago

The accepted system-wide change related to dropping DRPM support for Fedora 40 can be found here: https://discussion.fedoraproject.org/t/f40-change-proposal-drop-delta-rpms-system-wide/89601.

ppisar commented 10 months ago

Is Fedora Bodhi supposed to create repositories for Fedora < 40? Or is is just an test witch passes --delta option for no reason?

If Bodhi produces the repositories, createrepo_c in Fedora needs to reenable delta support. We can disable the support once Fedora 39 reached end of life. What about EPEL?

Conan-Kudo commented 10 months ago

We only ship DRPMs for Fedora and EPEL 7, I think?

ppisar commented 10 months ago

It actually does not matter what service creates the repositories. Provided the service uses createrepo_c and the service runs on a stable Fedora, we need to retain a delta support in Fedora builds of createrepo_c until Fedora 39 + 2 EOL. I.e., we can disable it in Fedora 42. The service can run on Fedora 41 and produce repositories for Fedora 39, the last Fedora release with deltas.

Regarding EPEL 7, extended life support ends on 2026-06-30. At that that time the latest stable Fedora release will be 44.

So unless EPEL stops producing deltas sooner, we need to wait for Fedora 45:

--- a/createrepo_c.spec
+++ b/createrepo_c.spec
@@ -4,7 +4,7 @@

 %global bash_completion %{_datadir}/bash-completion/completions/*

-%if ( 0%{?rhel} && ( 0%{?rhel} <= 7 || 0%{?rhel} >= 9 ) ) || ( 0%{?fedora} && 0%{?fedora} >= 39 )
+%if ( 0%{?rhel} && ( 0%{?rhel} <= 7 || 0%{?rhel} >= 9 ) ) || ( 0%{?fedora} && %0%{?fedora} >= 45 )
 %bcond_with drpm
 %else
 %bcond_without drpm

Am I right?

mattiaverga commented 10 months ago

Currently man createrepo_c and createrepo_c --help still list the --deltas option, so I was surprised this has been removed.

From a Fedora perspective, yes, we will need that option to remain available until F39 goes EOL, because at that time Bodhi composer will probably be running on a F41 based image. Unless Fesco/Releng wants to drop delta rpm on all active Fedora releases. Also I have just pushed a Bodhi change that enables to have different createrepo_c settings by release, but delta rpm was not in the editable parameters.

About EPEL7, from another Releng ticket discussed with @nirik I understood that we will stop composing EPEL7 repositories on June 2024. If we will have to wait June 2026, we will have another big problem, as createrepo_c v1.0.x says the repodata it creates by default is not compatible with EPEL7:

When adding groups.xml to repodata createrepo_c currently adds two variants to repomd.xml. The specified file as is, uncompressed, with the type "group" and also a compressed variant with type "group_XX", where XX is compression suffix. This is atypical and unexpected. We propose to include just one variant of groups.xml using specified compression and repomd.xml type "group". This is not compatible with yum in RHEL 7. If required users will still be able to create repositories with the old layout using modifyrepo_c.

jan-kolarik commented 10 months ago

Provided the service uses createrepo_c and the service runs on a stable Fedora, we need to retain a delta support in Fedora builds of createrepo_c until Fedora 39 + 2 EOL.

@ppisar I agree we should continue with the drpm support in createrepo_c for now. Maybe can we drop the Fedora condition there and just add a comment, so we will do the manual switch in the future rather than doing it automatically?

Also I have just pushed a https://github.com/fedora-infra/bodhi/pull/5521 that enables to have different createrepo_c settings by release, but delta rpm was not in the editable parameters.

@mattiaverga I think the drpm is not an editable parameter, because it is decided at the build time whether to require the drpm dependency. I don't see any reason or benefit of switching the drpm support off after the building.

ppisar commented 10 months ago

I would keep the condition with a comment that "Fedora infrastructure needs it for producing Fedora ≤ 39 and EPEL ≤ 7 repositories". And add a link there to this issue so that we know that Bodhi tests will be affected. I prefer the automatic disablement. Otherwise, maintainers will forget to disable it.

I would also welcome patching a build process (here in upstream) to remove a documentation for the option, if the feature is disabled.

jan-kolarik commented 10 months ago

I'll prepare the new downstream builds and do also the upstream PR. For the documentation removal, I will create a separate issue if you don't mind.