moving .so files to subpackage makes apk-tools up in endless loop
Example:
harfbuzz-0.9.18-r0 provides so:libharfbuzz-icu.so.0
The package gets splitted, so harfbuzz-icu-0.9.18-r1 provides so:libharfbuzz-icu.so.0
If both packages are in repository apk will end up in an endless loop:
...
reconsider_name: harfbuzz-icu
queue_unresolved: harfbuzz-icu, want=1
apply_constraint: so:libc.so.0.9.32?
apply_constraint: provider: libc-0: 1
libc-0.9.33.2-r22: tag_ok=1, tag_pref=1
apply_constraint: so:libgcc_s.so.1?
apply_constraint: provider: libgcc-1: 1
libgcc-4.8.1-r1: tag_ok=1, tag_pref=1
apply_constraint: provider: libgcc-1: 1
libgcc-4.8.1-r1: tag_ok=1, tag_pref=1
apply_constraint: so:libharfbuzz.so.0?
apply_constraint: provider: harfbuzz-0.918.0: 1
harfbuzz-0.9.18-r1: tag_ok=1, tag_pref=1
apply_constraint: provider: harfbuzz-0.918.0: 1
harfbuzz-0.9.18-r0: tag_ok=1, tag_pref=1
apply_constraint: so:libicudata.so.51?
apply_constraint: provider: icu-libs-51.2: 1
icu-libs-51.2-r0: tag_ok=1, tag_pref=1
apply_constraint: provider: icu-libs-51.2: 1
icu-libs-51.2-r0: tag_ok=1, tag_pref=1
apply_constraint: so:libicuuc.so.51?
apply_constraint: provider: icu-libs-51.2: 1
icu-libs-51.2-r0: tag_ok=1, tag_pref=1
apply_constraint: provider: icu-libs-51.2: 1
icu-libs-51.2-r0: tag_ok=1, tag_pref=1
apply_constraint: so:libm.so.0.9.32?
apply_constraint: provider: libc-0: 1
libc-0.9.33.2-r22: tag_ok=1, tag_pref=1
apply_constraint: so:libstdc++.so.6?
apply_constraint: provider: libstdc++-6.0.18: 1
libstdc++-4.8.1-r1: tag_ok=1, tag_pref=1
apply_constraint: provider: libstdc++-6.0.18: 1
libstdc++-4.8.1-r1: tag_ok=1, tag_pref=1
so:libharfbuzz-icu.so.0 must provide harfbuzz-icu
disqualify_package: harfbuzz-0.9.18-r0 (provides transitivity)
queue_dirty: harfbuzz-icu
reconsider_name: harfbuzz-icu [finished], has_options=0, reverse_deps_done=1
reconsider_name: harfbuzz-icu
queue_unresolved: harfbuzz-icu, want=1
...
What happens is that when harfbuzz-0.9.18-r0 (provides transitivity) gets disqualified during exclude_non_providers it will be queued as dirty and reconsidered again.
(from redmine: issue id 2135, created on 2013-07-16, closed on 2013-10-02)
- Changesets:
- Revision ec3b11dc1bec500609eebdd951720b3836e68d8c by Natanael Copa on 2013-07-16T10:25:28Z:
main/apk-tools: fix to not hang when splitting -libs packages
also fix segault when --root dir is invalid and rename lua-apk to
lua5.2-apk.
ref #2134
ref #2135
- Revision ed060911 by Natanael Copa on 2013-07-17T07:31:40Z:
solver: do not disqualify already disqualified packages
We should not disqualify non-selectable packages as it would mark it as
dirty, forcing it to reconsider the name again, which could end up in
an endless loop.
fixes #2135