Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

A working example of custom p2 provisioning action

Tags:

eclipse

p2

I’m trying to write a custom p2 provisioning action to execute my own code when installing feature. Doing so with installHandler for Update Manager was easy, but as for p2, there’s absolutely no docs on this topic in the web, most of the time eclispe just silently ignores me (even in a log), and the only example I’ve found is not working.

So, if somebody can point me at a working example of custom provisioning action, that would help me understand the whole thing.

Thanks.

like image 246
Niki Tonsky Avatar asked May 27 '11 15:05

Niki Tonsky


1 Answers

Finally, I’ve got it working somehow:

example_plugin:

plugin.xml:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.5"?>
<plugin>
  <extension point="org.eclipse.equinox.p2.engine.touchpoints" id="example" name="Eclipse Touchpoint">
    <touchpoint type="com.company.example.plugin" class="org.eclipse.equinox.internal.p2.touchpoint.eclipse.EclipseTouchpoint" version="1.0"/>
  </extension>

  <extension point="org.eclipse.equinox.p2.engine.actions">
    <action
      class="com.company.example.plugin.CustomAction"
      name="do_custom_action"
      touchpointType="com.company.example.plugin"
      touchpointVersion="1.0"          
      version="1.0">
    </action>
  </extension>
</plugin>

META-INF\p2.xml:

provides.0.namespace=com.company.example.plugin
provides.0.name=do_custom_action
provides.0.version=1.0

example_feature:

feature.xml:

<?xml version="1.0" encoding="UTF-8"?>
<feature id="com.company.example.feature" label="Maven installer feature" version="2.2.1.qualifier">
  <description url="http://www.example.com/description">[Enter Feature Description here.]</description>
  <copyright url="http://www.example.com/copyright">[Enter Copyright Description here.]</copyright>
  <license url="http://www.example.com/license">[Enter License Description here.]</license>

 <requires>
   <import plugin="com.company.example.plugin"/>
 </requires>

 <plugin
   id="com.company.example.plugin"
   download-size="0"
   install-size="0"
   version="0.0.0"
   unpack="false"/>
</feature>

p2.inf:

metaRequirements.0.namespace=com.company.example.plugin
metaRequirements.0.name=do_custom_action
metaRequirements.0.range=1.0

instructions.configure = com.company.example.plugin.do_custom_action();

General comments:

  • Custom touchpoint action is stored in a plugin as a regular class.
  • Update site must contain proper artifacts.jar/content.jar (don’t know why, took a lot of time to debug this).
like image 166
Niki Tonsky Avatar answered Oct 23 '22 12:10

Niki Tonsky