Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Using Policy Files

Eclipse 3.4 p2 Note

Using Policy files for "mirror control" is obsoleted by Equinox p2, available in Eclipse 3.4.

To avoid reaching mirrors specified for a particular update site / repository, there are two ways:

  • If you are in control of the repo, you can remove the mirroring information to make the site unaware of any remote mirrors.
<site pack200="true"
  digestURL="http://download.eclipse.org/modeling/emf/updates/milestones/"
  mirrorsURL="http://www.eclipse.org/downloads/download.php?file=/modeling/emf/updates/milestones/site.xml&format=xml">

becomes

<site pack200="true">
  • If you are not in control of the repo, you can tell the p2 director to ignore mirrors:
-vmargs -Declipse.p2.mirrors=false

See also: bug 241430, bug 236762.

Usage

Policy files allow a user to configure where to search for updates to a feature when checking for updates.

Why would you want this?

  • For mirror control. With a policy file you can force your users to update from a mirror within your organization's firewall, instead of letting them choose a public mirror. This might give better performance or at least let you monitor the bits being transferred. Of course you'd have to be an Eclipse mirror first.
  • For patching. With a policy file you can update a publicly available EPL'd feature with your own custom version. Bear in mind doing so still must be done in adherence to EPL rules. See http://www.eclipse.org/legal/.

Creating the Policy File

A sample policy file is shown below:

<?xml version="1.0" encoding="UTF-8"?>
<update-policy>
  <url-map pattern="feature.id" url="http://hostname/update/nightly/nightlySite.xml"/>
</update-policy>

In this example, we save this to an XML file named "policy.xml". This is then placed next to the corresponding update site.xml. This effectively says "when I see feature with id x, instead go to update site y rather than the default". The pattern attribute is a string that represents prefix of a feature ID (up to and including a complete ID). A value of "*" matches all features. For example, a pattern of "org.eclipse" will match org.eclipse.jdt and org.eclipse.swt but not com.mycompany.myproduct

Note that the wildcard does not work embedded within a larger pattern; it can only be used by itself. For example, a pattern like "org.*" does not match all plugins that start with org

Example

If you wanted to update all features from a non-standard update site, you could use a policy file to redirect from the default Update site to a secondary one. For example:

<?xml version="1.0" encoding="UTF-8"?>
<update-policy>
  <url-map pattern="*" url="http://download.eclipse.org/modeling/emf/updates/site-interim.xml"/>
</update-policy>

Using the Policy File

In Eclipse, navigate to Window > Preferences > Install/Update, and paste in the URL to the policy file and hit OK, eg:

http://download.eclipse.org/modeling/mdt/updates/policy.xml
or, for a local file:
file:///home/nickb/workspace2/modeling/mdt/updates/policy.xml

The next time you search for updates, Eclipse will use the URL specified in the policy file, instead of what's in the feature.xml files.



An additional thought is to provide a preference page to allow the end user to choose which "release stream" they wish to subscribe to. In this case, there is a radio button that might specify "stable", "rc" and "nightly". Selecting one of these radio buttons would automatically set the policy file behind the scenes.

Back to the top