Setting up MacPorts libsolv branch and Testing libsolv search

Clemens Lang cal at macports.org
Tue Jun 23 14:38:07 PDT 2015


Hi,

----- On 23 Jun, 2015, at 23:02, Ryan Schmidt ryandesign at macports.org wrote:

> On Jun 23, 2015, at 3:24 AM, Clemens Lang wrote:
>
>> I've been in contact with the developer of libsolv about that and my
>> current approach would be to represent every variant separately in the
>> package universe, e.g. a port A with the variants var1, var2, var3 with a
>> conflict between var2 and var3 and an additional dependency on C in var1
>> would become
>> 
>> portA+0 (i.e. without variants)
>>  Provides: portA
>> 
>> portA+var1
>>  Provides: portA
>>  Requires: portC
>> 
>> portA+var2
>>  Provides: portA
>>  Conflicts portA+var3
>> 
>> portA+var3
>>  Provides: portA
>>  Conflicts: portA+var2
> 
> What about portA+var1+var2 and portA+var1+var3? Exponential explosion of
> combinations?

No, the whole point of the idea is to avoid the combinatorial explosion and
stay linear in the number of variants by having exactly one variant per one
of these "virtual/pseudo" ports. They may have the same name, but that does
not mean that they cannot be "installed" at the same time.

port install portA+var1+var3 on the command line would translate into a
request to install both portA+var1 and portA+var3 (in the libsolv
representation), and would then be translated back into installing portA
with the var1 and var3 variants after dependency calculation has finished.

-- 
Clemens Lang


More information about the macports-dev mailing list