# tell pde.build not to generate start levels
org.eclipse.pde.build.append.startlevels=false

#      <import feature="org.eclipse.linuxtools.oprofile.feature"/>
requires.2.namespace=org.eclipse.equinox.p2.iu
requires.2.name=org.eclipse.linuxtools.oprofile.feature.feature.group
requires.2.optional=true

#      <import feature="org.eclipse.linuxtools.perf.feature"/>
requires.3.namespace=org.eclipse.equinox.p2.iu
requires.3.name=org.eclipse.linuxtools.perf.feature.feature.group
requires.3.optional=true

#      <import feature="org.eclipse.linuxtools.systemtap"/>
requires.4.namespace=org.eclipse.equinox.p2.iu
requires.4.name=org.eclipse.linuxtools.systemtap.feature.group
requires.4.optional=true

#      <import feature="org.eclipse.linuxtools.callgraph.feature"/>
requires.5.namespace=org.eclipse.equinox.p2.iu
requires.5.name=org.eclipse.linuxtools.callgraph.feature.feature.group
requires.5.optional=true

# Bug 490515 - Prevent upgrade from old to new EPP package layout
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=490515
#
# With Eclipse Neon (4.6.0) all packages changed their structure from a single
# feature to a product with multiple independent root features. Upgrades from
# older versions to the new structure would result in an unexpected uninstall
# of everything below the old main package feature. In order to prevent such
# upgrades we add an artificial lower limit of the IU to the p2 metadata.

update.id = org.eclipse.epp.package.embedcpp.feature.feature.group
update.range = [4.6.0.20160301-1200, $version$)
update.severity = 0
update.description = Eclipse package upgrade from versions before Eclipse Neon (4.6) is not possible. See bug 332989.

instructions.configure=\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:0,location:http${#58}//download.eclipse.org/releases/latest);\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:1,location:http${#58}//download.eclipse.org/releases/latest);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:https${#58}//download.eclipse.org/tools/cdt/releases/latest,type:0,name:CDT,enabled:true); \
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:https${#58}//download.eclipse.org/tools/cdt/releases/latest,type:1,name:CDT,enabled:true);

# Until and unless a new composite is provided the upgrade feature won't be available
# \
# org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:https${#58}//download.eclipse.org/embed-cdt/releases/6.0,type:0,name:EmbedCDT,enabled:true); \
# org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:https${#58}//download.eclipse.org/embed-cdt/releases/6.0,type:1,name:EmbedCDT,enabled:true);

instructions.unconfigure=\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(location:https${#58}//download.eclipse.org/tools/cdt/releases/latest,type:0); \
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(location:https${#58}//download.eclipse.org/tools/cdt/releases/latest,type:1);

# Until and unless a new composite is provided the upgrade feature won't be available
# \
# org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(location:https${#58}//download.eclipse.org/embed-cdt/releases/6.0,type:0); \
# org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(location:https${#58}//download.eclipse.org/embed-cdt/releases/6.0,type:1);
