Henrik Lindberg | 1 Jul 19:33
Favicon
Gravatar

P2 authoring reaches first milestone

Hi,
I have now reached a first milestone in P2 IU authoring. This wikipage
http://wiki.eclipse.org/Equinox_p2_Metadata_Authoring 
  has screenshots of the editor. There are also instructions (at the  
top), where to find the editor and how run it.

To summarize:
- IU files can be created and edited
- Support for undo/redo and interactive error messages

I have some questions regarding certain fields, and what makes sense  
from an editing perspective. Some of those questions are on the wiki  
page. Feel free to add comments or ideas to the wiki page.
What remains to be supported:
- creation of fragment
- creation of patch
- lookup in repositories.
- "build/test" stuff

Looking forward to receiving comments.

best regards

Henrik Lindberg
henrik.lindberg@...

Warren.Paul | 1 Jul 20:20
Picon

RE: RE: Need help building a product with p2

I was able to debug the product build to figure out why the binary directory wasn't being generated.  Turns out p2.publish.artifacts = true wasn't set because I had a space at the end of the line, e.g. "p2.publish.artifacts = true ".  Beware copy/paste from web browser!
 
So I can now build our product and get a complete repo.  I can direct it to generate a complete p2-ized product.  The only problem now is the bogus path in the p2-ized config.ini file.
 
org.eclipse.equinox.simpleconfigurator.configUrl=file\:../../../build_cpp\\debug\\eclipse\\workspace\\tmp\\eclipse\\win32.win32.x86\\eclipse\\configuration\\org.eclipse.equinox.simpleconfigurator\\bundles.info
build_cpp\\debug\\eclipse\\workspace is the buildDirectory and tmp is where PDE build generates everything.  I found this entry in the content.xml file of the generated repo:
 
    <unit id='toolingcom.nokia.carbide.cpp.product.config.win32.win32.x86' version='2.0.0'>
      <provides size='2'>
        <provided namespace='org.eclipse.equinox.p2.iu' name='toolingcom.nokia.carbide.cpp.product.config.win32.win32.x86' version='2.0.0'/>
        <provided namespace='toolingcom.nokia.carbide.cpp.product' name='com.nokia.carbide.cpp.product.config' version='2.0.0'/>
      </provides>
      <filter>
        (&amp; (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))
      </filter>
      <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
      <touchpointData size='1'>
        <instructions size='2'>
          <instruction key='configure'>
            setProgramProperty(propName:osgi.splashPath, propValue:platform:/base/plugins/com.nokia.carbide.cpp);setProgramProperty(propName:eclipse.application, propValue:org.eclipse.ui.ide.workbench);setProgramProperty(propName:eclipse.product, propValue:com.nokia.carbide.cpp.product);setProgramProperty(propName:org.eclipse.equinox.simpleconfigurator.configUrl, propValue:file:\D:\Products\Carbide\Tommy_product\build_cpp\debug\eclipse\workspace\tmp\eclipse\win32.win32.x86\eclipse\configuration\org.eclipse.equinox.simpleconfigurator\bundles.info);
          </instruction>
          <instruction key='unconfigure'>
            setProgramProperty(propName:osgi.splashPath, propValue:);setProgramProperty(propName:eclipse.application, propValue:);setProgramProperty(propName:eclipse.product, propValue:);setProgramProperty(propName:org.eclipse.equinox.simpleconfigurator.configUrl, propValue:);
          </instruction>
        </instructions>
      </touchpointData>
    </unit>
Note that it sets configUrl to the path in the tmp directory, which I assume causes the issue when directing from this repo.  But I'm not sure why it's happening.  I'll continue looking through the code but an expert opinion here would be appreciated.
 
Thanks,
Warren

From: equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org [mailto:equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org] On Behalf Of ext Warren.Paul-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org
Sent: Tuesday, June 24, 2008 3:02 PM
To: equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
Subject: RE: [equinox-dev] RE: Need help building a product with p2

