find_unblocked_orphans.py generates false positive orphaned packages (due to 'or java-1.8.0-headless') #11460

Open
opened 2023-06-07 10:13:05 +00:00 by dwrobel · 10 comments
  • Describe the issue

https://churchyard.fedorapeople.org/orphans-2023-06-07.txt contains false positive information that jssc is orphaned because it requires java-1.8.0:

jssc (maintained by: dwrobel)
jssc-2.8.0-26.fc39.x86_64 requires java-1.8.0-headless = 1:1.8.0.362.b09-2.fc38

The jssc was successfully re-compiled for rawhide (f39 against java-17:

$ curl -s https://kojipkgs.fedoraproject.org//packages/jssc/2.8.0/26.fc39/data/logs/x86_64/root.log  | grep openjdk
DEBUG util.py:445:   java-17-openjdk-devel      x86_64  1:17.0.7.0.7-5.fc39            build  4.7 M
DEBUG util.py:445:   java-17-openjdk            x86_64  1:17.0.7.0.7-5.fc39            build  440 k
DEBUG util.py:445:   java-17-openjdk-headless   x86_64  1:17.0.7.0.7-5.fc39            build   45 M
DEBUG util.py:445:    java-17-openjdk-1:17.0.7.0.7-5.fc39.x86_64                                    
DEBUG util.py:445:    java-17-openjdk-devel-1:17.0.7.0.7-5.fc39.x86_64                              
DEBUG util.py:445:    java-17-openjdk-headless-1:17.0.7.0.7-5.fc39.x86_64      

See the Requires:

$ curl -s https://kojipkgs.fedoraproject.org//packages/jssc/2.8.0/26.fc39/data/logs/x86_64/build.log | grep -e '^Requires:' 
Requires: (java-headless or java-17-headless or java-11-headless or java-1.8.0-headless) javapackages-filesystem libc.so.6()(64bit) libc.so.6(GLIBC_2.15)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.4)(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3.9)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) rtld(GNU_HASH)

Based on above 'Requires' the script https://pagure.io/releng/blob/main/f/scripts/find_unblocked_orphans.py should filter it out.

  • If we cannot complete your request, what is the impact?
$ curl -s https://churchyard.fedorapeople.org/orphans-2023-06-07.txt | grep 'requires java-1.8.0-headless' | wc -l
604

Pessimistically (assuming that all packages falls into the same category as jssc) 604 will be innocently orphaned. If above assumption is wrong (I checked it only for jssc), then at least jssc will be orphaned while it shouldn't.

* Describe the issue https://churchyard.fedorapeople.org/orphans-2023-06-07.txt contains false positive information that jssc is orphaned because it requires java-1.8.0: > jssc (maintained by: dwrobel) > jssc-2.8.0-26.fc39.x86_64 requires java-1.8.0-headless = 1:1.8.0.362.b09-2.fc38 The jssc was successfully re-compiled for rawhide (f39 against java-17: ``` $ curl -s https://kojipkgs.fedoraproject.org//packages/jssc/2.8.0/26.fc39/data/logs/x86_64/root.log | grep openjdk DEBUG util.py:445: java-17-openjdk-devel x86_64 1:17.0.7.0.7-5.fc39 build 4.7 M DEBUG util.py:445: java-17-openjdk x86_64 1:17.0.7.0.7-5.fc39 build 440 k DEBUG util.py:445: java-17-openjdk-headless x86_64 1:17.0.7.0.7-5.fc39 build 45 M DEBUG util.py:445: java-17-openjdk-1:17.0.7.0.7-5.fc39.x86_64 DEBUG util.py:445: java-17-openjdk-devel-1:17.0.7.0.7-5.fc39.x86_64 DEBUG util.py:445: java-17-openjdk-headless-1:17.0.7.0.7-5.fc39.x86_64 ``` See the Requires: ``` $ curl -s https://kojipkgs.fedoraproject.org//packages/jssc/2.8.0/26.fc39/data/logs/x86_64/build.log | grep -e '^Requires:' Requires: (java-headless or java-17-headless or java-11-headless or java-1.8.0-headless) javapackages-filesystem libc.so.6()(64bit) libc.so.6(GLIBC_2.15)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.4)(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3.9)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) rtld(GNU_HASH) ``` Based on above 'Requires' the script https://pagure.io/releng/blob/main/f/scripts/find_unblocked_orphans.py should filter it out. * If we cannot complete your request, what is the impact? ``` $ curl -s https://churchyard.fedorapeople.org/orphans-2023-06-07.txt | grep 'requires java-1.8.0-headless' | wc -l 604 ``` Pessimistically (assuming that all packages falls into the same category as jssc) 604 will be innocently orphaned. If above assumption is wrong (I checked it only for jssc), then at least jssc will be orphaned while it shouldn't.
Contributor

