- 
    Epic 
- 
    Resolution: Fixed
- 
    P2: Important 
- 
    None
- 
    master
- 
    None
- 
        Product support in Coin
We have qt projects that have multiple dependencies to other products, such as
- qt-automotive
- qtcreator
- ...
but we cannot build these modules in CI, because it currently supports only building 1 product as dependency.
the objective is to make is possible and simple to configure coin to build arbitrary "products".
the main milestones:
- introduce generic "products", and a way to express arbitrary dependencies between them.
- reduce number of workitem types. in particular, do away with provisioning items. instead, platform images are just products themselves and are simply built via builditems.
- implement a flexible configuration system and migrate the existing specialized config files and hard-coded rules to this new system.
This epic is the placeholder for all work that is required to integrate the changes to build multiple products in CI.
[Iikka] Proposal for concrete steps:
Step1: Base functionality to run a build for Platform product (~6-8 weeks)
- Product Configuration interface https://codereview.qt-project.org/#/c/237967/
- Product Type class loader https://codereview.qt-project.org/#/c/221919/
	- This includes ProductType_platform.py + PlatformBuildItem (a.k.a. current Provision(Work)Item)
 
- Synthesize Platform product "ProductConfiguration" objects (i.e. test/build configurations) https://codereview.qt-project.org/#/c/238666/
- Refactor WorkItemFactory https://codereview.qt-project.org/#/c/238650/
- 
	- Will instantiate the Product Type of the product and execute the build graph i.e. creation of WorkItems
 
- "ProductConfiguration" properties are strings (OS, OS_VERSION, ARCH, etc.) but Coin expects to have enums (int): https://codereview.qt-project.org/#/c/236940/
Expected outcome:
- Basic structure to execute a simple build (workitemfactory replacement)
- Provisioning executed with the new system, i.e. building the Platform product
Step2: Run a build for qt5 (~8-10 weeks)
- Minor adjustment into WorkItem interface: https://codereview.qt-project.org/#/c/239653/
	- Keep compatibility with current system
 
- Split modules.py per product: https://codereview.qt-project.org/#/c/239357/
	- Keep compatibility with current system
 
- Implement ProductType_qt5.py and ProductType_qt5_module.py
	- For every forked-out submodule ProductConfiguration there already exist code to produce AgentInstructions (2)
- Create BuildItem and TestItem per forked-out submodule ProductConfiguration and set AgentInstructions directly (1)
 
- Synthesize qt5 configurations using the "ProductConfiguration" interface
- Implement "Build Context"
	- Not covered at all yet (QTQAINFRA-2209)
 
- Not covered at all yet (
- Run qt5 build
Expected outcome:
- qt5 build
Step3: Run a build for some product, e.g. tqtc-qt5 (~2 weeks)
- Synthesize "ProductConfiguration" objects: now we have product level depency chain: tqtc-qt5 -> qt5 -> platform
- Run the build for tqtc-qt5
Expected outcome:
- tqtc-qt5 build
- system should re-use existing qt5 and platform build artifacts (if using refs from previous builds/steps)
Step4: Translate current platform configurations from upstream into "ProductConfiguration" object tree (~4-6 weeks)
- While the parser is not functional yet we can translate the current parsed configurations into "ProductConfiguration" object tree and run the build
- QTQAINFRA-2081
Expected outcome:
- A build executed based on the test configurations defined in actual qt5, but using the new Product Repo system
Step5:
 Step6:
 ...
- is required for
- 
                    QT3DS-1317 Update wip/qt3dstudio/master to head of Qt 5.11 -         
- Closed
 
-         
- 
                    QTQAINFRA-963 Build Creator with Coin -         
- Closed
 
-         
- 
                    QTQAINFRA-1147 Transfer Qt Creator builds from Jenkins to Coin -         
- Closed
 
-         
- 
                    QTQAINFRA-1149 Transfer IFW builds from Jenkins to Coin -         
- Closed
 
-         
- 
                    QTQAINFRA-1151 Transfer LicenseMgr builds from Jenkins to Coin -         
- Closed
 
-         
- 
                    QTQAINFRA-1153 Transfer B2Qt builds from Jenkins to Coin -         
- Closed
 
-         
- 
                    QTQAINFRA-1155 Transfer OnlineInstaller builds from Jenkins to Coin -         
- Closed
 
-         
- 
                     QTQAINFRA-1146
        Transfer desktop builds from Jenkins to Coin QTQAINFRA-1146
        Transfer desktop builds from Jenkins to Coin-         
- Withdrawn
 
-         
- relates to
- 
                    QTQAINFRA-1016 write product configurations -         
- Closed
 
-         
- 
                    QTQAINFRA-1560 Coin Stability and Product Repository workshop -         
- Closed
 
-         
- replaces
- 
                    QTQAINFRA-1429 Extend Coin with ability to build packaging builds -         
- Closed
 
-         
- mentioned in
- 
                    Page Loading...