I still can't p2-ize our product.  The product build works now, and the repo is generated by the product build.  But I get the following exceptions when running the director on the repo.  The repo only contains contents.xml and artifacts.xml - no binary directory.  If I export the same product from the UI, I do get the binary directory with the com.nokia.carbide.cpp.product.launcher.win32.win32.x86_2.0.0 file.  Any help would be greatly appreciated.  I've been browsing the PDE product export code but haven't uncovered any clues.
 
Thanks,
Warren
 
 
!SESSION 2008-06-24 14:42:50.743 -----------------------------------------------
eclipse.buildId=I20080609-1311
java.version=1.5.0_12
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Framework arguments:  -application org.eclipse.equinox.p2.director.app.application -metadataRepository file:D:/Products/Carbide/Tommy_product/build_cpp/debug/eclipse/workspace/repo -artifactRepository file:D:/Products/Carbide/Tommy_product/build_cpp/debug/eclipse/workspace/repo -installIU com.nokia.carbide.cpp.product -destination D:/Products/Carbide/Tommy_product/Product_Layout/eclipse -profile PlatformProfile -bundlepool D:/Products/Carbide/Tommy_product/Product_Layout/eclipse -roaming
Command-line arguments:  -os win32 -ws win32 -arch x86 -application org.eclipse.equinox.p2.director.app.application -metadataRepository file:D:/Products/Carbide/Tommy_product/build_cpp/debug/eclipse/workspace/repo -artifactRepository file:D:/Products/Carbide/Tommy_product/build_cpp/debug/eclipse/workspace/repo -installIU com.nokia.carbide.cpp.product -destination D:/Products/Carbide/Tommy_product/Product_Layout/eclipse -profile PlatformProfile -bundlepool D:/Products/Carbide/Tommy_product/Product_Layout/eclipse -roaming
 
!ENTRY org.eclipse.equinox.p2.engine 4 4 2008-06-24 14:43:24.195
!MESSAGE An error occurred while collecting items to be installed
!SUBENTRY 1 org.eclipse.equinox.p2.artifact.repository 4 0 2008-06-24 14:43:24.195
!MESSAGE Problems downloading artifact: binary,com.nokia.carbide.cpp.product.launcher.win32.win32.x86,2.0.0.
!SUBENTRY 2 org.eclipse.ecf.identity 4 0 2008-06-24 14:43:24.195
!MESSAGE Exception connecting to file:D:/Products/Carbide/Tommy_product/build_cpp/debug/eclipse/workspace/repo/binary/com.nokia.carbide.cpp.product.launcher.win32.win32.x86_2.0.0.
!STACK 0
java.io.FileNotFoundException: D:\Products\Carbide\Tommy_product\build_cpp\debug\eclipse\workspace\repo\binary\com.nokia.carbide.cpp.product.launcher.win32.win32.x86_2.0.0 (The system cannot find the path specified)
 at java.io.FileInputStream.open(Native Method)
 at java.io.FileInputStream.<init>(FileInputStream.java:106)
 at java.io.FileInputStream.<init>(FileInputStream.java:66)
 at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
 at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
 at org.eclipse.ecf.provider.filetransfer.retrieve.UrlConnectionRetrieveFileTransfer.openStreams(UrlConnectionRetrieveFileTransfer.java:237)
 at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:639)
 at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:381)
 at org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:95)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.transfer(ECFTransport.java:167)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.performDownload(ECFTransport.java:120)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.download(ECFTransport.java:100)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:440)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:423)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:490)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:162)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:146)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:94)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:479)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifacts(SimpleArtifactRepository.java:536)
 at org.eclipse.equinox.internal.p2.engine.DownloadManager.fetch(DownloadManager.java:105)
 at org.eclipse.equinox.internal.p2.engine.DownloadManager.start(DownloadManager.java:93)
 at org.eclipse.equinox.internal.provisional.p2.engine.phases.Collect.completeInstallableUnitPhase(Collect.java:56)
 at org.eclipse.equinox.internal.provisional.p2.engine.InstallableUnitPhase.completePhase(InstallableUnitPhase.java:79)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.postPerform(Phase.java:143)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.perform(Phase.java:85)
 at org.eclipse.equinox.internal.provisional.p2.engine.InstallableUnitPhase.perform(InstallableUnitPhase.java:53)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.perform(Phase.java:46)
 at org.eclipse.equinox.internal.provisional.p2.engine.PhaseSet.perform(PhaseSet.java:38)
 at org.eclipse.equinox.internal.provisional.p2.engine.Engine.perform(Engine.java:53)
 at org.eclipse.equinox.internal.p2.director.app.Application.planAndExecute(Application.java:213)
 at org.eclipse.equinox.internal.p2.director.app.Application.run(Application.java:365)
 at org.eclipse.equinox.internal.p2.director.app.Application.start(Application.java:423)
 at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
 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(EclipseStarter.java:382)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
 at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
 at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
