Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:kostyasha:rosa
perl-URPM
URPM-4.43-loop-prevent.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File URPM-4.43-loop-prevent.patch of Package perl-URPM
#(resolve_requested__no_suggests_) prevent urpmi from looping forever when some packages are broken #alternatively, we could try detecting if diff_provides doesn't change #for a couple loops or not going over already rejected packages #(selecting/promoting/rejecting the same package forever) # #eg: gtk+3.0-3.6.1-3.mga3.x86_64 is on the mirrors but not #lib64gtk+3_0-3.6.1-3.mga3.x86_64 #we will then loop forever: # #set_rejected: gtk+3.0-3.6.1-2.mga3.x86_64 #installed lib64gtk+3_0-3.6.1-2.mga3.x86_64 is conflicting because of #unsatisfied gtk+3.0[== 3.6.1-2.mga3] gtk+3.0[*][== 3.6.1-2.mga3] #set_rejected: lib64gtk+3_0-3.6.1-2.mga3.x86_64 #installed lib64gtk+3.0-devel-3.6.1-2.mga3.x86_64 is conflicting because #of unsatisfied lib64gtk+3_0[== 3.6.1] #set_rejected: lib64gtk+3.0-devel-3.6.1-2.mga3.x86_64 #installed lib64gtk-gir3.0-3.6.1-2.mga3.x86_64 is conflicting because of #unsatisfied lib64gtk+3_0[== 3.6.1-2.mga3] #set_rejected: lib64gtk-gir3.0-3.6.1-2.mga3.x86_64 #installed gtk+3.0-3.6.1-2.mga3.x86_64 is conflicting because of #unsatisfied lib64gtk+3_0[== 3.6.1] #promoting gtk+3.0-3.6.1-3.mga3.x86_64 because of conflict above #unselecting gtk+3.0-3.6.1-3.mga3.x86_64 # #set_rejected: gtk+3.0-3.6.1-2.mga3.x86_64 #(...) --- a/URPM/Resolve.pm 2013-01-14 16:50:53.000000000 +0400 +++ b/URPM/Resolve.pm 2013-01-14 16:57:38.977414040 +0400 @@ -971,6 +971,7 @@ #- then examine provides that will be removed (which need to be satisfied by another #- package present or by a new package to upgrade), then requires not satisfied and #- finally conflicts that will force a new upgrade or a remove. + my $count = 1; do { while (my $dep = shift @properties) { #- we need to avoid selecting packages if the source has been disabled. @@ -1058,7 +1059,13 @@ } elsif (my $dep = shift @choices) { push @properties, $dep; } - } while @diff_provides || @properties || @choices; + + # safety: + if ($count++ > 50000) { + die("detecting looping forever while trying to resolve dependancies.\n" + . "Aborting... Try again with '-vv --debug' options"); + } + } while (@diff_provides || @properties || @choices); #- return what has been selected by this call (not all selected hash which may be not empty #- previously. avoid returning rejected packages which weren't selectable.
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor