Autobuilder Development and Packaging: Difference between revisions
m (Remove old bit of text) |
Revision as of 18:11, 3 December 2009
Most information on autobuilder development is listed on the GCCSDK Development page. A few autobuilder specifics are detailed here.
Anatomy of an autobuilder package
To start, download a copy of the Autobuilder from SVN and look in the directory cli/tar. The heart of an autobuilder package is a file called 'setvars'. tar's has:
AB_CATEGORY=Command AB_URL=ftp://gnu.mirror.pacific.net.au/gnu/gnu/tar/tar-1.15.tar.gz ab_package() { cp $S/src/tar$AB_EXEEXT $S/COPYING $D }
Normally the autobuilder will make a best guess at how to build a package, so all that's needed are to specify in those areas it gets it wrong. The main work is done by the fetch* and build* collections of scripts in the top level of the autobuilder tree. As well as setting various key variables and providing some functions, the setvars script is run just before any configuration script so you can use it to fix up anything that the automatic steps missed.
setvars variables
If no URL is given the autobuilder will try to fetch the package of the same name from Debian's 'unstable' repository. Here we don't want that, so we explicitly give a URL in AB_URL of where the sources can be found. This can be a .tar.gz, a .tar.bz2 or a .zip file. Alternatively you can specify a CVS or SVN repository. For example, browser/firefox2/setvars has:
AB_CVS_ROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot AB_CVS_TAGORBRANCH=FIREFOX_2_0_0_14_RELEASE AB_CVS_MODULE=mozilla/client.mk
while audio/tremor/setvars has:
AB_SVN=http://svn.xiph.org/trunk/Tremor
AB_CATEGORY is the category the package will be placed in on the website.
setvars functions
When producing a Zip package, the ab_package shell function is called to choose which files are to be placed in the zipfile. It should copy files from $S, the build directory, to $D, a destination directory ready for zipping.
Other files
Files ending .p are patches which the autobuilder will apply to the downloaded source tree. For this to work the file naming in the first two lines of the patch file must be correct - ensure you just have a relative path starting at the top level of the unpacked source tree.
Packages may depend on other packages. Normally this uses the Debian dependency information, but you may specify packages manually using a 'depends' file. This just has a list of package names - for an example see browser/firefox2/depends
More information
For further information about the autobuilder, see the Autobuilder.html and Packaging.html files within the autobuilder source tree. See Autobuilder.html and Packaging.html in source form with HTML codes.