!SUBENTRY 2 org.eclipse.ecf.identity 4 0 2008-06-24 14:43:24.211
!MESSAGE Exception connecting to file:D:/Products/Carbide/Tommy_product/build_cpp/debug/eclipse/workspace/repo/binary/com.nokia.carbide.cpp.product.launcher.win32.win32.x86_2.0.0.
!STACK 0
java.io.FileNotFoundException: D:\Products\Carbide\Tommy_product\build_cpp\debug\eclipse\workspace\repo\binary\com.nokia.carbide.cpp.product.launcher.win32.win32.x86_2.0.0 (The system cannot find the path specified)
 at java.io.FileInputStream.open(Native Method)
 at java.io.FileInputStream.<init>(FileInputStream.java:106)
 at java.io.FileInputStream.<init>(FileInputStream.java:66)
 at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
 at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
 at org.eclipse.ecf.provider.filetransfer.retrieve.UrlConnectionRetrieveFileTransfer.openStreams(UrlConnectionRetrieveFileTransfer.java:237)
 at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:639)
 at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:381)
 at org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:95)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.transfer(ECFTransport.java:167)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.performDownload(ECFTransport.java:120)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.download(ECFTransport.java:100)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:440)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:423)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:490)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:162)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:146)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:94)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:479)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifacts(SimpleArtifactRepository.java:536)
 at org.eclipse.equinox.internal.p2.engine.DownloadManager.fetch(DownloadManager.java:105)
 at org.eclipse.equinox.internal.p2.engine.DownloadManager.start(DownloadManager.java:93)
 at org.eclipse.equinox.internal.provisional.p2.engine.phases.Collect.completeInstallableUnitPhase(Collect.java:56)
 at org.eclipse.equinox.internal.provisional.p2.engine.InstallableUnitPhase.completePhase(InstallableUnitPhase.java:79)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.postPerform(Phase.java:143)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.perform(Phase.java:85)
 at org.eclipse.equinox.internal.provisional.p2.engine.InstallableUnitPhase.perform(InstallableUnitPhase.java:53)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.perform(Phase.java:46)
 at org.eclipse.equinox.internal.provisional.p2.engine.PhaseSet.perform(PhaseSet.java:38)
 at org.eclipse.equinox.internal.provisional.p2.engine.Engine.perform(Engine.java:53)
 at org.eclipse.equinox.internal.p2.director.app.Application.planAndExecute(Application.java:213)
 at org.eclipse.equinox.internal.p2.director.app.Application.run(Application.java:365)
 at org.eclipse.equinox.internal.p2.director.app.Application.start(Application.java:423)
 at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
 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(EclipseStarter.java:382)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
 at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
 at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
!SUBENTRY 2 org.eclipse.core.runtime 0 0 2008-06-24 14:43:24.211
!MESSAGE OK

