From e06421bfc401c3aeac01db08e32c7833085352ec Mon Sep 17 00:00:00 2001 From: Scott Rifenbark Date: Thu, 30 Aug 2018 11:29:12 -0700 Subject: [PATCH] bitbake: bitbake-user-manual: Added new section on multiconfig builds Created a new example. Also added a figure for the separate configuration file hierarchy (Bitbake rev: f2d432674b187685591f60cec3b2980b377c63fe) Signed-off-by: Scott Rifenbark Signed-off-by: Richard Purdie --- .../bitbake-user-manual-intro.xml | 69 ++++++++++++++++++ .../figures/bb_multiconfig_files.png | Bin 0 -> 19991 bytes 2 files changed, 69 insertions(+) create mode 100644 bitbake/doc/bitbake-user-manual/figures/bb_multiconfig_files.png diff --git a/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.xml b/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.xml index 4cf0ed9d1c3..1dbf141c9e2 100644 --- a/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.xml +++ b/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.xml @@ -723,6 +723,75 @@ + +
+ Executing a Multiple Configuration Build + + + BitBake is able to build multiple images or packages + using a single command where the different targets + require different configurations (multiple configuration + builds). + Each target, in this scenario, is referred to as a + "multiconfig". + + + + To accomplish a multiple configuration build, you must + define each target's configuration separately using + a parallel configuration file in the build directory. + The location for these multiconfig configuration files + is specific. + They must reside in the current build directory in + a sub-directory of conf named + multiconfig. + Following is an example for two separate targets: + + + + + The reason for this required file hierarchy + is because the BBPATH variable + is not constructed until the layers are parsed. + Consequently, using the configuration file as a + pre-configuration file is not possible unless it is + located in the current working directory. + + + + Minimally, each configuration file must define the + machine and the temporary directory BitBake uses + for the build. + Suggested practice dictates that you do not + overlap the temporary directories used during the + builds. + + + + Aside from separate configuration files for each + target, you have to enable BitBake to perform multiple + configuration builds by enabling it in the local + configuration file. + Enabling is accomplished through a variable specific + to the build environment. + + + + Once the target configuration files are in place and + BitBake has been enabled to perform multiple configuration + builds, use the following command form to start the + builds: + + $ bitbake [multiconfig:multiconfigname:]target [[[multiconfig:multiconfigname:]target] ... ] + + Here is an example for two multiconfigs: + Target_1 and + Target_2: + + $ bitbake multiconfig:Target_1:target multiconfig:Target_2:target + + +
diff --git a/bitbake/doc/bitbake-user-manual/figures/bb_multiconfig_files.png b/bitbake/doc/bitbake-user-manual/figures/bb_multiconfig_files.png new file mode 100644 index 0000000000000000000000000000000000000000..041f06403b4cfc7cf7939ce44849d022d7b1337e GIT binary patch literal 19991 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