Qt-5-Binary-Installers

From Qt Wiki
Revision as of 09:36, 25 February 2015 by Maintenance script (talk | contribs)
Jump to navigation Jump to search

h2. 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":http://builds.qt.io and published in "http://releases.qt.io/qt5.0/beta-snapshots/":http://releases.qt.io/qt5.0/beta-snapshots/. 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":https://qt.gitorious.org/qtsdk/qtsdk/blobs/master/release-tools/mksrc.sh script (can be found from "qtsdk":https://qt.gitorious.org/qtsdk/qtsdk) and publishes those to "http://releases.qt.io/qt5.0/beta-snapshots/":http://releases.qt.io/qt5.0/beta-snapshots/. 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/":http://releases.qt.io/qt5.0-beta-snapshots/). 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":https://qt.gitorious.org/qtsdk/qtsdk/trees/master/release-tools). 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 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":http://releases.qt.io/qt5.0/beta-snapshots. 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/":http://releases.qt.io/utils/bin_tools/pre_sdk_ifw/) and binary installer python scripts which are in "qtsdk/release-tools/":https://qt.gitorious.org/qtsdk/qtsdk/trees/master/release-tools.

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.