From: equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org [mailto:equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org] On Behalf Of ext Warren.Paul-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org
Sent: Monday, June 16, 2008 11:12 PM
To: equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
Subject: RE: [equinox-dev] RE: Need help building a product with p2

I'm still having no luck getting the headless product build to find my launcher icon.  I tried setting launcherIcons in my build.properties file of my product config as well but no luck.  When I run the p2 director, I get an error that the launcher isn't found.  It's looking in the repo/binary directory.  This directory doesn't exist though.  I'm not sure if it's related to the missing icon or not.  I do get the binary directory when when exporting the same product from the UI.
 
I removed all references to the launcher from the artifacts.xml and content.xml files and ran the director again.  It completes successfully and gives me a working p2 directory.  I can launch the IDE and the updates dialog comes up showing my product name.  The only problem is that it puts a path in the config.ini to the bundles.info from the build server.
 
This is what the product export generated for me:
 
#Product Runtime Configuration File
osgi.splashPath=platform:/base/plugins/com.nokia.carbide.cpp
eclipse.application=org.eclipse.ui.ide.workbench
eclipse.product=com.nokia.carbide.cpp.product
osgi.bundles=org.eclipse.equinox.simpleconfigurator <at> 1:start
org.eclipse.equinox.simpleconfigurator.configUrl=file:org.eclipse.equinox.simpleconfigurator/bundles.info
osgi.bundles.defaultStartLevel=4
 
and this is what it looks like after running the director:
 
#This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser
#Mon Jun 16 16:52:07 CDT 2008
eclipse.p2.profile=CarbideProfile
osgi.framework=file\:plugins\\org.eclipse.osgi_3.4.0.v20080605-1900.jar
osgi.bundles=reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.0.v20080604.jar <at> 1\:start
org.eclipse.equinox.simpleconfigurator.configUrl=file\:../../../build_cpp\\debug\\eclipse\\workspace\\tmp\\eclipse\\win32.win32.x86\\eclipse\\configuration\\org.eclipse.equinox.simpleconfigurator\\bundles.info
eclipse.product=com.nokia.carbide.cpp.product
osgi.splashPath=platform\:/base/plugins/com.nokia.carbide.cpp
eclipse.p2.data.area=-geLThCafstx8RlvjjU3+vg@public.gmane.org/../p2
osgi.bundles.defaultStartLevel=4
eclipse.application=org.eclipse.ui.ide.workbench
 
 
Note that I am passing -roaming to the director.
 
I'm also not sure what to pass for -profile.  The values I've seen are SDKProfile and PlatformProfile.  I tried PlatformProfile, and CarbideProfile for good measure.  What exactly does this do, and what should I be passing?
 
Thanks,
Warren

From: equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org [mailto:equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org] On Behalf Of ext Warren.Paul-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org
Sent: Friday, June 13, 2008 5:47 PM
To: equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
Subject: RE: [equinox-dev] RE: Need help building a product with p2

OK, figured out that problem.  We had a plugin without a manifest file from way back when.  Whatever jar'ed it up created a manifest file for it, and I think that's why had a lock on it.  The eclipse instance used to build the product would have to exit for it to release it.  I'm not sure if it was eclipse, ant, or the jre.  Anyway, I changed our plugin and now it generates the metadata along with the product.  Yeah!
 
I still have a few more issues though.
 
1) The launcher is generated without our icon.  I've read some questions and answers from Andrew on the web but I still can't get it to work.  Our icon is in a plugin and I specify the icon path like this:
 
   <launcher name="Carbide.c++">
      <solaris/>
      <win useIco="true">
         <ico path="/com.nokia.carbide.cpp/icons/Carbide_c_flat.ico"/>
         <bmp/>
      </win>
   </launcher>
