#1038 %generate_buildrequires strikes for python-copr
Closed: External 4 years ago by praiskup. Opened 4 years ago by praiskup.

Try:
1. tito build --test --srpm
2. mock --verbose -r epel-7-x86_64 --rebuild /tmp/tito/python-copr-1.97-1.git.8.1f590f7.fc31.src.rpm

DEBUG: DEBUG: Unsharing. Flags: 134217728
DEBUG: error: Missing rpmlib features for python-copr-1.97-1.git.8.1f590f7.fc31.noarch:
DEBUG: error:   rpmlib(DynamicBuildRequires) <= 4.15.0-1
DEBUG: error: /builddir/build/originals/python-copr-1.97-1.git.8.1f590f7.fc31.src.rpm cannot be installed
DEBUG: Child return code was: 1
Finish: build setup for python-copr-1.97-1.git.8.1f590f7.fc31.src.rpm
Finish: build phase for python-copr-1.97-1.git.8.1f590f7.fc31.src.rpm
ERROR: Exception(/tmp/tito/python-copr-1.97-1.git.8.1f590f7.fc31.src.rpm) Config(epel-7-x86_64) 0 minutes 40 seconds

@msuchy ideas?


@pmatilai is it necessary to bake rpmlib(DynamicBuildRequires) into the SRPM, or could we avoid that?

We use conditionals so the %dynamic_buildrequires section isn't used on Fedora <= 30:
https://pagure.io/copr/copr/blob/1f590f7ed735ad3e948d39224c7ac2645ae9d68e/f/python/python-copr.spec#_138-146

I'm not sure what you're asking about - if you conditionalize it out, then there wont be such a dependency.

Traditionally build-side incompatibilities haven't been tracked with rpmlib() dependencies so you just get a parse error, dunno why this is different. I'm the wrong guy to talk to about dynamic buildrequires, you want @ffesti instead.

if you conditionalize it out, then there wont be such a dependency.

There will be, if you create the src.rpm on new-enough system.

Traditionally build-side incompatibilities haven't been tracked with
rpmlib() dependencies so you just get a parse error, dunno why this is
different.

Maybe it is not a different thing; can you mention something like that
before so I can compare? When I generated srpm on F31, the only similar
thing seems to be the following (and it is really old thing):

rpmlib(CompressedFileNames) <= 3.0.4-1

This is about allowing us to build the src.rpm generated on Fedora 31 in
mock on system which doesn't have that particular SRPM feature.

CompressedFilenames is nothing like this, it's an internal storage format change that is not up to packagers to choose, and older version cannot handle at all. Hence the rpmlib() dependency, it was a very necessary thing at the time.

As a general rule spec-side additions have not been guarded by rpmlib dependencies: new tags like weak dependencies, or other additions in 4.15 such as %patchlist. I can kind of see the point of the rpmlib() dependency as a way to prevent incorrect results of --rebuild, BUT ... now I get it: the dependency prevents doing 'rpm -i foo.src.rpm', and that is wrong.

Thank you for the quick turn-around. I'm closing this copr issue then.

Metadata Update from @praiskup:
- Issue close_status updated to: External
- Issue status updated to: Closed (was: Open)

4 years ago

Login to comment on this ticket.

Metadata