[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [p2-dev] Helios Features Mirror

Hi David,

An alternative for you might be to use the b3 aggregator [1]. That is the tool that was used when creating the Helios and Indigo aggregations and it can be used for this type of use-case as well. It can be downloaded from our update site [2] and executed either as a freestanding headless product, or within your IDE complete with graphical editor.

Since the aggregator performs a validation prior to mirroring there are two "flaws" in Helios that must be catered for. One is explained here:

 https://bugs.eclipse.org/bugs/show_bug.cgi?id=342350

and the other is that the feature org.eclipse.jwt.feature was renamed to org.eclipse.jwt.feature in a service pack release which in turn leads to conflicts since both are included when trying to resolve a "canonical" repository.

This b3.aggr file will successfully create a validated, "as small as possible" mirror of Helios for three common environments (win32.win32.x86, linux.gtk.x86, linux.gtk.x86_64). You can add other environments using the editor.

<?xml version="1.0" encoding="ASCII"?>
<aggregator:Aggregator xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aggregator="http://www.eclipse.org/b3/2010/aggregator/1.0.0" description="Used to test stuff that causes errors when added to the main repo model." label="Test Repo" buildRoot="build-test" packedStrategy="VERIFY">
  <configurations/>
  <configurations operatingSystem="linux" windowSystem="gtk"/>
  <configurations operatingSystem="linux" windowSystem="gtk" architecture="x86_64"/>
  <contributions label="Platform Repo">
    <repositories location="http://download.eclipse.org/releases/helios/">
      <mapRules xsi:type="aggregator:ValidConfigurationsRule" description="Cater for bad filtering in the epp.package.linuxtools requirement for org.eclipse.epp.package.linuxtools.feature.feature.group" name="epp.package.linuxtools" validConfigurations="//@configurations.1 //@configurations.2"/>
      <mapRules xsi:type="aggregator:ExclusionRule" description="Exclude feature that has been renamed and hence causes conflicts." name="org.eclipse.jwt.feature.group" versionRange="[0.7.0,0.8.0)"/>
    </repositories>
  </contributions>
</aggregator:Aggregator>

[1] http://wiki.eclipse.org/Eclipse_b3/aggregator/manual
[2] https://hudson.eclipse.org/hudson/job/emft-b3-build/lastSuccessfulBuild/artifact/b3.p2.repository/

Regards,
Thomas Hallgren


On 2011-04-11 06:10, Pascal Rapicault wrote:
Since there was no satisfying solution, I've just released code to the mirroring app that will perform the same resolution than the one performed at install time. This will be available in the next I build (Tuesday morning)
This can be enabled by setting resolve="true" (see example below).
Only one platform filter can be supported at a time (or none).


<project name="Helios Mirror" default="mirror" basedir=".">
<target name="mirror">
<p2.mirror source="http://download.eclipse.org/releases/helios/" destination="${basedir}" verbose="true">
<iu id="org.eclipse.equinox.sdk.feature.group" version="3.6.0.v20100601-7H7R-7v8rtGVR34XkO3kfH3DUO07" />
<slicingOptions resolve="true" platformFilter="win32,win32,x86"/>
</p2.mirror>
</target>
</project>


On 2011-04-08, at 5:53 PM, David Erickson wrote:

Hi all-
I am trying to make the smallest mirror size as possible of two
features from Helios.  I am using the following ant-task:

<project name="Helios Mirror" default="mirror" basedir=".">
 <target name="mirror">
   <p2.mirror source="http://download.eclipse.org/releases/helios/"
destination="${basedir}" verbose="true">
      <iu id="org.eclipse.equinox.sdk.feature.group"
version="3.6.0.v20100601-7H7R-7v8rtGVR34XkO3kfH3DUO07" />
      <iu id="org.eclipse.pde.junit.runtime.standalone.feature.group"
version="1.0.0.v20100610" />
      <slicingOptions followStrict="true" includeOptional="false"
includeNonGreedy="false"/>
   </p2.mirror>
 </target>
</project>

and the following target file:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.6"?>

<target name="Main Target">
<locations>
<location path="${resource_loc:/Libraries}" type="Profile"/>
<location includeAllPlatforms="false" includeMode="planner"
type="InstallableUnit">
<unit id="org.eclipse.equinox.sdk.feature.group"
version="3.6.0.v20100601-7H7R-7v8rtGVR34XkO3kfH3DUO07"/>
<unit id="org.eclipse.pde.junit.runtime.standalone.feature.group"
version="1.0.0.v20100610"/>
<repository location="file:/path/to/libs_helios/"/>
</location>
</locations>
</target>

The result is a nice small sized mirror at ~31MB, however when I load
the target in Eclipse that points to this folder and the two specified
features I get resolution errors on needed packages that don't have an
explicit version requirement listed, many of which are in javax.*. (To
make this even more bizarre I've actually had it resolve happily once
or twice then on all followups it fails to resolve).

Now I can solve the resolution problem by changing followStrict to
false, however then I end up with a mirror folder that is ~90MB,
containing many duplicates of the same bundles but with separate
versions, ie the folder has 3 commons logging bundles, 3 JFace
libraries at 1MB a piece, 3 org.eclipse.ui.ide bundles, etc etc.

How can I bridge the gap here by getting just the features I need
using the requested versions and the small mirror size, but also have
all the bundles I need so I don't get resolution errors?

Thanks!
David
_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev

_______________________________________________ p2-dev mailing list p2-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/p2-dev