This plugin and icon path exist under the buildDirectory/plugins directory.  I've tried several variations of the path, trying to put it under the config directory alongside the .product file, but no luck.
 
 
2) The product build generated a config.ini file which is good.  The only thing missing that we need to set is osgi.instance.area.default.  I didn't see anywhere in the .product file to specify this, and it says using an existing config file will just copy it as is (not adding osgi.bundles, etc.)  Maybe I can pass it as a program argument?
 
3) I'm still not sure what to do with the p2 director.  I have a full product layout generated by the product build (everything but p2 that is).  I also have the repo generated by the product build.  Now I need the full product layout along with the p2 directory, and the p2 modification made to the config.ini file.  I've played around with several variations but haven't had any success yet.
 
I thought I'd generate a complete product based on what the docs said:
 
eclipsec.exe -nosplash -application org.eclipse.equinox.p2.director.app.application -metadataRepository file:D:/generated_repo -artifactRepository file:D:/generated_repo -installIU com.nokia.carbide.cpp.product -destination D:/test_layout -profile PlatformProfile -profileProperties org.eclipse.update.install.features=true -bundlepool D:/test_layout -p2.os win32 -p2.ws win32 -p2.arch x86 -roaming -vmargs -Declipse.p2.data.area=D:/test_layout/p2
I run this from the Eclipse 3.4 RC4 SDK installation directory.  Does that sound right?  I guess it isn't because I get an error like this for each plugin:
 
java.io.FileNotFoundException: D:\Eclipse_3.4RC4\configuration\org.eclipse.osgi\bundles\112\data\330080838\plugins\com.nokia.bugreport_2.0.0.200806131501.jar (The system cannot find the path specified)
 at java.io.FileInputStream.open(Native Method)
 at java.io.FileInputStream.<init>(FileInputStream.java:106)
 at java.io.FileInputStream.<init>(FileInputStream.java:66)
 at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
 at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
 at org.eclipse.ecf.provider.filetransfer.retrieve.UrlConnectionRetrieveFileTransfer.openStreams(UrlConnectionRetrieveFileTransfer.java:237)
 at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:639)
 at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:381)
 at org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:95)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.transfer(ECFTransport.java:167)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.performDownload(ECFTransport.java:120)
 at org.eclipse.equinox.internal.p2.artifact.repository.ECFTransport.download(ECFTransport.java:100)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:440)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:423)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:490)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:162)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:146)
 at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:94)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:479)
 at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifacts(SimpleArtifactRepository.java:536)
 at org.eclipse.equinox.internal.p2.extensionlocation.ExtensionLocationArtifactRepository.getArtifacts(ExtensionLocationArtifactRepository.java:171)
 at org.eclipse.equinox.internal.p2.engine.DownloadManager.fetch(DownloadManager.java:105)
 at org.eclipse.equinox.internal.p2.engine.DownloadManager.start(DownloadManager.java:93)
 at org.eclipse.equinox.internal.provisional.p2.engine.phases.Collect.completeInstallableUnitPhase(Collect.java:56)
 at org.eclipse.equinox.internal.provisional.p2.engine.InstallableUnitPhase.completePhase(InstallableUnitPhase.java:79)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.postPerform(Phase.java:143)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.perform(Phase.java:85)
 at org.eclipse.equinox.internal.provisional.p2.engine.InstallableUnitPhase.perform(InstallableUnitPhase.java:53)
 at org.eclipse.equinox.internal.provisional.p2.engine.Phase.perform(Phase.java:46)
 at org.eclipse.equinox.internal.provisional.p2.engine.PhaseSet.perform(PhaseSet.java:38)
 at org.eclipse.equinox.internal.provisional.p2.engine.Engine.perform(Engine.java:53)
 at org.eclipse.equinox.internal.p2.director.app.Application.planAndExecute(Application.java:213)
 at org.eclipse.equinox.internal.p2.director.app.Application.run(Application.java:365)
 at org.eclipse.equinox.internal.p2.director.app.Application.start(Application.java:423)
 at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
 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(EclipseStarter.java:382)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
 at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
 at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
 
