<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
    http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<ivysettings>
  <properties file="${ivy.settings.dir}/build.properties"/>
  <caches defaultCacheDir="${cache.dir}/all" />

  <settings defaultResolver="default" circularDependencyStrategy="error" />

  <!--
  <classpath file="${sigil-ivy-plugin.jar}" />
  Ant tasks "subant" and "ant" cause IvySettings to be re-loaded, 
  which then re-loads SigilParser in a new URLClassLoader,
  which causes ProjectRepository to be re-initialised. Outch!
  Loading sigil-ivy-plugin.jar in load-ivy task, uses the same ClassLoader
  and thus avoids re-initialising ProjectRepositiory.
  Search for Derek Baum in the October 2008 ant-dev archives for my attempt
  at getting the Ivy communiuty to fix this.
  http://mail-archives.apache.org/mod_mbox/ant-dev/200810.mbox/browser
  -->
  <typedef name="sigil-parser" classname="org.apache.felix.sigil.ivy.SigilParser" />
  <typedef name="sigil" classname="org.apache.felix.sigil.ivy.SigilResolver" />

  <parsers>
    <sigil-parser config="${ivy.settings.dir}/sigil-repos.properties"
    		quiet="true"/>
  </parsers>

  <resolvers>
    <sigil name="sigil"
	   config="${ivy.settings.dir}/sigil-repos.properties"
	   extractBCP="true"
           cache="sigil"/>

    <chain name="default" returnFirst="true">
      <filesystem name="local">
        <ivy pattern="${repository.dir}/local/${repository.pattern}" />
        <artifact pattern="${repository.dir}/local/${repository.pattern}" />
      </filesystem>

      <filesystem name="shared">
        <ivy pattern="${repository.dir}/shared/${repository.pattern}" />
        <artifact pattern="${repository.dir}/shared/${repository.pattern}" />
      </filesystem>

    </chain>

    <url name="eclipse">
      <artifact pattern="http://download.eclipse.org/releases/ganymede/plugins/[module]_[revision].[ext]" />
      <artifact pattern="http://download.eclipse.org/releases/ganymede/[module].[artifact]_[revision].[ext]" />
    </url>

    <url name="eclipse2" cache="eclipse2" >
      <artifact pattern="http://download.eclipse.org/releases/ganymede/plugins/[module]_[revision].[ext]" />
      <artifact pattern="http://download.eclipse.org/releases/ganymede/[module].[artifact]_[revision].[ext]" />
    </url>

    <url name="apache" m2compatible="true">
      <artifact pattern="http://repo1.maven.org/maven2/[organisation]/[module]/[artifact]/[revision]/[artifact]-[revision].[ext]"/>
    </url>

    <url name="aQute" m2compatible="true">
      <artifact pattern="http://www.aQute.biz/repo/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
    </url>
  </resolvers>

  <caches>
    <cache name="sigil" basedir="${cache.dir}/sigil" />
    <cache name="eclipse2" basedir="${cache.dir}/eclipse2" />
  </caches>

  <modules>
    <module organisation="sigil" resolver="sigil"/>
    <module organisation="org.eclipse" resolver="eclipse"/>
    <module organisation="org.eclipse2" resolver="eclipse2"/>
    <module organisation="org.apache" name="felix\.sigil.*" matcher="regexp" resolver="default"/>
    <module organisation="org.apache" resolver="apache"/>
    <module organisation="biz.aQute" resolver="aQute"/>
  </modules>
</ivysettings>
