Skeletons represent a dependency, but not the software (or the package) itself. Skeletons are used to:
Check for the existence of an implementation for a certain interface.
Install the "best" implementation if one not found.
Skeletons root names are the same as the specfiles, but without the software version number and the package number. It's an unversioned root name Example: @gtk.org/gtk
Skeletons have a Test section, which should set SOFTWARE_VERSIONS and must set INTERFACE_VERSIONS
This is a space separated list of versions of the software, if detectable.
This is a space separated list of the interfaces of the software
The reason there can be more than one is so skeletons can detect parallel installs. If no versions were detected, these variables should not be changed from their initial values.
[Meta] RootName: @xiph.org/libvorbis DisplayName: Vorbis audio codec ShortName: libvorbis Skeleton-Author: Hongli Lai <h.lai@chello.nl> Skeleton-Version: 1 [Notes] This skeleton does not set SOFTWARE_VERSIONS Interface versions start at 0. [Test] INTERFACE_VERSIONS=`testForLib -i libvorbis.so`
The format is very similar to the specfile format. Some metadata is provided,
and then a few sections most of which are optional. The Test section is
required, but by relying on the API functions provided can be made extremely
simple. In this case, the testForLib function is used. The -i switch to
testForLib()
simply makes it output interface
versions as opposed to the A.B.C triples normally given.
The Notes section is a freeform text area. It's not used or parsed by autopackage, and should be used to describe quirks of how the skeleton works to the package developer. Most skeletons should follow a standard interface, however there is some leeway in how this is implemented - for instance there are no hard guarantees of how interface versions are allocated short of them being A.B pairs. It's typical for skeletons to not set SOFTWARE_VERSIONS for instance, especially in the case of simple libraries where the interface version is the software version. If that is true then it should be noted here.