It's looking in the Eclipse 3.4 RC4 SDK for the plugins.  it also changes the eclipse.p2.data.area in the Eclipse 3.4RC4 SDK config.ini to point to D:/test_layout/p2.  So I figure I need to run eclipsec.exe from the generated product layout.  Then I get a bunch of errors like ... already installed...
 
 
Please help.  We have to be getty close here.  :)
 
Thanks,
Warren
 

From: equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org [mailto:equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org] On Behalf Of ext Warren.Paul-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org
Sent: Friday, June 13, 2008 9:36 AM
To: equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
Subject: RE: [equinox-dev] RE: Need help building a product with p2

It's coming from assemble.org.eclipse.pde.build.container.feature.win32.win32.x86.xml.  It create the jars, generates the metadata, calls pre.archive, then zips everything up and deletes the tmp directory:
 
  <delete dir="${assemblyTempDir}"/>
This delete fails because the plugins are still in use by something.  It has to be either the p2 generator or zip I would imagine.  I added a customAssembly.xml file and added a sleep to the pre.archive target.  We'll see if that helps.
 
BTW, the product build is finally working on our build server now.  We used to build one of the platform plugins a few products ago, and the map file for it was still hanging around and getting checked out with all of the others.  This caused all the weird missing dependency *_0.0.0 errors.  I guess it didn't matter if that map was there when we were just building features, but the product build concats everything together.  That was a booger to track down.  :) 
 
Thanks for the help Andrew.
 
 
 
--------------------------------------------------------------------------
 
 
 Doing the metadata generation from the product build seems to generate good data, but I think there's a timing bug.  When I run that on our build server, I get an error during a cleanup ant task in the generated ant scripts.  It's   trying to delete some stuff that's still in use.  if I wait a few seconds it would work, but I don't control the call to the cleanup task.  It seems the metadata generation completes but hasn't released all of the plugins yet for some reason.
 [AN] We have not seen this kind of issue in our own builds, can you please raise a bug with the details.  I'm not sure which clean task you are refering to, if it is the one in the customTargets.xml, you can define "noclean=true" to turn it off.  Another possibility would be to use the custom Assembly steps ("Customizing a Headless Build" in the RC4 help).  The pre.archive task will be called after metadata generation, as well there is more metadata generation done at the end of the package phase and customTargets.xml/postPackag occurs immediately afterward.  You could try putting custom ant in these tasks to introduce a delay if necessary.

Martin Lippert | 1 Jul 21:32
Picon
Favicon
Gravatar

Re: Aspects: problem weaving same class file in different bundles

Hi Rowan,

> I have a followup question if I may.....
> 
> In trying to resolve this myself I had a look at the 'perthis',
> 'pertarget', and even 'pertypewithin' qualifiers for the aspect
> definintion. Are these supported in equinox aspects? I do not see any
> difference when I try to use them. If I want a new aspect for each
> target rather than the default singleton, under what conditions would
> I get this?

Hm, I am not aware of any reason why those qualifiers should not work 
with equinox aspects. Have you tried this without OSGi in a "normal" 
AspectJ/AJDT environment?

-Martin

Scott Lewis | 1 Jul 22:38
Gravatar

Re: P2 authoring reaches first milestone

Hi Henrik,

Really Cool Stuff.  I'm examining/trying it now.

One comment I wanted to make on this list...you have a number of good 
questions about the p2 use of Namespaces and IDs on the wiki page (e.g. 
can new namespaces be added, what are constraints on IDs, etc).

 I just wanted to remark that ECF core has a package 
org.eclipse.ecf.identity that includes a Namespace abstract super class, 
ID and IIDFactory interfaces, and several built-in Namespaces...e.g. 
StringID, LongID, GUID (based upon base-64 encoded large number).  There 
is also an extension point for adding new Namespaces.  So I guess what 
I'm trying to say is that if these concepts (Namespace, ID, 
extensibility in namespaces and ID construction, etc) are desired/needed 
for P2 going forward, there is already a working implementation 
available in ECF core.  We (obviously) use and extend it heavily...to 
represent service ids, user ids, group ids, file ids, etc.  It has 
minimal requirements (none other than CDC 1.0/Foundation 1.0).

