Quantcast

Adding support for p2 repositories

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Adding support for p2 repositories

Tobias Schulte
Hello,

for the gradle plugin wuff there exists one issue to support p2
repositories (https://github.com/akhikhl/wuff/issues/9). But I am not
sure if this can be implemented in a plugin -- at least if one wants to
have a dsl like

     repositories {
         p2 { url 'http://download.eclipse.org/releases/luna/' }
     }

IMHO the only way to get the above from a plugin would be to use
meta-programming. Sure, I could create an extension named p2 on
project.repositories with a method url, but I might want to support

     repositories {
         p2 {
             url 'http://download.eclipse.org/releases/luna'
             unit id: 'org.eclipse.foo', version: '1.5'
             unit id: 'org.eclipse.bar', version: '2.3'
         }
     }

to restrict the repository to some installable units, or define a name

     repositories {
         p2 {
             name 'luna'
             url 'http://download.eclipse.org/releases/luna'
         }
     }

 From my understanding of the current implementation of
repositories.maven and repositories.ivy, if I wanted to implement a p2
repository access in gradle-core, I would start by adding a new method
p2 to DefaultRepositoryHandler, implementing it like the maven and ivy
support, maybe even delegating to a pattern based ivy repository to
download the artifacts and only implement some logic to read the
artifacts.jar, content.jar, compositeContent.jar and
compositeArtifacts.jar. Is this the way to go?

Or will
https://github.com/gradle/gradle/blob/master/design-docs/repository-extensibility.md 
allow to implement this with less problems?

What do you think?

Regards,

Tobias



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Adding support for p2 repositories

Adam Murdoch

On 3 Sep 2014, at 7:13 am, Tobias Schulte <[hidden email]> wrote:

Hello,

for the gradle plugin wuff there exists one issue to support p2 repositories (https://github.com/akhikhl/wuff/issues/9). But I am not sure if this can be implemented in a plugin -- at least if one wants to have a dsl like

   repositories {
       p2 { url 'http://download.eclipse.org/releases/luna/' }
   }

IMHO the only way to get the above from a plugin would be to use meta-programming. Sure, I could create an extension named p2 on project.repositories with a method url, but I might want to support

   repositories {
       p2 {
           url 'http://download.eclipse.org/releases/luna'
           unit id: 'org.eclipse.foo', version: '1.5'
           unit id: 'org.eclipse.bar', version: '2.3'
       }
   }

to restrict the repository to some installable units, or define a name

   repositories {
       p2 {
           name 'luna'
           url 'http://download.eclipse.org/releases/luna'
       }
   }

From my understanding of the current implementation of repositories.maven and repositories.ivy, if I wanted to implement a p2 repository access in gradle-core, I would start by adding a new method p2 to DefaultRepositoryHandler, implementing it like the maven and ivy support, maybe even delegating to a pattern based ivy repository to download the artifacts and only implement some logic to read the artifacts.jar, content.jar, compositeContent.jar and compositeArtifacts.jar. Is this the way to go?

Or will https://github.com/gradle/gradle/blob/master/design-docs/repository-extensibility.md allow to implement this with less problems?

What do you think?

I think you’d have to change Gradle core in some way to make this work well. There are two approaches:

1. Implement RepositoryHandler.p2() and all the related stuff in Gradle core in the same way as maven() or ivy().
2. Add some public APIs to Gradle core that would allow a repository implementation to be provided by a plugin, and then implement p2 support in some new ‘p2' plugin.


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
CTO Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com



Loading...