The main purpose of APBS is providing a semi-automatic tool for creating of high quality packages for more distributions.
APBS consists from two parts:
Abstract Package Build Description: This is an extensible XML based description, which can be used to specify build description for more distributions and version in a single file. Currently supported are RPM and Deb files.
Abstract Package Build Tool: This is a tool, which helps users to create packages. The tool uses Abstract Package Build Description as an intermediate format.
APBT acts as a container engine for miscellaneous actions (packaging steps or guesses - its "artificial intelligence") needed for creating the package. APBT selects proper actions and calls them in the proper order.
Depending on a source contents, these actions perform needed packaging steps with optional user input. It tries to guess best solution for particular package. For user it acts like a wizard-style application, for the packaging it acts like a engine with sequential execution of required steps. User can modify any packaging step by hand.
APBT is easily extensible. It allow you to add new rules for package description and create new types of packages.
It is written in Ruby and in future the user interaction frontend can be integrated with the OpenSuSE Build System.
Current implementation supports autoconf based packages and perl packages.
The tree is now open for the future development. Feel free to join. The tool is available at http://en.opensuse.org/Abstract_Package_Build_Description
TODOs: - Currently it has only basic support for scriptlets. It should be improved in future. (This part of packaging is strictly distribution dependent.) - Support guesses for BuildRequires. Some simple ideas exists (e. g. analyze configure.in to check for some dependencies), but complex solution is far above the Google SoC project. - Support more types of packages and more rules. - Automatic error handling ability - Features to help ISVs who want to ship their windows package with wine(may be a plugin, making use of the extensibility that is available) - Checkpoints - Support tools for file list modification (e. g. %find_lang).
Thanks to my GSOC mentor Stanislav Brabec for guiding me at each step.