Also...just FYI...we have been/are adding a persistent store for ECF IDs:

http://wiki.eclipse.org/Storage/Retrieval_of_IDs%2C_IContainers_using_Equinox_Secure_Preferences

This uses the newly added Equinox Secure Preferences to securely 
store/retrieve Namespaces and their IDs. 

Scott

Henrik Lindberg wrote:
> Hi,
> I have now reached a first milestone in P2 IU authoring. This wikipage 
> http://wiki.eclipse.org/Equinox_p2_Metadata_Authoring has screenshots 
> of the editor. There are also instructions (at the top), where to find 
> the editor and how run it.
>
> To summarize:
> - IU files can be created and edited
> - Support for undo/redo and interactive error messages
>
> I have some questions regarding certain fields, and what makes sense 
> from an editing perspective. Some of those questions are on the wiki 
> page. Feel free to add comments or ideas to the wiki page.
> What remains to be supported:
> - creation of fragment
> - creation of patch
> - lookup in repositories.
> - "build/test" stuff
>
> Looking forward to receiving comments.
>
> best regards
>
> Henrik Lindberg
> henrik.lindberg@...
>
> _______________________________________________
> equinox-dev mailing list
> equinox-dev@...
> https://dev.eclipse.org/mailman/listinfo/equinox-dev

Scott Lewis | 1 Jul 22:45
Gravatar

Re: P2 authoring reaches first milestone

Scott Lewis wrote:
> <stuff deleted>
> and extend it heavily...to represent service ids, user ids, group ids, 
> file ids, etc.  It has minimal requirements (none other than CDC 
> 1.0/Foundation 1.0).

Sorry, I should have been clearer about this.  It does also have a dep 
on org.eclipse.equinox.common (for IAdaptable, IAdapterManager, IStatus, 
etc) and the extension registry (for extension point processing).

Scott

Ingo Muschenetz | 2 Jul 04:49
Favicon

Policy URL

Hi All,

I did a search for this and came up empty, so apologies if this has been
asked before.

What happened to the Policy URL text field in the the update preferences? We
used it as a convenient way for users to get the newest updates from the
build machine. The idea is that they would install the latest released
version, and then point to a new policy file for nightly updates.

I see that there is a way to re-enable the old update manager, but is there
a way to get a similar functionality to the old system using the new p2 UI?

Thanks,
Ingo

Pavlin Dobrev | 2 Jul 11:17
Favicon

OSGi specification supported by Equnox 3.4 and OSGi test cases

Hi all,

I tried to run of the OSGi test cases for OSGi Release 4.1 (using jsr291-tck-final.zip and
osgi.ri-tck.zip) and found that some of the package admin test cases fails on
Equinox 3.4 (all of them pass on equinox 3.3.2).

The failed test cases are:
test.packageadmin.tc3
test.packageadmin.tc5

Are there any changes in the package admin mechanism between 3.3 and 3.4?
Do the Equinox 3.4 is OSGi R4.1 compatible or some part of the next
specification and/or errata is implemented?

Are there any configuration prosperities that I can use in order to
configure properly Equinox?

-Pavlin Dobrev
----------------------------------------------------- 
Dr. Pavlin Dobrev, Research and Development Manager
ProSyst Labs EOOD, 
48 Vladaiska Str., Sofia, Bulgaria, 
Tel. (+359 2) 954 91 62 . Fax. (+359 2) 953 26 17 
p.dobrev@... , http://www.prosyst.com 
----------------------------------------------------- 
stay in touch with your product. 
----------------------------------------------------- 

Fredrik Alströmer | 2 Jul 12:58
Picon
Gravatar

