Consider a big component which can be split into smaller components (sub-components). Each of these components can be built separately and later packaged together to form the final big component then this resultant component can be termed as a "Meta-Component".
Meta-Build has following advantages -
User can build sub-components individually and debug the builds separately. Smaller the sub-component, smaller is the build time resulting in faster build-debug-build cycle.
Allows several users to work simultaneously on different components
This step needs no further explanation. Refer User's Guide for details
For this you need to build the sub-components first. Once you have all the sub-components treat the Meta-Component as any other component. All the Meta-Build requires to know is the runids of the sub-components. We use the nmi method for specifying the inputs and fetching the results of sub-components. For options available to "nmi" method refer the User's Guide. Write the glue scripts for the Meta-Component that have the logic behind combining the sub-components to form the Meta-Component.
Following is a sample nmi_submit file for Meta-Component consisting of 3 sub-components -
NMI submit file (cmdfile) - Meta-Component |
description
= Meta-Build project = MyProject project_release = 1.0 component = MetaComponent component_version = 2.1 inputs = meta-component-glue.cvs, sub-components-result.nmi platform_pre = platform_pre remote_declare = remote_declare remote_task = remote_task remote_post = remote_post platform_post = platform_post platforms = x86_rh_9, x86_rh_7.2, sun4u_sol_5.9 prereqs = java-1.4.2_05, apache-ant-1.6.2, junit-3.8.1, perl-5.8.5, tar-1.14, patch-2.5.4, m4-1.4.1, binutils-2.15, flex-2.5.4a, make-3.80, byacc-1.9, bison-1.25, gzip-1.2.4 notify = parag@cs.wisc.edu priority = 1 |
sub-components-result.nmi (inputs file) |
method
= nmi # Assume following successful runs for sub-component builds # sub-component-1 = 110 # sub-component-1 = 111 # sub-component-1 = 112 input_runids = 110, 111, 112 untar_results = true |
All you have to do is run nmi_submit on the cmdfile above!!!