Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Eclipse Platform » how to create and install a feature patch
how to create and install a feature patch [message #335310] Tue, 31 March 2009 18:13 Go to next message
Jon Barrilleaux is currently offline Jon BarrilleauxFriend
Messages: 25
Registered: July 2009
Junior Member
I developed a patch to fix a bug in the Java code formatter
(org.eclipse.jdt.core). I tested it in my local workspace, now I want to
turn it into a patch for general use by myself and others. I'm assuming
that a "CVS patch" only deals with projects in my own workspace. I think
what I need is a "feature patch" targeted to my runtime
installation/plugin target platform.

I've googled around, looked through the eclipse help, cheatsheets, wiki,
FAQs, etc., and even attempted to make a "feature patch", and then
reference it in a target platform configuration, but to no avail.

Any pointers on how to make and install a patch for the "target platform"?
Re: how to create and install a feature patch [message #335312 is a reply to message #335310] Tue, 31 March 2009 18:20 Go to previous messageGo to next message
Paul Webster is currently offline Paul WebsterFriend
Messages: 6859
Registered: July 2009
Location: Ottawa
Senior Member

You're on the right track, you need to make a feature patch project and
then patch the feature that contains the jdt.core plugin.

Make sure you build your plugin with a useful qualifier (slightly
greater than what is there, or something like <current-qualifier>_01)

Then you can create an update site with that feature patch, and deploy
the site.

PW


--
Paul Webster
http://wiki.eclipse.org/Platform_Command_Framework
http://wiki.eclipse.org/Command_Core_Expressions
http://wiki.eclipse.org/Menu_Contributions
http://wiki.eclipse.org/Menus_Extension_Mapping
http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclips e.platform.doc.isv/guide/workbench.htm


Re: how to create and install a feature patch [message #335341 is a reply to message #335312] Thu, 02 April 2009 21:04 Go to previous messageGo to next message
Jon Barrilleaux is currently offline Jon BarrilleauxFriend
Messages: 25
Registered: July 2009
Junior Member
I tried again, by bumping the plugin version from 3.5.0.qualifier to
3.5.1.qualifier. When I try to install the patch the installer complains
that the operation cannot be completed....

"Java Formatter Patch" is not applicable to the current configuration and
will not be installed.
Re: how to create and install a feature patch [message #335342 is a reply to message #335341] Thu, 02 April 2009 23:03 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: francis.oaklandsoftware.com

I don't know that much about this stuff (and this all might be wrong), but
you might be running into a version restriction on the referenced to the
plugin you are installing. in other words, the references to the plugin
might be referencing a maximum version of 3.5.0, adn 3.5.1 is outside of
that. I suggest you use 3.5.0.xxx where XXX is larger than the numeric
qualifier of the existing version of the plugin.

If you are getting ".qualifier", you should change your export so you get
a real numeric value (typically something like 20090331-4000).

HTH,
Francis

On Thu, 02 Apr 2009 14:04:42 -0700, Jon Barrilleaux <jonb@meyersound.com>
wrote:

> I tried again, by bumping the plugin version from 3.5.0.qualifier to
> 3.5.1.qualifier. When I try to install the patch the installer complains
> that the operation cannot be completed....
>
> "Java Formatter Patch" is not applicable to the current configuration and
> will not be installed.
>
>



--
Common Navigator Framework section in Platform Plugin Developer Guide
(Programmer's Guide)
http://help.eclipse.org/ganymede/topic/org.eclipse.platform. doc.isv/guide/cnf.htm

http://dev.eclipse.org/blogs/francis
http://wiki.eclipse.org/Common_Navigator_Framework
http://wiki.eclipse.org/Common_Navigator_Framework_Use_Cases


You have brains in your head.
You have feet in your shoes.
- Dr Seuss, Oh the Places You'll Go
Re: how to create and install a feature patch [message #335343 is a reply to message #335342] Fri, 03 April 2009 00:27 Go to previous messageGo to next message
Jon Barrilleaux is currently offline Jon BarrilleauxFriend
Messages: 25
Registered: July 2009
Junior Member
I changed the plugin version from the original, 3.5.0.v_944, to 3.5.0.v_999.
In the feature patch, I also changed the target feature from 3.5.0 to the
exact one that is currently installed,
3.5.0.v20090311-0800-7p86FEeFHmHunD_LjVCUTgZ.

When I went to install this new feature patch, this time the updater did not
complain, went through the motions, and asked me if I wanted to restart, to
which I said "yes".

However, nothing seems to have changed in the target Eclipse IDE. In
examining the install details I see that the old plugin is still there
(which I confirmed by actually testing the patch in the code formatter).

--jon
Re: how to create and install a feature patch (contd) [message #335344 is a reply to message #335342] Fri, 03 April 2009 00:30 Go to previous messageGo to next message
Jon Barrilleaux is currently offline Jon BarrilleauxFriend
Messages: 25
Registered: July 2009
Junior Member
I forgot to mention that, the details do indeed show that the feature patch
was installed (shows up in the installed software list) but, as I previously
mentioned, looking in the plugin list shows that the old plugin is still
there.

--jon
Re: how to create and install a feature patch [message #335345 is a reply to message #335343] Fri, 03 April 2009 00:44 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: francis.oaklandsoftware.com

Jon, I realized that I tried something similar before with attempting to
patch an existing Eclipse plugin and the answer I found was you simply can
not do it, that is you can't prevent the original version of the plugin
from loading and once that's loaded it's all over in terms of getting your
classes in (you can have your plugin go after the original plugin in the
class loader sequence, but not before, so I will always pick up the
original version of the class and not the replacement version). This is
an OSGi issue in the way they they resolve bundles.

To get further clarification about this, I suggest you post your original
problem on the p2-dev mailing list; they should be able to confirm this.

Francis

On Thu, 02 Apr 2009 17:27:04 -0700, Jon Barrilleaux <jonb@meyersound.com>
wrote:

> I changed the plugin version from the original, 3.5.0.v_944, to
> 3.5.0.v_999.
> In the feature patch, I also changed the target feature from 3.5.0 to the
> exact one that is currently installed,
> 3.5.0.v20090311-0800-7p86FEeFHmHunD_LjVCUTgZ.
>
> When I went to install this new feature patch, this time the updater did
> not
> complain, went through the motions, and asked me if I wanted to restart,
> to
> which I said "yes".
>
> However, nothing seems to have changed in the target Eclipse IDE. In
> examining the install details I see that the old plugin is still there
> (which I confirmed by actually testing the patch in the code formatter).
>
> --jon
>
>



--
Common Navigator Framework section in Platform Plugin Developer Guide
(Programmer's Guide)
http://help.eclipse.org/ganymede/topic/org.eclipse.platform. doc.isv/guide/cnf.htm

http://dev.eclipse.org/blogs/francis
http://wiki.eclipse.org/Common_Navigator_Framework
http://wiki.eclipse.org/Common_Navigator_Framework_Use_Cases


You have brains in your head.
You have feet in your shoes.
- Dr Seuss, Oh the Places You'll Go
Re: how to create and install a feature patch [message #335357 is a reply to message #335343] Fri, 03 April 2009 16:19 Go to previous messageGo to next message
Paul Webster is currently offline Paul WebsterFriend
Messages: 6859
Registered: July 2009
Location: Ottawa
Senior Member

So in your eclipse/features directory what does your feature-patch look
like? In eclipse/plugins, are both jdt plugins there?

We use a feature patch to patch some of the e4 resources stuff into 3.5
.... AFAIK the feature patch must patch the "exact" feature in your
install (as you found out, v20090311-0800-7p86FEeFHmHunD_LjVCUTgZ :-)

Then as long as your feature patch specifies your plugin version and
your plugin version+qualifier is >base.version+qualifier that would seem
to satisfy the requirements for a feature patch.

I assume you created a feature-patch project and not just a feature project?

PW

--
Paul Webster
http://wiki.eclipse.org/Platform_Command_Framework
http://wiki.eclipse.org/Command_Core_Expressions
http://wiki.eclipse.org/Menu_Contributions
http://wiki.eclipse.org/Menus_Extension_Mapping
http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclips e.platform.doc.isv/guide/workbench.htm


Re: how to create and install a feature patch [message #335363 is a reply to message #335357] Fri, 03 April 2009 20:04 Go to previous messageGo to next message
Jon Barrilleaux is currently offline Jon BarrilleauxFriend
Messages: 25
Registered: July 2009
Junior Member
In eclipse/features is see my feature patch as a directory, containing a
manifest and a feature.xml file (included below). In the eclipse/plugins
directory I do not see my version of the plugin .jar file.

For grins, I tried manually adding it, but the system does not use it. i
then tried deleting the old plugin, leaving only my new one, but the IDE
complains a lot. I then tried modifying the org.eclipse.jdt feature.xml
file to reference my version of the plugin instead of the old version, but
the system still urps (i'm guessing there must be other dependencies on that
specific version).

The only way I have been able to get it to "work" is to replace the old
plugin jar file with the newer version, but using the old name. And, as
expected, when I run the IDE I see the effect of my new code. Obviously this
is a crude hack and not an adequate solution.

BTW: I've been delving into the whole matter of how quirky and brittle the
update cycle/system is, and described my findings in Bug 271022. Perhaps
this matter of feature patches and IDE updates should be added to that list.

--jon

==========feature.xml file for my feature patch=================

<?xml version="1.0" encoding="UTF-8" ?>
- <feature id="org.eclipse.jdt.patch" label="Java Formatter Patch"
version="1.0.5" provider-name="Meyer Sound">
<description>Patches the code formatter such that wrapped line indentation
can consist of tabs and spaces.</description>
<copyright>none</copyright>
<license>none</license>
- <requires>
<import feature="org.eclipse.jdt"
version="3.5.0.v20090311-0800-7p86FEeFHmHunD_LjVCUTgZ" patch="true" />
<import plugin="org.eclipse.core.resources" version="3.3.0"
match="compatible" />
<import plugin="org.eclipse.core.runtime" version="3.3.0"
match="compatible" />
<import plugin="org.eclipse.core.filesystem" version="1.0.0"
match="compatible" />
<import plugin="org.eclipse.text" version="3.1.0" match="compatible" />
</requires>
<plugin id="org.eclipse.jdt.core" download-size="0" install-size="0"
version="3.5.0.v_999" unpack="false" />
</feature>
Re: how to create and install a feature patch [message #335397 is a reply to message #335363] Mon, 06 April 2009 13:50 Go to previous messageGo to next message
Paul Webster is currently offline Paul WebsterFriend
Messages: 6859
Registered: July 2009
Location: Ottawa
Senior Member

If you expand your org.eclipse.jdt.core_3.5.0.v_999.jar from your update
site, what does the MANIFEST.MF look like?

PW


--
Paul Webster
http://wiki.eclipse.org/Platform_Command_Framework
http://wiki.eclipse.org/Command_Core_Expressions
http://wiki.eclipse.org/Menu_Contributions
http://wiki.eclipse.org/Menus_Extension_Mapping
http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclips e.platform.doc.isv/guide/workbench.htm


Re: how to create and install a feature patch [message #335410 is a reply to message #335397] Mon, 06 April 2009 18:19 Go to previous messageGo to next message
Jon Barrilleaux is currently offline Jon BarrilleauxFriend
Messages: 25
Registered: July 2009
Junior Member
To create my version, I simply copied the original version, and then changed
a couple source files with my fixes. (From what I have read, there seems to
be no way to simply "patch" the class files -- plugin fragment is not
intended for this use. If this is wrong, please let me know.).

Here is the manifest file....

==========

Manifest-Version: 1.0

Main-Class: org.eclipse.jdt.internal.compiler.batch.Main

Bundle-ManifestVersion: 2

Bundle-Name: %pluginName

Bundle-SymbolicName: org.eclipse.jdt.core; singleton:=true

Bundle-Version: 3.5.0.v_999

Bundle-Activator: org.eclipse.jdt.core.JavaCore

Bundle-Vendor: %providerName

Bundle-Localization: plugin

Export-Package: org.eclipse.jdt.core,

org.eclipse.jdt.core.compiler,

org.eclipse.jdt.core.compiler.batch,

org.eclipse.jdt.core.dom,

org.eclipse.jdt.core.dom.rewrite,

org.eclipse.jdt.core.eval,

org.eclipse.jdt.core.formatter,

org.eclipse.jdt.core.jdom,

org.eclipse.jdt.core.search,

org.eclipse.jdt.core.util,

org.eclipse.jdt.internal.codeassist;x-internal:=true,

org.eclipse.jdt.internal.codeassist.complete;x-internal:=tru e,

org.eclipse.jdt.internal.codeassist.impl;x-internal:=true,

org.eclipse.jdt.internal.codeassist.select;x-internal:=true,

org.eclipse.jdt.internal.compiler;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.ast;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.batch;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.classfmt;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.codegen;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.env;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.flow;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.impl;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.lookup;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.parser;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.parser.diagnose;x-friends: = " org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.problem;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.compiler.util;x-friends:=" org.eclipse.jdt.compiler.tool,org.eclipse.jdt.apt.pluggable. core ",

org.eclipse.jdt.internal.core;x-friends:="org.eclipse.jdt.apt.pluggable.core ",

org.eclipse.jdt.internal.core.builder;x-friends:="org.eclipse.jdt.apt.pluggable.core ",

org.eclipse.jdt.internal.core.dom;x-internal:=true,

org.eclipse.jdt.internal.core.dom.rewrite;x-internal:=true,

org.eclipse.jdt.internal.core.eval;x-internal:=true,

org.eclipse.jdt.internal.core.hierarchy;x-internal:=true,

org.eclipse.jdt.internal.core.index;x-internal:=true,

org.eclipse.jdt.internal.core.jdom;x-internal:=true,

org.eclipse.jdt.internal.core.search;x-internal:=true,

org.eclipse.jdt.internal.core.search.indexing;x-internal:=tr ue,

org.eclipse.jdt.internal.core.search.matching;x-internal:=tr ue,

org.eclipse.jdt.internal.core.search.processing;x-internal:= true,

org.eclipse.jdt.internal.core.util;x-friends:="org.eclipse.jdt.apt.pluggable.core ",

org.eclipse.jdt.internal.eval;x-internal:=true,

org.eclipse.jdt.internal.formatter;x-internal:=true,

org.eclipse.jdt.internal.formatter.align;x-internal:=true,

org.eclipse.jdt.internal.formatter.comment;x-internal:=true,

org.eclipse.jdt.internal.formatter.old;x-internal:=true

Require-Bundle: org.eclipse.core.resources;bundle-version="[3.3.0,4.0.0)",

org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)",

org.eclipse.core.filesystem;bundle-version="[1.0.0,2.0.0)",

org.eclipse.text;bundle-version="[3.1.0,4.0.0)",

org.eclipse.team.core;bundle-version="[3.1.0,4.0.0)";resolution:=optional

Bundle-RequiredExecutionEnvironment: J2SE-1.4

Eclipse-ExtensibleAPI: true

Bundle-ActivationPolicy: lazy



========================





"Paul Webster" <pwebster@ca.ibm.com> wrote in message
news:grd1ba$lvm$1@build.eclipse.org...
> If you expand your org.eclipse.jdt.core_3.5.0.v_999.jar from your update
> site, what does the MANIFEST.MF look like?
>
> PW
>
>
> --
> Paul Webster
> http://wiki.eclipse.org/Platform_Command_Framework
> http://wiki.eclipse.org/Command_Core_Expressions
> http://wiki.eclipse.org/Menu_Contributions
> http://wiki.eclipse.org/Menus_Extension_Mapping
> http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclips e.platform.doc.isv/guide/workbench.htm
Re: how to create and install a feature patch [message #335411 is a reply to message #335410] Mon, 06 April 2009 19:28 Go to previous messageGo to next message
Paul Webster is currently offline Paul WebsterFriend
Messages: 6859
Registered: July 2009
Location: Ottawa
Senior Member

Jon Barrilleaux wrote:
> To create my version, I simply copied the original version, and then changed
> a couple source files with my fixes. (From what I have read, there seems to
> be no way to simply "patch" the class files -- plugin fragment is not
> intended for this use. If this is wrong, please let me know.).

Fragments can be used to patch host plugins, but only with collusion on
the part of the host plugin. They don't work as a general patch
solution. For RCP apps, http://wiki.eclipse.org/Adaptor_Hooks can be
used to replace specific classes (similar to what is used by
http://wiki.eclipse.org/Equinox_Transforms for
http://wiki.eclipse.org/Product_Customization). But this is also not a
general patch solution.

A patch feature and flat out replacing the plugin to be patches with a
higher version is the supported way to do what you are trying ... but
I'm not sure why it is failing for you.

Of course, I wasn't able to update jdt.core and export the plugin at all :-)

PW



--
Paul Webster
http://wiki.eclipse.org/Platform_Command_Framework
http://wiki.eclipse.org/Command_Core_Expressions
http://wiki.eclipse.org/Menu_Contributions
http://wiki.eclipse.org/Menus_Extension_Mapping
http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclips e.platform.doc.isv/guide/workbench.htm


Re: how to create and install a feature patch [message #335415 is a reply to message #335411] Mon, 06 April 2009 20:54 Go to previous message
Jon Barrilleaux is currently offline Jon BarrilleauxFriend
Messages: 25
Registered: July 2009
Junior Member
Thanks for your help. I guess this is the end of this thread. At Francis's
suggestion I started a thread over in p2-dev as regards best practices for
patching the eclipse platform. Perhaps they can offer some insight or words
of encouragment (or a new set of crampons so that I can continue my trek up
the steep face of the eclipse learning curve).

--jon

"Paul Webster" <pwebster@ca.ibm.com> wrote in message
news:grdl4q$9kd$1@build.eclipse.org...
> Jon Barrilleaux wrote:
>> To create my version, I simply copied the original version, and then
>> changed a couple source files with my fixes. (From what I have read,
>> there seems to be no way to simply "patch" the class files -- plugin
>> fragment is not intended for this use. If this is wrong, please let me
>> know.).
>
> Fragments can be used to patch host plugins, but only with collusion on
> the part of the host plugin. They don't work as a general patch solution.
> For RCP apps, http://wiki.eclipse.org/Adaptor_Hooks can be used to replace
> specific classes (similar to what is used by
> http://wiki.eclipse.org/Equinox_Transforms for
> http://wiki.eclipse.org/Product_Customization). But this is also not a
> general patch solution.
>
> A patch feature and flat out replacing the plugin to be patches with a
> higher version is the supported way to do what you are trying ... but I'm
> not sure why it is failing for you.
>
> Of course, I wasn't able to update jdt.core and export the plugin at all
> :-)
>
> PW
>
>
>
> --
> Paul Webster
> http://wiki.eclipse.org/Platform_Command_Framework
> http://wiki.eclipse.org/Command_Core_Expressions
> http://wiki.eclipse.org/Menu_Contributions
> http://wiki.eclipse.org/Menus_Extension_Mapping
> http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclips e.platform.doc.isv/guide/workbench.htm
Previous Topic:externalized strings : conver to 'eclipse mechanism'
Next Topic:use Commands/Handlers in a non-Workbench window
Goto Forum:
  


Current Time: Thu Nov 07 05:12:23 GMT 2024

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

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

Back to the top