[prov] Can't figure it out how the actions are called..?

Hi people,

this will probably turn out terribly embarrassing for me, but I just can't figure this out, so please help.. :)

I'm looking at the content.xml from the Ganymede repository,

http://www.eclipse.org/downloads/download.php?file=/releases/ganymede/staging/content/content.xml&amp;format=xml&amp;protocol=http

and as far as I can tell (I didn't actually read all the 12 megs worth of xml...), whenever there's an eclipse touchpoint IU, there seems to be only one instruction, the 'manifest', which is ok, I can see how that's used in the installBundle action. My problem is, I can't figure out how the InstallBundleAction gets called. For example, let's look at the Install-phase, first I though the phase would call the getAction of the touchpoint, with the phase id (which I suppose would make sense somehow) but this never happens, it just attempts to parse actions from the 'install'-instructions, which aren't there. The only IUs I could find actually adressing the installBundle action directly using an 'install'-instruction had the null-touchpoint specified, which somehow also feels funny.

What am I missing? :)

Or am I looking at some weird version of the content.xml which is not actually in use?

Thanks,
Fredrik.

Kimberly Horne | 2 Jul 14:43

Re: [transforms] where to start ?

Quite right Sebastian - I've just fixed the wiki page to reflect the  
new location of the bundles (some of which have graduated out of  
incubation).

On 30-Jun-08, at 5:19 AM, Sebastian Fuchs wrote:

> Hello,
>
> can anybody give me some hints how to use transforms in my rcp ?
>
> I want to remove the sticky behaviour from the HelpView.
> So I must erase the contribution of plugin org.eclipse.help.ui to  
> the extension point org.eclipse.ui.views.stickyView.
>
> The wiki pages seem to be outdated - I couldn't find all the  
> mentioned plugins in CVS.
>
> Thanks.
> Sebastian
>
> -- 
> Dipl.-Ing. Sebastian Fuchs
> Walter-Arnold-Straße 8
> 01219 Dresden
>
> fon: +49-(0)351-2728098
> mobile: +49-(0)176-96338376
> icq: 114494140 _______________________________________________
> equinox-dev mailing list
> equinox-dev@...
> https://dev.eclipse.org/mailman/listinfo/equinox-dev

Toedter, Kai (CT | 2 Jul 15:24
Picon
Gravatar

Missing feature brandings after RCP p2 install

Hi All,

I just filed a bug about the following behavior against Eclipse 3.4, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=239227

1. Create an RCP app with feature branding and About dialog
2. Export the app using the export wizard (and create p2 repositories)
3. Check the About dialog in the exported version, you see the feature branding
icon.
4. Install the app (using p2 director) from the repository created during
export
5. Check the About dialog in the installed version, the feature branding icon
is gone :(

Rich Scott found out that that has something to do with the generated
config.ini, see his comment at http://toedter.com/blog/?p=27

I would appreciate any hints what I have to do to see the feature branding in RCP apps installed by p2?

Thanks

Kai
---

Kai Tödter

Siemens AG
Corporate Technology
Architecture
CT SE 2
Otto-Hahn-Ring 6
81739 Munich, Germany
Phone: +49 89 636-41064
Fax: +49 89 636-45450
mailto: kai.toedter@...
Internet: www.siemens.com/corporate-technology

Siemens Aktiengesellschaft: Chairman of the Supervisory Board: Gerhard Cromme; Managing Board: Peter
Loescher, Chairman, President and Chief Executive Officer; Heinrich Hiesinger, Joe Kaeser, Rudi
Lamprecht, Eduardo Montes, Juergen Radomski, Erich R. Reinhardt, Hermann Requardt, Uriel J. Sharef,
Peter Y. Solmssen, Klaus Wucherer; Registered offices: Berlin and Munich; Commercial registries:
Berlin Charlottenburg, HRB 12300, Munich, HRB 6684; WEEE-Reg.-No. DE 23691322


Gmane