Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Buckminster » P2 provider using different repositories
P2 provider using different repositories [message #1062698] Mon, 10 June 2013 12:16 Go to next message
Adolfo Sanchez-Barbudo Herrera is currently offline Adolfo Sanchez-Barbudo HerreraFriend
Messages: 254
Registered: July 2009
Senior Member
Hi Buckminsters,

I'm trying to deal with a requesite which I'm not sure how to deal with buckminster.

I currently have my rmaps configured to resolve depedencies against different P2 repositories, depending on a parameter (build.type). For instance to resolve my dependencies on EMF bundles/features:

  <rm:searchPath name="emf">
    <rm:provider componentTypes="eclipse.feature,osgi.bundle" resolutionFilter="(&amp;(build.type=N)(resolve.target.platform=true))" readerType="p2" source="false" mutable="false">
      <rm:property key="buckminster.source" value="false"/>
      <rm:property key="buckminster.mutable" value="false"/>
      <rm:uri format="{0}/modeling/emf/emf/updates/nightly">
        <bc:propertyRef key="eclipse.download"/>
      </rm:uri>
    </rm:provider>
    <rm:provider componentTypes="eclipse.feature,osgi.bundle" resolutionFilter="(&amp;(build.type=I)(resolve.target.platform=true))" readerType="p2" source="false" mutable="false">
      <rm:property key="buckminster.source" value="false"/>
      <rm:property key="buckminster.mutable" value="false"/>
      <rm:uri format="{0}/modeling/emf/emf/updates/interim">
        <bc:propertyRef key="eclipse.download"/>
      </rm:uri>
    </rm:provider>
  ...


However, now I have the following requisite:

"N-build to use the most recent of EMF's R/S/I/N repository
I-build to use the most recent of EMF's R/S/I repository
S-build to use the most recent of EMF's R/S repository
R-build to use the most recent of EMF's R repository"

I can't find a straightforward solution to implement this, at least, via Buckminster rmaps configuration.

Any hint about this is very welcomed.

Cheers,
Adolfo.
Re: P2 provider using different repositories [message #1062707 is a reply to message #1062698] Mon, 10 June 2013 12:43 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3232
Registered: July 2009
Senior Member
Hi Adolfo,

You can either combine the repos in one search path and let Buckminster choose the best fit (highest version) or you can
use separate search paths with failOnError="false" on each locator and have Buckminster try them in turn.

Filters can be combined with OR (|) as well as AND (&) that you're already using and they can be nested to any depth
using parenthesis. This is perfectly legal:

(&(|(build.type=R)(build.type=S)(build.type=I))(resolve.target.platform=true))

HTH,
- thomas

On 2013-06-10 14:16, Adolfo Sanchez-Barbudo Herrera wrote:
> Hi Buckminsters,
>
> I'm trying to deal with a requesite which I'm not sure how to deal with buckminster.
>
> I currently have my rmaps configured to resolve depedencies against different P2 repositories, depending on a parameter
> (build.type). For instance to resolve my dependencies on EMF bundles/features:
>
> <rm:searchPath name="emf">
> <rm:provider componentTypes="eclipse.feature,osgi.bundle"
> resolutionFilter="(&(build.type=N)(resolve.target.platform=true))" readerType="p2" source="false" mutable="false">
> <rm:property key="buckminster.source" value="false"/>
> <rm:property key="buckminster.mutable" value="false"/>
> <rm:uri format="{0}/modeling/emf/emf/updates/nightly">
> <bc:propertyRef key="eclipse.download"/>
> </rm:uri>
> </rm:provider>
> <rm:provider componentTypes="eclipse.feature,osgi.bundle"
> resolutionFilter="(&(build.type=I)(resolve.target.platform=true))" readerType="p2" source="false" mutable="false">
> <rm:property key="buckminster.source" value="false"/>
> <rm:property key="buckminster.mutable" value="false"/>
> <rm:uri format="{0}/modeling/emf/emf/updates/interim">
> <bc:propertyRef key="eclipse.download"/>
> </rm:uri>
> </rm:provider>
> ...
>
> However, now I have the following requisite:
>
> "N-build to use the most recent of EMF's R/S/I/N repository
> I-build to use the most recent of EMF's R/S/I repository
> S-build to use the most recent of EMF's R/S repository
> R-build to use the most recent of EMF's R repository"
>
> I can't find a straightforward solution to implement this, at least, via Buckminster rmaps configuration.
>
> Any hint about this is very welcomed.
>
> Cheers,
> Adolfo.
Re: P2 provider using different repositories [message #1062740 is a reply to message #1062707] Mon, 10 June 2013 14:57 Go to previous message
Adolfo Sanchez-Barbudo Herrera is currently offline Adolfo Sanchez-Barbudo HerreraFriend
Messages: 254
Registered: July 2009
Senior Member
Hi Thomas,

Thanks for the reply

I don't want to combine several filters for the same repo, but the other way: Combine several repos for the same filter.

Several locators is not the solution here, since the key point is that 4 available repositories may resolve the desired bundle/feature. As far as I know, as soon the bundle is resolved, no more locators are used.

I thought that the same applied for different providers in the same SearchPath, that is, as soon the first privider resolves your bundle, the remaining one are ignored. However, as I understand from your comment, every of them are used so that if several of them provide a bundle candidate, the higher version is used. That's what I want !!!. If so, it's just a matter of adjusting the filters as you mentioned.

Rechecking bucky book, it specifies what you mentioned ;):
Quote:

A search path must have at least one provider. A search path typically contains one provider, but
it is possible to specify more than one -- in which case the provider capable of returning the component
with the highest matching score compared against the request will be used. If two providers return
the same score, the provider declared first is used. When making a request, options can be set that are
compared to attributes set in the provider declarations to reach the score.


I'll try it. Thanks a lot !!!!

Cheers,
Adolfo.
Previous Topic:How to let Buckminster determine additional bundles?
Next Topic:Error 0142
Goto Forum:
  


Current Time: Sat Dec 20 15:51:09 GMT 2014

Powered by FUDForum. Page generated in 0.01814 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software