Community
Participate
Working Groups
I tried creating a test "composite repo" for Helios, consisting of the release, and the rc3 maintenance repo. I'll attach that ant script, incase there is a better way. It quickly stopped with an exception, as far as I can see which was due to: Caused by: /opt/public/helios/runtestcomposite/helios-composite-test.xml:9: Difference found for packed: osgi.bundle,org.eclipse.sdk.examples,3.1.300.v20100527 between http://download.eclipse.org/eclipse/updates/3.6.x/M20100908- 0800 and http://download.eclipse.org/eclipse/updates/3.6/R-3.6-201006080911 160 In about.mappings, the property "0" has different values: "<missing argument>" and "<missing argument>". I'll also attach full log. It sounds pretty minor, even if valid error, and doesn't even sound like a error from what it printed out ... "<missing argument>" and "<missing argument>" are not equal? Maybe indicates an error in the comparator? I suspect the Platform is the only project that does these types of "compares", so would suspect you would have found it by now, if a "real" error ... but thought I'd report, in case there's something to be learned here. It also, appears to me, the whole process stopped on first found "error" ... which seems odd. It runs very quickly, if it really compared the thousand or so bundles involved! Or, is it another bug in comparitor that this first exception stopped the process?
Created attachment 178713 [details] ant script used to run compariator against release and rc3 maintenance
Created attachment 178714 [details] console log during ant run resulting in exception due to "difference found"
Found a similar error when doing a similar test directly on webtools repos ... Caused by: /opt/public/webtools/apps/antrunner/helios-composite-test.xml:9: Difference found for packed: osgi.bundle,org.eclipse.jst.jee.web.source,1.0.301.v201007070907 between file:/home/data/httpd/download.eclipse.org/webtools/downloads/drops/R3.2.1/R-3.2.1-20100730021206/repository/ and file:/home/data/httpd/download.eclipse.org/webtools/downloads/drops/R3.2.2/M-3.2.2-20100910064233/repository/ In about.mappings, the property "0" has different values: "<missing argument>" and "<missing argument>". ... seems spurious ... too bad ... cool function which I just happened to notice this evening.
maybe related to bug 274739? Maybe there is an error, and just a bad message?
In thinking about this, part of the problem is just a bad message ... I see similar when using comparitor in a mirror task. It's trying to tell us the bundles have same id, but in about.mappings, one is identified being built on one date, and the other built on a different date. Natural enough. But ... seems to me this would argue for removing all the about.mappings and get rid of changing that file just for the build date ... since, after all, the version hasn't changed, bytes should be exactly the same. What do you think? How has the Platform team handled this? Is there a recommended practice?
The about.mappings in some of the bundles are updated with the build id every build. Thus we ignore changes in these bundles when running the comparator. You can see this in our call to the comparator <p2.mirror source="file:${reposource}" log="${buildlogs}/mirrorlog.txt" ignoreErrors="true"> <destination compressed="true" name="${p2.repo.name}" location="file:${buildRepo}" append="true" format="file:${reposource}" /> <comparator comparator="org.eclipse.equinox.p2.repository.tools.jar.comparator" comparatorLog="${buildlogs}/comparatorlog.txt"> <repository location="${repoBaseline}" /> <exclude> <artifact id="org.eclipse.jdt.doc.isv" /> <artifact id="org.eclipse.jdt.doc.user" /> <artifact id="org.eclipse.pde.doc.user" /> <artifact id="org.eclipse.platform.doc.isv" /> <artifact id="org.eclipse.platform.doc.user" /> <artifact id="org.eclipse.equinox.executable" /> <artifact id="org.eclipse.sdk.examples" /> <artifact id="org.eclipse.sdk.examples.source" /> <artifact id="master-equinox" /> </exclude> </comparator>
Can you remind me please what the about.mappings are used for? Is there a general/generic purpose? used or required by IDE anywhere? Such as about box?
Yes, they are used in the about box.
Oh, and one more "user question", if you don't mind ... I guess I can also just check empirically ... but, what's the intent ... Does the "exclude" element simply cause no error/warning message to be printed in log, or does it also mean the most recent one is mirrored, even if exact bundle version already exists, and only differs in about.mappings (so you would end up with same versions, teeny-tiny difference in bundles).
The exclude just refers to the comparator. Since the mirror task is run with ignoreErrors=true, the mirroring doesn't fail if there is an error, it just continues. In every case, if the bundle has the same id and version, the new bundle will be discarded and we will use the old bundle in the new child repo. We have a releng test that parses the comparator log for errors to alert us to any problems.
Greatest thanks for all your help Kim. If/when we ever do this test for the helios repo (on a regular basis) we'll just work with each team to get proper "exclude" items. (It does sound like, though, in this case, your "examples" bundle slipped through so the ones in SR0 and SR1 have same id but this different about.mapping ... but, I'm not worried :) Again, GREATEST THANKS! very helpful.
To cross reference, I opened bug 325134 for the incorrect error message.
No problem, David. I'm always happy to talk about repo tooling, one of my favourite things about p2 :-)