setup and 'provides:'

cyg Simple
Mon Oct 8 15:17:00 GMT 2018

On 10/8/2018 11:05 AM, Ken Brown wrote:
> On 10/8/2018 10:41 AM, cyg Simple wrote:
>> On 10/7/2018 6:02 PM, Ken Brown wrote:
>>> I've been experimenting with setup's support for the 'provides:' tag, and it's
>>> not behaving the way I expect [*].  I'm not sure if something in setup's
>>> interface with libsolv needs to be tweaked or if I'm just misunderstanding how
>>> this should work.  Here's what I tried:
>> Shouldn't there be a need for a 'conflicts:' tag as well?
> setup does support a 'conflicts:' tag, but I don't see why I should need 
> it here.

You might not, others might.  See below ...

>>> I created a test repo with packages A, B, and C.  I made A require foo (not a
>>> package), and I made B and C provide foo.  The attached script does all this
>>> [**].  I then ran setup and selected A for installation.
>> So C:foo conflicts with B:foo.
> I'm not sure what you mean by C:foo and B:foo.  My intention is that 
> "foo" is an identifier for a single requirement, which can be provided 
> by B or C or both.  I explicitly want to allow both to be installed, so 
> I don't want B and C to conflict with one another.

"A single requirement" is the issue.  B and C both provide foo but the
foo in B and C are different and conflict with one another so which one
is correct to satisfy the package A requirement?

> Here's an example (modeled on what Fedora does): Cygwin has four 
> packages that provide emacs binaries: emacs, emacs-X11, emacs-lucid, and 
> emacs-w32.  Users can install any or all of these if they want to be 
> able to run emacs.  The differences are in the UI.  These packages don't 
> conflict with one another.

How do they overcome the conflict?

> If some other package requires an emacs binary, I would like it to be 
> able to require "emacs-bin".  [This plays the role of "foo" in my test 
> case.]  Then I would like to be able to say that all four emacs packages 
> above provide "emacs-bin".

That's fine but how do an installation of multiple emacs-bin not create
a conflict?

>>> The result was that libsolv simply chose B for installation, and setup showed
>>> this in the "Confirm" dialog.  What I expected was that libsolv would report a
>>> problem ("A requires foo but no selected or installed packages provide it"),
>>> with two possible solutions ("Install B or C").  Is that expectation unreasonable?
>> Not unreasonable but what happens if B:foo is already installed and
>> C:foo is the required because the functionality is slightly different?
> See above.

You're above didn't answer the question.

cyg Simple

More information about the Cygwin-apps mailing list