Qt-5-Binary-Installers

From Qt Wiki
Revision as of 16:57, 14 January 2015 by Maintenance script (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Re-creating Qt5 binary installers

Following describes current process of creating binary installers out of Qt5. Currently binary installers are created by Jenkins CI in http://builds.qt.io [builds.qt.io] and published in http://releases.qt.io/qt5.0/beta-snapshots/ [releases.qt.io]. The binary installer is create din three steps: src packages, qt5 build and finally creating the installers.

SRC packages

Source packages are created with qt-5.0-src-snapshot job, which is the kicking the remaining steps. It creates the src packages with the mksrc.sh [qt.gitorious.org] script (can be found from qtsdk [qt.gitorious.org]) and publishes those to http://releases.qt.io/qt5.0/beta-snapshots/ [releases.qt.io]. Job also publishes the 7z and zip packages as build artifacts locally as well as ci_info.txt file. The src job is started by git commit in qt5 repo, changes are checked twice per day (at 7 am and pm).

Build loops

Once the src job finishes successfully, it will start following build loops:
qt5-beta-bin-osx ( Clang on top Lion)
qt5-beta-bin-ubuntu1110-32
qt5-beta-bin-ubuntu1110-64
qt5-beta-bin-ubuntu1204-32
qt5-beta-bin-ubuntu1204-64
qt5-beta-bin-win7 ( MSVC2010)

All of those builds the locally published qt5 source package and copies the created bins with ci_info.txt from previous step to 7z file, which is then again pushed to releases.qt.io (http://releases.qt.io/qt5.0-beta-snapshots/ [releases.qt.io]). Each 7z is stored to platform specific dir:
linux_32_release/
linux_64_release/
mac_64_release/
win_release/
This is to match the configurations in the final step.

The mac and linux are built with simple builds scripts ( scripts are in qtsdk/release-tools [qt.gitorious.org]). Linux is built as shadow build, each module separately (make and make install). Mac is built as in-src each module separately. At the moment the configuration is such, that if one submodule fails the build keeps going. After the build, binaries and all installed artifacts are copied to 7z which is uploaded to release.qt.io.

Binary installers

Once the bin loops finishes successfully, it will initiate the final loop. At the moment each build loop has its counterpart as installer loop:
qt5-beta-bin-installer-ubuntu1110-32
qt5-beta-bin-installer-ubuntu1110-64
qt5-beta-bin-installer-ubuntu1204-32
qt5-beta-bin-installer-ubuntu1204-64
qt5-beta-bin-installer-win7-msvc2010
qt5-beta-bin-installer-mac

Each one of those will get the binary 7z file from the <os_bit>_release http://releases.qt.io/qt5.0-beta-snapshots/<os_bit>_release dir and src zip from the http://releases.qt.io/qt5.0/beta-snapshots [releases.qt.io]. The location is configured in SDK creation scripts.

The jobs above are currently relying on pre-built installer framework binaries (http://releases.qt.io/utils/bin_tools/pre_sdk_ifw/ [releases.qt.io]) and binary installer python scripts which are in qtsdk/release-tools/ [qt.gitorious.org].

As a final step, we read the ci_info.txt from the downloaded bin package and upload the installer into same dir with the matching src packages.