Qt-5-Binary-Installers: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
h2. Re-creating Qt5 binary installers | 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 | 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 === | === 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 | 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 === | === Build loops === | ||
Once the src job finishes successfully, it will start following 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 ( | 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 | 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 === | === 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: | 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/ | 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 ( | 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. | 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. |
Revision as of 09:36, 25 February 2015
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.