[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [p2-dev] Planner explanation question
|
The resolver computes *one* explanation only, so even if you have
multiple missing requirements, only one will be returned in a minimal
explanation, because it is sufficient to explain the failure.
We might have a trick to manage missing requirements and report all of
them, but we would still have an issue in case of multiple singleton
violations.
Daniel
Le 12/05/2011 21:18, Pascal Rapicault a écrit :
> What is returned by the slicer is not an explanation, but just a "bunch
> of notes" collected along the way as it was slicing. The information
> collected is very vague and here is an example why. I have the following IUs
> A requires B [0, 3.0)
> B-1 requires C
> B-1.1 requires E
> B-2 requires D
> D
> When the slicer is slicing for A, it will include B-1, B-1.1 and B-2 in
> the slice. Now when it slices B-1 it will fail at finding a C and will
> create a log. Same will go for B-1.1 with E. When it comes to B-2 it
> will find D. In this case, the resolution of A will have a solution. Now
> if I take B-2 out of the set of available IUs, then the slicer will
> return 2 warnings but really only one of those warnings would have to be
> "fixed" for a solution to be found. Of course this is a small example,
> if you follow all the possibilities of all the versions you can get a
> lot of noise from which it may be hard for you to figure out what is
> really missing.
>
> Computing an explanation is done by the core SAT solver and will sort
> through the noise to figure out something that you can act upon.
> I will let Daniel explain if more can actually be done.
>
> I have released the test you provided, but it is not enabled as part of
> the global test suite.
>
> PaScaL
>
> On 2011-05-12, at 2:45 PM, Todorova, Katya wrote:
>
>> The Slicer returns all missing requirements properly but if there's an
>> attempt to calculate the minimal explanation, some of these
>> reqirements are cut off and only the first one is returned to the end
>> user.
>>
>> Here's the part of code that calculates the explanation:
>> **
>> *if*(s.getCode() != /UNSATISFIABLE/|| (context != *null*&&
>> !(context.getProperty(/EXPLANATION/) == *null*||
>> Boolean./TRUE/.toString().equalsIgnoreCase(context.getProperty(/EXPLANATION/))))) {
>> ...
>>
>> * return* plan; //that plan
>> status contains all problematic requirements though all substatus
>> codes are "Warning"
>>
>> }
>>
>>
>> //Extract the explanation
>>
>> Set<Explanation> explanation =
>> projector.getExplanation(sub.newChild(/_ExpandWork_/________/ 4));
>> //here some of missing requirements are removed and the only one
>> remaining is marked as Error.
>>
>> Test case attached.
>>
>> What is the minimal explanation supposed to contain?
>>
>> Thanks,
>> Katya
>>
>> ------------------------------------------------------------------------
>> *From:* p2-dev-bounces@xxxxxxxxxxx
>> <mailto:p2-dev-bounces@xxxxxxxxxxx>
>> [mailto:p2-dev-bounces@xxxxxxxxxxx] *On Behalf Of *Pascal Rapicault
>> *Sent:* Thursday, May 12, 2011 8:56 PM
>> *To:* P2 developer discussions
>> *Subject:* Re: [p2-dev] Planner explanation question
>>
>> From a quick code inspection to SimplePlanner, setting explanation
>> to false will completely disable the explanation support (this is
>> used in the case of the dropins to avoid computing the explanation
>> since there is no one to read it).
>> Some of the missing requirements are filtered as part of the
>> Slicer (but this is expected and filter out the noise), but after
>> that the explanation is constructed by the solver and it tries to
>> return the minimal explanation between what you have installed and
>> what you are trying to install.
>>
>> However if you have several missing requirements I think it will
>> stop at the first one. Is that the pb you are seeing?
>>
>> If you can provide an automated test case, we could see what can
>> be done.
>>
>> On 2011-05-12, at 1:40 PM, Todorova, Katya wrote:
>>
>>> Hi guys,
>>>
>>> I came across a strange behavior of p2 planner - it hides
>>> information when trying to resolve an IU and resolution fails
>>> (due to missing requirements for example).
>>> If there are more than one missing requirements the final
>>> explanation (and corresponding MultiStatus) will contain only the
>>> first one found. This default behavior
>>> could be avoided if "org.eclipse.equinox.p2.director.explain"
>>> property is set to "false" in the provisioning context used by
>>> the planner.
>>>
>>> I thought that the explanation is supposed to contain more
>>> details than the "ordinary" status but it turned out it's not the
>>> case and it contains even less. Is that expected?
>>> If yes, any idea why?
>>>
>>> Thanks in advance,
>>> Katya
>>>
>>> _______________________________________________
>>> p2-dev mailing list
>>> p2-dev@xxxxxxxxxxx <mailto:p2-dev@xxxxxxxxxxx>
>>> https://dev.eclipse.org/mailman/listinfo/p2-dev
>>
>> <ExplanationHidesRequirementsTest.txt>_______________________________________________
>> p2-dev mailing list
>> p2-dev@xxxxxxxxxxx <mailto:p2-dev@xxxxxxxxxxx>
>> https://dev.eclipse.org/mailman/listinfo/p2-dev
>
>
>
> _______________________________________________
> p2-dev mailing list
> p2-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/p2-dev
--
Daniel Le Berre mailto:leberre@xxxxxxx
MCF-HDR, CRIL-CNRS UMR 8188, Universite d'Artois
http://www.cril.univ-artois.fr/~leberre