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 4cf0ed9d1c..1dbf141c9e 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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 H{!jh|Ff{m- literal 0 HcmV?d00001