This is used by the qitoolchain create command.
The root of the feed.xml should be toolchain
The global xml file should look like this:
<toolchain>
<package
name="foo"
url="http://example.com/packages/foo-1.0.tar.gz"
version="1.0"
/>
</toolchain>
The toolchain node accepts three types of children:
The feed type can have a url attribute, pointing to an other feed.
This lets you include feeds inside other feeds.
<!-- in feeds/full.xml -->
<toolchain>
<feed url = "feeds/included.xml" />
</toolchain>
<!-- feeds/included.xml -->
<toolchain>
<!-- some other packages -->
</toolchain>
The package type must have at least a name attribute.
Optionally, it can have a version and a arch attributes.
This lets you store several configuration and several versions of the same package in the same feed
<toolchain>
<package name="world" arch="linux32" version="0.1" url="world-0.1-linux32.tar.gz" />
<package name="world" arch="linux32" version="0.2" url="world-0.2-linux32.tar.gz" />
<package name="world" arch="linux64" version="0.1" url="world-0.1-linux64.tar.gz" />
<package name="world" arch="linux64" version="0.2" url="world-0.2-linux64.tar.gz" />
</toolchain>
If it does not have an url attribute, it should have a directory attribute, and then the package path will be relative to the feed path.
This lets you put several packages in a big archive (for instance my-sdk.tar.gz), and give it to other developers.
Simply create a toolchain.xml at the root of the SDK, looking like
<toolchain>
<package name="my-sdk" directory="." />
</toolchain>
If you need a toolchain file, (for instance because your are generating a cross-toolchain), simply use the toolchain_file attribute
<toolchain>
<package name="my-ctc" directory="." toolchain_file="my-toolchain.cmake" />
</toolchain>
The toolchain_file is relative to the path of the package.
Of course, nothing prevents you to create a feed letting developers getting your cross-toolchain remotely.
<toolchain>
<package
name="my-ctc"
url="http://example.com/myctc.tar.gz"
toolchain_file="my-toolchain.cmake"
/>
</toolchain>
Right now we have no need for this, but several things might be implemented later:
<!-- Force a given arch -->
<select>
<arch>linux32</arch>
</select>
<!-- or: -->
<select arch="linux32" />
<!-- blacklist a specific package:
foo-1.12 will never be added
-->
<select>
<blacklist name="foo" version="1.12" />
</select>
<!-- assert that a specific package
is here
If no bar-1.14 package is found, an
error will be raised
-->
<select>
<force name="bar" version="1.14" />
</select>
We do not need this because when several packages are found, we simply take the latest version.
So for instance, if you need foobar-0.1 in your maintenance branch, but foobar-2.0 in your devel branch, you can simply have two feeds, like this
<!-- in maint.xml -->
<toolchain>
<package name="foobar" version="0.1" url="http://example.com/packages/foobar-0.1.tar.gz" />
<package name="spam" version="1.0" url="http://example.com/packages/spam-1.0.tar.gz" />
</toolchain>
<!-- in devel.xml -->
<toolchain>
<feed url="http://example.com/feeds/maint.xml" />
<package name="foobar" version="2.0" url="http://example.com/packages/foobar-2.0.tar.gz" />
</toolchain>