Took me a long time to understand what you were getting at, as at first I thought you had an IU and a CU.
I agree that in the case you describe, where an IU carries touchpoint data and there is also a CU attached to it, the behaviour is bogus. This is slightly different than the bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=263087 I was talking about but is a friend of it. As for right fix (which does not require the previous bug to be fixed), I don't think the attachment logic is the right place and for two reasons: - The attachment logic should only deal with matching a CU to an IU. The touchpoint data is the business of the engine. Fixing this in here would mean coding in the resolver some specific knowledge about the shape of the metadata for a bundle (in this case the fact that there is manifest, etc) and would not work for any other case. - Dropping the default CU or any CU when there is something in the main IU would not be very flexible, and I can see how someone would be able to complement someone's data through a CU. IMO, a more appropriate solution would consists in enhancing the engine and the touchpoint data to allow each instructions section to declare the expected behaviour when the situation arises. At this point I could see several keys: before, after, override, delegate that would control this (as I'm writing this I'm sure we can find better wording in the AspectJ literature). For example, override would say that the value in the CU would override what is specified in the IU; delegate would mean run whatever is in the IU and ignore what is in me the CU; before and after meaning run the CU in addition to the other instructions. HTH On 2011-12-09, at 9:30 AM, Todorova, Katya wrote: > I can’t think of more specific requirement than the one belowJ > It seems my idea of CUs is not consistent so I would appreciate a little help > here. > > Having touchpoint data doesn’t lead to creation of CU, right? On the other > hand, instruction parser merges info coming from touchpointdata and attached > CU. > So from my point of view having touchpoint instructions and applicable > fragment is the only currently possible case where two “fragments” are > attached. So, they get merged and the result is bizarre. > Isn’t it local touchpoint data the most specific case? Is there a conceptual > difference between CU and touchpoint data? > > Until the bug you mention is fixed, isn’t it better not to attach any CUs if > there’s other touchpoint data than manifest details? > > Thank you, > Katya > > > <unit id='test' version='1.0.2' singleton='false'> > <update id=' test ' range='[0.0.0,1.0.2)' severity='0'/> > <properties size='2'> > <property name='org.eclipse.equinox.p2.name' value='test'/> > </properties> > <provides size='3'> > <provided namespace='org.eclipse.equinox.p2.iu' name='test' > version='1.0.2'/> > <provided namespace='osgi.bundle' name='test' version='1.0.2'/> > <provided namespace='org.eclipse.equinox.p2.eclipse.type' > name='bundle' version='1.0.0'/> > </provides> > <requires size='2'> > <required namespace='java.package' name='org.osgi.framework' > range='1.5.0'/> > <required namespace='java.package' > name='org.eclipse.osgi.framework.console' range='0.0.0'/> > </requires> > <artifacts size='1'> > <artifact classifier='osgi.bundle' id='test' version='1.0.2'/> > </artifacts> > <touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/> > <touchpointData size='1'> > <instructions size='3'> > <instruction key='manifest'> > Bundle-ManifestVersion: 2
Bundle-Activator: > Activator
Bundle-RequiredExecutionEnvironment: > JavaSE-1.6
Import-Package: > org.osgi.framework;version="1.5",org.eclipse.osgi.framework.console
Bundle-Name: > test
Manifest-Version: 1.0
Build-Jdk: > 1.6.0_07
Bundle-SymbolicName: test
Bundle-Version: 1.0.2 
 > </instruction> > <instruction key='unconfigure'> > > org.eclipse.equinox.p2.touchpoint.eclipse.setStartLevel(startLevel:-1);org.eclipse.equinox.p2.touchpoint.eclipse.markStarted(started:false); > </instruction> > <instruction key='configure'> > > org.eclipse.equinox.p2.touchpoint.eclipse.setStartLevel(startLevel:3);org.eclipse.equinox.p2.touchpoint.eclipse.markStarted(started:true); > </instruction> > </instructions> > </touchpointData> > </unit> > > > From: [email protected] [mailto:[email protected]] On > Behalf Of Pascal Rapicault > Sent: vendredi 9 décembre 2011 14:56 > To: P2 developer discussions > Subject: Re: [p2-dev] Bundle start configuration > > My guess is that this is because the CU requirements on the IU are not > specific enough and this causes the fragment to not be attached. The code is > in the director AttachmentHelper. > This is likely a friend of > https://bugs.eclipse.org/bugs/show_bug.cgi?id=263087 which we've discussed > before. > > On 2011-12-08, at 10:41 AM, Todorova, Katya wrote: > > > Hi guys, > > I’m trying to install in Eclipse a bundle published with touchpoint > instructions for start level = 3 & start = true (I use p2.inf in bundle > META-INF to describe these). > As a result I get a strange mix of the local configuration and default bundle > tooling presented in Eclipse – start level is 4 and start flag is true in the > final bundles.info. > > I assumed that local configuration would be preferred over the default one > but it seems it’s not the case. What would be the correct behavior according > to you? > > Thank you, > Katya > > > _______________________________________________ > p2-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/p2-dev > > _______________________________________________ > p2-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/p2-dev
_______________________________________________ p2-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/p2-dev
