Eclipse Community Forums - RDF feed
https://www.eclipse.org/forums/
Eclipse Community ForumsCan p2 dropins be used to update existing plugins?
https://www.eclipse.org/forums/index.php/mv/msg/207350/663902/#msg_663902
BTW (this might not be important but...) the application is shared application so multiple users run it from a shared mount point and none have write access to that specific directory.
Thanks
Max]]>Max Mising name2011-04-06T18:42:08-00:00Re: Can p2 dropins be used to update existing plugins?
https://www.eclipse.org/forums/index.php/mv/msg/207350/664079/#msg_664079
eclipse 3.4, and is a best effort, optionally installing, silently
failing hack
dropins won't effectively update a bundle that's already in your eclipse
as part of a feature, because the dropins version is marked as optional
and the older one is required by the feature, so the dropins one is tossed.
I'd install new plugins or patches using p2 (either interactively
through Help>Update or Help>Install New Software) or through the p2
director (from scripts). Once you have the correct configuration
including your new patches, you can deliver that with the RPMs that are
doing the update, no?
We don't have any UI to support updates, so it would have to work headless. Is the director the best/only option? I'd like to be able to patch single bundles across many application installs, without updating a p2 site and adding self update.
Thanks for any insight,
Justin]]>Justin2011-04-21T00:37:43-00:00Re: Can p2 dropins be used to update existing plugins?
https://www.eclipse.org/forums/index.php/mv/msg/207350/666653/#msg_666653
> Is there another hack to make dropins support replacing a single plugin?
No, that code is poison :-)
> We don't have any UI to support updates, so it would have to work
> headless. Is the director the best/only option? I'd like to be able to
> patch single bundles across many application installs, without updating
> a p2 site and adding self update.
The p2 director can be used to create installs of RCP apps and update
them, all without having any p2 code in the app itself. Or only the
most basic p2, like simpleconfigurator + support (that reads the
bundles.info), using an external director avoids dragging in
self-updating code that you don't need.
Building plugins can generate p2 metadata, in effect creating small p2
repos that can be distributed as a .zip (instead of making it a full
update site on http, for example).
But you still need an eclipse with p2 support somewhere, to manage the
installs if p2 is not really part of your apps.
or would I just need generate.p2.metadata = true or any of them.
Thanks
Max]]>Max Mising name2011-04-21T16:45:45-00:00Re: Can p2 dropins be used to update existing plugins?
https://www.eclipse.org/forums/index.php/mv/msg/207350/666703/#msg_666703
Paul, thanks for the response. I guess I will try to script the use of the director to handle patches and rollbacks of the p2 profile.
Does using a bundle pool allow shared bundles to be updated in one place? I somehow doubt it since each application has its own p2 profile listing each bundle that is used, correct?
Thanks again,
Justin]]>Justin2011-04-21T17:50:59-00:00Re: Can p2 dropins be used to update existing plugins?
https://www.eclipse.org/forums/index.php/mv/msg/207350/666705/#msg_666705
Paul Webster wrote on Thu, 21 April 2011 09:17
Building plugins can generate p2 metadata, in effect creating small p2
repos that can be distributed as a .zip (instead of making it a full
update site on http, for example).
I just tried to build a single bundle and create the p2 metadata using the export wizard. I thought there was an option to "generate p2 metadata" in the wizard, but I don't see it anymore (I'm using 3.6.1). Is there an easy way to do this? The only options I can think of are using the publishers, either in ant or as the standalone applications, which is cumbersome if your target platform is set to something that doesn't include them.
Thanks,
Justin
]]>Justin2011-04-21T18:12:00-00:00Re: Can p2 dropins be used to update existing plugins?
https://www.eclipse.org/forums/index.php/mv/msg/207350/666710/#msg_666710
> Does using a bundle pool allow shared bundles to be updated in one
> place? I somehow doubt it since each application has its own p2 profile
> listing each bundle that is used, correct?
You can use the same bundle pool for all profiles and have the new
bundle in only one location ... but you would have to update each p2
profile with the new bundle.
That option is on the Export>Feature panel, not the one for plugins and
fragments.
If you are only working with plugins, then you would need to use the
same eclipse that has your director to publish metadata about your
plugin (which it can do relatively quickly) and then you can install it
(although you might have to uninstall the existing one).
Is your RCP app feature based? Features tend to record the specific
versions of their plugins. To replace one plugin in a feature-based app
you need to provide a feature patch (a little project that specifically
lists your plugin).
We use that to do a form of continuous testing in our project. We
install eclipse, and then use a feature patch to replace that specific
plugin. The plus side, you can use File>Export...>Feature (on the
feature patch) and it will create the correct p2 data that allows for a
quick install of the feature.patch.
Is there any way to circumvent the security checking on the signing and force the installation of pydev?
Edit: Here is some error output:
Problems downloading artifact: osgi.bundle,org.python.pydev,1.6.5.2011020317.
Error reading signed content:/tmp/signatureFile8739107837822520481.jar
Caused by: java.security.SignatureException: An error occurred while processing the signatures for the file: /tmp/signatureFile8739107837822520481.jar
Caused by: java.security.SignatureException: Either the manifest file or the signature file has been tampered in this jar: /tmp/signatureFile8739107837822520481.jar
Problems downloading artifact: osgi.bundle,org.python.pydev.ast,1.6.5.2011020317.
Error reading signed content:/tmp/signatureFile6536737159620387686.jar
Caused by: java.security.SignatureException: An error occurred while processing the signatures for the file: /tmp/signatureFile6536737159620387686.jar
Caused by: java.security.SignatureException: Either the manifest file or the signature file has been tampered in this jar: /tmp/signatureFile6536737159620387686.jar
Problems downloading artifact: osgi.bundle,org.python.pydev.core,1.6.5.2011020317.
Error reading signed content:/tmp/signatureFile7873137977705228276.jar
Caused by: java.security.SignatureException: An error occurred while processing the signatures for the file: /tmp/signatureFile7873137977705228276.jar
Caused by: java.security.SignatureException: Either the manifest file or the signature file has been tampered in this jar: /tmp/signatureFile7873137977705228276.jar
Problems downloading artifact: osgi.bundle,org.python.pydev.jython,1.6.5.2011020317.
Error reading signed content:/tmp/signatureFile3328232955984746023.jar
Caused by: java.security.SignatureException: An error occurred while processing the signatures for the file: /tmp/signatureFile3328232955984746023.jar
Caused by: java.security.SignatureException: Either the manifest file or the signature file has been tampered in this jar: /tmp/signatureFile3328232955984746023.jar
Problems downloading artifact: osgi.bundle,org.python.pydev.parser,1.6.5.2011020317.
Error reading signed content:/tmp/signatureFile4906840496634795862.jar
Caused by: java.security.SignatureException: An error occurred while processing the signatures for the file: /tmp/signatureFile4906840496634795862.jar
Caused by: java.security.SignatureException: Either the manifest file or the signature file has been tampered in this jar: /tmp/signatureFile4906840496634795862.jar
An error occurred while collecting items to be installed
org.eclipse.osgi Either the manifest file or the signature file has been tampered in this jar: /tmp/signatureFile4906840496634795862.jar
java.security.SignatureException: Either the manifest file or the signature file has been tampered in this jar: /tmp/signatureFile4906840496634795862.jar
at org.eclipse.osgi.internal.signedcontent.SignatureBlockProces sor.verifyManifestAndSignatureFile(SignatureBlockProcessor.j ava:154)
at org.eclipse.osgi.internal.signedcontent.SignatureBlockProces sor.processSigner(SignatureBlockProcessor.java:104)
at org.eclipse.osgi.internal.signedcontent.SignatureBlockProces sor.process(SignatureBlockProcessor.java:60)
at org.eclipse.osgi.internal.signedcontent.SignedBundleFile.set BundleFile(SignedBundleFile.java:47)
at org.eclipse.osgi.internal.signedcontent.SignedBundleHook.get SignedContent(SignedBundleHook.java:247)
at org.eclipse.equinox.internal.p2.artifact.repository.Signatur eVerifier.verifyContent(SignatureVerifier.java:77)
at org.eclipse.equinox.internal.p2.artifact.repository.Signatur eVerifier.verify(SignatureVerifier.java:59)
at org.eclipse.equinox.internal.p2.artifact.repository.Signatur eVerifier.close(SignatureVerifier.java:100)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.S impleArtifactRepository.reportStatus(SimpleArtifactRepositor y.java:906)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.S impleArtifactRepository.downloadArtifact(SimpleArtifactRepos itory.java:510)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.S impleArtifactRepository.getArtifact(SimpleArtifactRepository .java:576)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRe quest.getArtifact(MirrorRequest.java:248)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRe quest.transferSingle(MirrorRequest.java:223)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRe quest.transfer(MirrorRequest.java:179)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRe quest.perform(MirrorRequest.java:115)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.S impleArtifactRepository.getArtifact(SimpleArtifactRepository .java:565)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.S impleArtifactRepository.getArtifacts(SimpleArtifactRepositor y.java:616)
at org.eclipse.equinox.internal.p2.engine.DownloadManager.fetch (DownloadManager.java:88)
at org.eclipse.equinox.internal.p2.engine.DownloadManager.start (DownloadManager.java:77)
at org.eclipse.equinox.internal.p2.engine.phases.Collect.comple tePhase(Collect.java:76)
at org.eclipse.equinox.internal.p2.engine.Phase.postPerform(Pha se.java:216)
at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.j ava:84)
at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(Phas eSet.java:44)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine .java:73)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine .java:44)
at org.eclipse.equinox.internal.provisional.p2.director.PlanExe cutionHelper.executePlan(PlanExecutionHelper.java:41)
at org.eclipse.equinox.internal.provisional.p2.director.PlanExe cutionHelper.executePlan(PlanExecutionHelper.java:23)
at org.eclipse.equinox.internal.p2.director.app.DirectorApplica tion.executePlan(DirectorApplication.java:575)
at org.eclipse.equinox.internal.p2.director.app.DirectorApplica tion.planAndExecute(DirectorApplication.java:569)
at org.eclipse.equinox.internal.p2.director.app.DirectorApplica tion.performProvisioningActions(DirectorApplication.java:556 )
at org.eclipse.equinox.internal.p2.director.app.DirectorApplica tion.run(DirectorApplication.java:807)
at org.eclipse.equinox.internal.p2.director.app.DirectorApplica tion.start(DirectorApplication.java:961)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Max]]>Max Mising name2011-04-22T20:48:39-00:00Re: Can p2 dropins be used to update existing plugins?
https://www.eclipse.org/forums/index.php/mv/msg/207350/666992/#msg_666992
> So I've got my application building properly and have moved to using the
> director to install and update my features. I am running into an issue
> now where I cannot install the pydev feature using the director due to
> untrusted jar signatures. Here is a link on it in pydev, apparently they
> think it is eclipse's job to allow untrusted signed jars to be installed
> with the director.
> http://sourceforge.net/tracker/index.php?func=detail&aid =3097682&group_id=85796&atid=577329
>
because when I run with the same arguments after my application has been installed, I get this exception. I originally decided to run out of eclipse to I could easily debug why it wasn't working and then realized it somehow works from there. Any ideas? I'm guessing I'm missing a plugin or something but I can't be certain since it all works when I run from eclipse.
INFO 2011-04-28 11:15:23,581 [Start Level Event Dispatcher] ExtenderConfiguration: No custom extender configuration detected; using defaults...
org.eclipse.osgi Application error
java.lang.NullPointerException: A null service reference is not allowed.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.g etService(BundleContextImpl.java:660)
at org.eclipse.equinox.internal.p2.director.app.DirectorApplica tion.initializeServices(DirectorApplication.java:426)
at org.eclipse.equinox.internal.p2.director.app.DirectorApplica tion.run(DirectorApplication.java:802)
at org.eclipse.equinox.internal.p2.director.app.DirectorApplica tion.start(DirectorApplication.java:961)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
Thanks
Max]]>Max Mising name2011-04-28T14:55:07-00:00Re: Can p2 dropins be used to update existing plugins?
https://www.eclipse.org/forums/index.php/mv/msg/207350/667438/#msg_667438
an install. Installing from a p2 repo will respect the unpack=true of
their containing feature.
Are you saying you are installing/creating the pydev plugins, and then
using the install to create a p2 repo containing them? If you need them
in your final repo, you should have a step that takes them from before
you install them and channel them directly into your final p2 repo.
That's assuming I've understood your build steps correctly.
ex: we use p2 repos of 3.7 I builds (and a few other repos) to create a
repo2runnable target for our PDE build. When we go to create our final
repo, we mirror from the original 3.7 I build repo we started with (so
as to not lose any metadata already in their repo). We don't take our
repo2runnable target and try and re-create the parts of the 3.7 repo we
need.