rpm-software-management / python-rpm-packaging

Tools for packaging Python projects with rpm
Other
3 stars 6 forks source link

Don't include all requirements with True-evaluating markers in extras subpackages #16

Closed hroncok closed 2 years ago

hroncok commented 2 years ago

The idea is that the extra subpackage only has requirements specific to that extra. The logic however only excluded requirements without markers, but requirements with a marker that was correct leaked to all extras subpackages.

E.g. with the following requirements:

Requires-Dist: base-dependency
Requires-Dist: base-dependency-with-matching-marker ; python_version < "3.15"
Requires-Dist: base-dependency-with-unmatching-marker ; python_version < "3.8"
Provides-Extra: an-extra
Requires-Dist: extra-only-dependency-with-matching-marker ; extra == 'an-extra' and python_version < "3.15"
Requires-Dist: extra-only-dependency-with-unmatching-marker ; extra == 'an-extra' and python_version < "3.8"

On Python 3.10, the base package generated the following requirements:

python3.10dist(base-dependency)
python3.10dist(base-dependency-with-matching-marker)

And for the [an-extra] extra:

python3.10dist(base-dependency-with-matching-marker)  <--- REDUNDANT, WRONG
python3.10dist(extra-only-dependency-with-matching-marker)

Now we no longer just check if the marker evaluates to True, but we also check that the same marker evaluates to False when the extra is not given.

A real package with this thing issue build[virtualenv] 0.8.0, which we use for tests. The package has:

Requires-Dist: tomli (>=1.0.0) ; python_version < "3.11"

And on Python 3.10, it generated the following dependency for python3-build+virtualenv-0.8.0-2.fc37.noarch.rpm:

python3.10dist(tomli) >= 1

Now it no longer does. This is asserted in tests.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2090186

hroncok commented 2 years ago

If there are no issues with the CI here, I will open a Fedora PR as well, so we can run the CI there as well.

hroncok commented 2 years ago

Downstream PR: https://src.fedoraproject.org/rpms/python-rpm-generators/pull-request/56

hroncok commented 2 years ago

Note for self:

A real package with this thing issue build[virtualenv] 0.8.0,

A real package with this issue is build[virtualenv] 0.8.0,

hroncok commented 2 years ago

Note for self:

A real package with this thing issue build[virtualenv] 0.8.0,

A real package with this issue is build[virtualenv] 0.8.0,

Amended.