Build sequence
The build is done using the opensuse build server (OBS OpenSUSE Build Server): this provides the repetable engine to perform the build. In order to create the binary rpms the following build steps are taken:
Data are uploaded into the build server
- The python source is taken from subversion (Python SVN) and uploaded to the OBS
- The following patches are uploaded ("freely borrowed" from the SuSE package):
- Python-2.7a0-canonicalize2.patch (use realpath on a platform where is available)
- Python-2.6-gettext-plurals.patch
- Python-2.7a0-arch.patch (introduces few sys missing attributes)
- Python-2.7a0-autoconf.patch (extends the autoconf system)
- External packages needed for building are uploaded (for platform lacking them or in a wrong version)
- autoconf-2.61.tar.bz2
- automake-1.9.6.tar.bz2
- m4-1.4.13.tar.bz2
- sqlite-amalgamation-3.6.14.1.tar.gz
- opt-python.spec is uploaded (this is the main build script)
- Python-tests.tar.bz2 (an additional test suite for python) is uploaded
Build procedures
This step is totally automatic and it's done in the OBS server under the opt-python.spec rpm spec file. The steps are:
- The python source code is uncompressed
- The patches are applied
- Some platforms need the auto* suite and m4 in a newer version in order to build, so they are locally built if needed (autoconf-2.61.tar.bz2, automake-1.9.6.tar.bz2, m4-1.4.13.tar.bz2, sqlite-amalgamation-3.6.14.1.tar.gz)
- The python interpreter is built
- The python internal unittest suite is run
- The additional python run time test suite is run (Python-tests.tar.bz2)
- The python rpms are created if everything has been succesfully completed (Binaries)
Python V&V testing
An additional package is build in order to garantee the correct runtime beaviour for the built packages: this is the home:cavallo71:opt-python-pyquality / pyquality package.
It performs test on a fresh (untampered) system in order to verify a newly build python rpm package. The tests will verify:
- The python intepreter can sucesfully be loaded
- The python intepreter support library is loaded from the correct location
- The support libraries are loaded correctly
- The modules load correctly