openSUSE:Build Service product definition handling
Handling of product definitions
A Product Definition is a XML file (or a set of files) which specifise all required information to build a product from a set of packages. A Product can be a file system tree which can be used to install a system or iso medias. The file system tree is internally often refered to as FTP Tree for historical reasons.
Storage of Product Definitions in OBS
A Product definition needs to be submitted to a "_product" package. The package can be created as usual if not existing. The files inside can be checked out or submitted like any other package files. So you can for example checkout the openSUSE:Factory product definition via
osc co openSUSE:Factory _product
The relationship to the surrounding project is on source level until now. Only people with permissions in the project can add and edit the description.
Automated Product Creation
NOT IMPLEMENTED YET ! The Build Service server will automatically create virtual packages from product definition when a product config gets submitted. This means that it creates "_product_$NAME" package sources for:
- each defined architecture set containing a kiwi build description
- $product-release package which provides for example the openSUSE-release package, including the product specification for the installed system.
- pattern package.
These sources get updated on each PD submission change and get scheduled as usual packages by the scheduler. The sources can get checked out as usual, but submission is not allowed.
Manual Product Creation
All steps can get executed manually for developing and debugging purposes:
1. Install product converter
git clone git://gitorious.org/opensuse/build-service.git
2. Get config and run converter
cd backend osc co openSUSE:Factory _product ./bs_productconvert openSUSE:Factory/_product/openSUSE.product /tmp/outputDirectory # Add the "-l" option if you have local access to the trees. This will speed up # kiwi runs significantly.
"local access" hereby means the same filesystem id so that kiwi can use hardlinks instead of copies. The convert creates all kiwi configs and spec files into the output directory. spec files can get build as usual package builds.
Create images from kiwi description
Edit the kiwi file and replace the "obs://" path with a full local path to the packages directories. (Will be obsolete with osc integration).
Call kiwi with the following commands to build the image:
kiwi --root /tmp/kiwiOutputDirectory --create-instsource $KIWI_SPEC_DIRECTORY
This creates an FTP tree according to the kiwi spec. An image can get rolled by calling
/usr/share/kiwi/image/isoboot/suse-isolinux /tmp/kiwiOutputDirectory /tmp/image.iso
(kiwi-desc-isoboot package needs to be installed for this command).
Missing Implementations
- Integration of automated bs_productconvert call
- Automated instsource creation via kiwi.
- osc integration of kiwi builds.
- pattern package generation from PD
- control.xml file generation from PD
- skelcd package creation ?