Note that no listed package will actually be orphaned just because it is included in this output. Only packages that actually fail to install will get a bugzilla once that happens and will be orphaned weeks later if the bugzilla is ignored.

Note that no listed package will actually be orphaned just because it is included in this output. Only packages that actually fail to install will get a bugzilla once that happens and will be orphaned weeks later if the bugzilla is ignored.
Author

@churchyard , thanks for the clarification.

We could, at least, spare the log analysis for the people who are curious why their package is included in this list.

@churchyard , thanks for the clarification. We could, at least, spare the log analysis for the people who are curious why their package is included in this list.

Metadata Update from @phsmoura:

  • Issue tagged with: low-gain, low-trouble, ops
**Metadata Update from @phsmoura**: - Issue tagged with: low-gain, low-trouble, ops
Contributor

Yes. However, the script is very old and I am unsure if it is possible to simply fix this without rewriting it from scratch.

Definitively not a low-trouble task.

Yes. However, the script is very old and I am unsure if it is possible to simply fix this without rewriting it from scratch. Definitively not a low-trouble task.
Owner

Metadata Update from @humaton:

  • Issue untagged with: low-gain, low-trouble
  • Issue tagged with: dev, high-trouble, medium-gain
**Metadata Update from @humaton**: - Issue **un**tagged with: low-gain, low-trouble - Issue tagged with: dev, high-trouble, medium-gain
Owner

Metadata Update from @amedvede:

  • Issue tagged with: review
**Metadata Update from @amedvede**: - Issue tagged with: review
jnsamyak added this to the Backlog project 2026-03-19 11:59:16 +00:00
Owner
the newer place for the script is changed, and can be found here: https://forge.fedoraproject.org/releng/tooling/src/branch/main/packages/orphaned/find_unblocked_orphans.py
Owner

This is the new home for the culprint we discussed it on todays refinement meeting, it will land in one of next sprints.

This is the new home for the [culprint ](https://forge.fedoraproject.org/releng/tooling/src/branch/main/packages/orphaned/find_unblocked_orphans.py) we discussed it on todays refinement meeting, it will land in one of next sprints.
amedvede removed their assignment 2026-04-16 22:00:10 +00:00
amedvede added this to the Backlog project 2026-04-16 22:00:17 +00:00
Owner

@churchyard I looked into this last week and I think we can fix it without a full rewrite.

I think we would be able to solve this by adding two helper methods that use DNF's existing filter(provides=...) to check if requirements can be satisfied by other packages first one checks if a specific provide has alternatives available, second one verifies if a dependent package's full requirement set can be met without the orphaneed packages. This handles both simple alternative providers and rich dependencies.

No changes to the scripts interface or how it outputs results keeps everything backward compateible. We can look into log analysis if required as part 2? What do you think? Does this approach make sense or am I missing something?

@churchyard I looked into this last week and I think we can fix it without a full rewrite. I think we would be able to solve this by adding two helper methods that use DNF's existing filter(provides=...) to check if requirements can be satisfied by other packages first one checks if a specific provide has alternatives available, second one verifies if a dependent package's full requirement set can be met without the orphaneed packages. This handles both simple alternative providers and rich dependencies. No changes to the scripts interface or how it outputs results keeps everything backward compateible. We can look into log analysis if required as part 2? What do you think? Does this approach make sense or am I missing something?
Contributor

It's worth trying 👍

It's worth trying 👍
Sign in to join this conversation.
No milestone
No assignees
6 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
releng/tickets#11460
No description provided.