summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
Commit message (Collapse)AuthorAgeFilesLines
* bitbake: runqueue: Handle missing sstate dependencies betterRichard Purdie2016-09-211-5/+4
| | | | | | | | | | | | | | | | | | | | | | | If you "bitbake glibc-locale" then delete the libpcre-native sstate and "bitbake glibc-locale -C package_write_rpm", it will fail with rpmbuild missing the libprce library. The reason is that libpcre-native fails to install from sstate (since it isn't present) but doesn't get built and hence rpm-native tries to run without its dependencies. The simplest fix is not to add "covered" tasks which have failed to install sstate. I can't help feeling there is more to this issue but this does fix the current problem and shouldn't have adverse affects. It is an unusual situation to have missing dependencies in sstate since they're usually all present or not at all. I've taken the opportunity to remove some old cruft from when we had numeric task ids, the code can be simpler now. (Bitbake rev: ba566b46d530b495f12f3a74f76434717b22a020) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: toaster: buildinfohelper local layer don't construct path using git ↵Michael Wood2016-09-211-3/+5
| | | | | | | | | | | | | | | info When the layer is local source don't try and work out the location of the layer by using the git information (getGitCloneDirectory) [YOCTO #10199] (Bitbake rev: 3dfea5214d4bd006e26630e5024774ecb84ea527) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: bavery <brian.avery@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: toaster: unlock BuildEnvirnoment when build is doneEd Bartosh2016-09-211-3/+5
| | | | | | | | | | | | | | | | There is no need to lock build environment before changing build status as this operation is very fast. However, there is a need to unlock it after changing build status. Explicitly unlocked BuildEnvironment after build reaches final status SUCCEEDED, FAILED or CANCELLED. This should allow runbuilds process to pickup next build faster. (Bitbake rev: faa88272d656640c039572c5c8f3e6c56535b6f7) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: toaster: notify runbuilds when build status changesEd Bartosh2016-09-211-0/+4
| | | | | | | | | | | | | Called signal_runbuilds API when build is scheduled, cancelled or finished to notify runbuilds process about builds status change. [YOCTO #8918] (Bitbake rev: fe08f0fa4b328908e73695ebbceca87bc86a49f9) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cookerdata.py: Catch BBHandledException, preventing a backtrace in ↵Mark Hatle2016-09-211-1/+1
| | | | | | | | | | | | | an event The event handling 'Exception' was catching and triggering a backtrace. This trace was obscuring any errors from an event handler that had raised the BBHandledException, which should indicate do not print additional information. (Bitbake rev: 51ca5193a5674b27d816140b0254f485912177a2) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cooker.py: add LAYERRECOMMENDS processingJoe Slater2016-09-211-3/+34
| | | | | | | | | | | | | | | | | | | Add recommended layers to collection_depends[] so that dynamic priority assignment will work for both depends and recommends. Recommended layers do not cause an error or warning if they are not in the collection list, but debug messages are output for level 3 and above. explode_dep_versions2 returns a dictionary, so we change the variable deplist to depDict. The dictionary values are lists which are either empty or contain only one version specification. (Bitbake rev: 20cdc3d609f8aea992f97c3db336574d3a549973) Signed-off-by: Joe Slater <jslater@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: uihelper: use elif instead of repeated ifRoss Burton2016-09-211-6/+5
| | | | | | (Bitbake rev: a1d6f6425cd9ef9e07344869817517172afd6e27) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cooker: check if target contains taskEd Bartosh2016-09-161-1/+2
| | | | | | | | | | | | | | Task name was incorrectly added to the targets that already contained :task suffix and fired with BuildInit event. This caused Toaster to create incorrect Target objects and show them in UI. [YOCTO #10221] (Bitbake rev: b7faf1af3bd3110fba347fbe6e432fc4ee66590a) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cookerdata: allow multiple passes of config re-parsingMarkus Lehtonen2016-09-161-1/+8
| | | | | | | | | [YOCTO #10188] (Bitbake rev: 07a03a1290fd206df2b40ffc28381b5b3c10ba4a) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cookerdata: fire ConfigParsed event after re-parseMarkus Lehtonen2016-09-161-0/+1
| | | | | | | | | [YOCTO #10188] (Bitbake rev: ec1c951a4ee0c33acdde29e578f79ad719a34aca) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: build: Allow dirs/cleandirs to work for empty functionsRichard Purdie2016-09-151-6/+7
| | | | | | | | | | | | | Users are surprised when dirs/cleandirs aren't acted upon for empty functions. This reorders the code slightly so that those flags are acted upon for empty functions as there are cases where this is expected. [YOCTO #10256] (Bitbake rev: 5bf874673d75b5f4ff2b34f0ab8502558ee84d00) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: bitbake: fetch2: Make SRCREV_FORMAT name substitution saferUlf Magnusson2016-09-151-1/+11
| | | | | | | | | | | | | | | | | | | | | | The implementation of SRCREV_FORMAT has at least two issues: 1. Given two names "foo" and "foobar" and SRCREV_FORMAT = "foo_foobar", "foo" might currently get substituted twice, and "foobar" not at all. 2. If the revision substitued for some name happens to contain another name as a substring, then that substring might incorrectly get replaced. Fix both issues by sorting the names with the longest ones first and replacing all names at once with a regular expression. This was inspired by http://stackoverflow.com/questions/6116978/python-replace-multiple-strings. (Bitbake rev: 8e6a893cb7f13ea14051fc40c6c9baf41aa47fee) Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2/npm: don't download same URL multiple timesPaul Eggleton2016-09-151-4/+8
| | | | | | | | | | | If we've already fetched a particular URL then we do not need to do so again within in the same operation. Maintain an internal list of fetched URLs to avoid doing that. (Bitbake rev: b4705c80add1f618c11a9223cdd9578d763b50ec) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: event.py: output errors and warnings to stderrEd Bartosh2016-09-151-3/+10
| | | | | | | | | | | | All logging messages are printed on stdout when processing UI event queue. This makes it impossible to distinguish between errors and normal bitbake output. Output to stderror or stdout depending on log level should fix this. (Bitbake rev: 56ac0d4c7a5f47aeb707b15a0c305d9f73aae945) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cooker: record events on cooker exitEd Bartosh2016-09-081-1/+1
| | | | | | | | | | | | | | | | | | | Bitbake collects all events in special event queue when called with -w option. However, it starts to write events to the eventlog only after BuildStarted event is received. In some cases this event is not received at all, e.g. when bitbake is run with --parse-only command line option. It makes sense to write all collected events when CookerExit event received to make sure all events are written into the eventlog even if BuildStarted event is not fired. [YOCTO #10145] (Bitbake rev: 57912de63fa83550c0ae658eb99b76e9cc91a8d1) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: toaster: keep layer name in variable history pathDavid Reyna2016-09-081-1/+2
| | | | | | | | | | | | | | When converting variable history file names to relative paths, keep the layer directory's name so that the user can distinguish between conf files with the same name. [YOCTO #8188] (Bitbake rev: 59561d652af91c2099b735084f0e44275d68e637) Signed-off-by: David Reyna <david.reyna@windriver.com> Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: lib/bb/utils: edit_metadata() comment tweaksPaul Eggleton2016-09-081-1/+3
| | | | | | | | | | | | | | No functional changes, just make a couple of minor tweaks to the comments for edit_metadata(): * There are four elements to be returned by the callback function * Add an example return statement for when you don't want to modify the value (Bitbake rev: 99675c19375c96140bc8ae8f9fc3a1945a77cebb) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2/npm: clarify commentPaul Eggleton2016-09-081-1/+1
| | | | | | | | | | The correct name of the parameter is "version" not "ver" so ensure we aren't misleading the user by giving the latter in an example. (Bitbake rev: 14c045c6a20993d389b91ae2459d811a1430a7b2) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2/npm: handle top-level shrinkwrap filePaul Eggleton2016-09-081-2/+9
| | | | | | | | | | | | | Allow using a top-level shrinkwrap file with one or more npm:// dependencies, i.e. if the module isn't found at the top level then look one level down. Part of the fix for [YOCTO #9537]. (Bitbake rev: f7de3f8b5f628dee043fe783148812914ab20813) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2/npm: support subdir= parameterPaul Eggleton2016-09-081-1/+6
| | | | | | | | | | | | | "npmpkg" can be a default, but it should respect the subdir parameter as with other FetchMethods. This allows us to have more than one npm:// entry in SRC_URI without nasty hacks. Fix required in order to support [YOCTO #9537]. (Bitbake rev: e6a94d2091ec5d42f25102334a8492a731b8dec3) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2/npm: fix broken fetches if more than one npm URL fetchedPaul Eggleton2016-09-081-3/+3
| | | | | | | | | | | | | | | You cannot set a URL-specific value in an object-level variable on the FetchMethod in urldata_init() or the result is the value specific to the last URL will be the one that gets set. This prevented fetching more than one npm:// URL correctly - the other tarballs would not download to the correct location and do_unpack failed to find them as a result. Fix required in order to support [YOCTO #9537]. (Bitbake rev: 1435b49ea7d0f9d4cc4a665fb2aa83d1eea7900f) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2/npm: explicitly specify workdirPaul Eggleton2016-09-081-1/+2
| | | | | | | | | | | | | We were downloading into the current directory here, which is fine if that current directory can be expected to be the right place - but that's not true when called from recipetool within OE. We should explicitly specify the directory to run the command in and then there won't be a problem. (Bitbake rev: 0ddaf725e5a0675b252b7f80b1706370e478175b) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: bb.fetch2.svn: correctly pass workdir when fetchingChristopher Larson2016-09-021-1/+1
| | | | | | | | | | | | The ud.pkgdir argument was being passed as the 'quiet' argument to runfetchcmd, not the 'workdir' argument, resulting in fetching the svn module into the root of DL_DIR, not where it belongs. Cc: Matt Madison <matt@madison.systems> (Bitbake rev: dc756510a95f88b192352be6fcd1d5d77852c348) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cooker.py: Catch when stdout doesn't have a file descriptorMariano Lopez2016-09-021-9/+12
| | | | | | | | | | | | | | | | | Currently, there is a check to remove the TOSTOP attribute from a tty to avoid hangs. It assumes that sys.stdout will have a file descriptor and this is not always true, some IO classes will throw exceptions when trying to get its file descriptor. This will add a check for such cases and avoid throwing an exception. [YOCTO #10162] (Bitbake rev: cb4f8f6efa28ef2b13bc738a0118b876baa15b3e) Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: buildinfohelper: discover kernel artifacts correctlyElliot Smith2016-09-021-4/+7
| | | | | | | | | | | | | | | | | | | | Because some image_license.manifest files contain multiple FILES lines, and because those lines can sometimes not contain a list of files (i.e. they look like "FILES:\n"), we were resetting the list of kernel artifacts when we hit the second "empty" line. Fix by ignoring any FILES line which doesn't list files, and by appending any files found in a valid FILES line, rather than overwriting the existing list. [YOCTO #10107] (Bitbake rev: 927ec3524625ac731326b3c1c1361c2a4d2bd9e1) Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: wget: allow basic http auth for SSTATE_MIRRORSStephano Cetola2016-09-021-0/+11
| | | | | | | | | | | | | | | | | | If http basic auth creds were added to sstate mirrors like so: https://foo.com/sstate/PATH;user=foo:bar;downloadfilename=PATH The sstate mirror check would silently fail with 401 unauthorized. This patch allows both the check, and the wget download to succeed by checking for user credentials and if present adding the correct headers, or wget params as needed. [ YOCTO #9815 ] (Bitbake rev: cea8113d14da9e12db80a5b6b5811a47a7dfdeef) Signed-off-by: Stephano Cetola <stephano.cetola@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cookerdata/ast: Fail gracefully if event handler function is not foundMarkus Lehtonen2016-09-022-0/+5
| | | | | | | | | [YOCTO #10186] (Bitbake rev: 107c47c4e6de6a596cf1aeca5c18dbc1c5b44dc4) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: build/runqueue: Add noextra stamp file parameter to fix multiconfig ↵Richard Purdie2016-09-022-5/+7
| | | | | | | | | | | | | | | | | | builds We can't execute the same task for the same package_arch multiple times as the current setup has conflicting directories. Since these would usually have the same stamp/hash, we want to execute in sequence rather than in parallel, so for the purposes of task execution, don't consider the "extra-info" on the stamp files. We need to add a parameter to the stamp function to achieve this. This avoids multiple update-rc.d populate_sysroot tasks executing in parallel and breaking multiconfig builds. (Bitbake rev: a9041fc96a14e718c0c1d1676e705343b9e872d3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2: Handle multiconfig fetcher issuesRichard Purdie2016-09-021-3/+4
| | | | | | | | | | | We need a separate fetcher cache per multiconfig as the revisions and other SRC_URI data can potentially be different. For now, this is the simplest way to achieve that and avoids linux-yocto kernel build failures when targeting multiple machines for example. (Bitbake rev: d98cc31d6668bc1d6372664593126b5e5132ef2c) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: tinfoil: add a parse_recipe_file functionPaul Eggleton2016-09-021-0/+36
| | | | | | | | | | | | | | | Parsing a recipe is such a common task for tinfoil-using scripts, and is a little awkward to do properly, so add an API function to do it. This should also isolate scripts a little from future changes to the internal code. The first user of this will be the OpenEmbedded layer index update script. Part of the fix for [YOCTO #10192]. (Bitbake rev: 39780b1ccbd76579db0fc6fb9369c848a3bafa9d) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cache: allow parsing a recipe with a custom config datastorePaul Eggleton2016-09-021-34/+39
| | | | | | | | | | | | | | | | | To accommodate the OpenEmbedded layer index recipe parsing, we have to have the ability to pass in a custom config datastore since it constructs a synthetic one. To make this possible after the multi-config changes, rename the internal _load_bbfile() function to parse_recipe(), make it a function at the module level (since it doesn't actually need to access any members of the class or instance) and move setting __BBMULTICONFIG inside it since other code will expect that to be set. Part of the fix for [YOCTO #10192]. (Bitbake rev: 5b3fedfe0822dd7effa4b6d5e96eaf42669a71df) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: tinfoil: add context manager functionsPaul Eggleton2016-09-021-0/+6
| | | | | | | | | | | | | | | Since calling the shutdown() function is highly recommended, make tinfoil objects a little easier to deal with by adding context manager support - so you can do the following: with bb.tinfoil.Tinfoil() as tinfoil: tinfoil.prepare(True) ... (Bitbake rev: f59bc6be2b4af1acdcf6a1b184956b5ffd297743) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2: clean up remaining cwd saves/changesMatt Madison2016-08-251-11/+0
| | | | | | | | | | | Now that the fetchers all preserve the current working directory, the cwd changes in the try_mirror_url, download, and checkstatus methods are no longer needed. (Bitbake rev: 0ed8975c42718342a104a9764a58816f964ec4ea) Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: siggen: Fix file variable typo in compare_sigfilesJonathan Liu2016-08-201-1/+1
| | | | | | | (Bitbake rev: deab9a30987b225922490ca186c5307c15d45b82) Signed-off-by: Jonathan Liu <net147@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: fetch2: preserve current working directoryMatt Madison2016-08-2013-137/+101
| | | | | | | | | | | Fix the methods in all fetchers so they don't change the current working directory of the calling process, which could lead to "changed cwd" warnings from bitbake. (Bitbake rev: 6aa78bf3bd1f75728209e2d01faef31cb8887333) Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: toasterui, knotty: don't print taskid followed by taskstring which ↵Martin Jansa2016-08-202-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | are now in most cases identical * unify the format how the task is described * don't show taskid followed by taskstring as the taskstring is different only for setscene tasks (by _setscene suffix) * the duplicated output was introduced by: 2c88afb taskdata/runqueue: Rewrite without use of ID indirection as reported and confirmed as a bug here: http://lists.openembedded.org/pipermail/openembedded-core/2016-June/123148.html * show: NOTE: Running task 541 of 548 (/OE/build/oe-core/openembedded-core/meta/recipes-core/zlib/zlib_1.2.8.bb:do_package) instead of much longer: NOTE: Running task 541 of 548 (ID: /OE/build/oe-core/openembedded-core/meta/recipes-core/zlib/zlib_1.2.8.bb:do_package, /OE/build/oe-core/openembedded-core/meta/recipes-core/zlib/zlib_1.2.8.bb:do_package) and similarly for failed tasks: ERROR: Task (virtual:native:/OE/build/oe-core/openembedded-core/meta/recipes-core/zlib/zlib_1.2.8.bb:do_install) failed with exit code '1' instead of much longer: ERROR: Task virtual:native:/OE/build/oe-core/openembedded-core/meta/recipes-core/zlib/zlib_1.2.8.bb:do_install (virtual:native:/OE/build/oe-core/openembedded-core/meta/recipes-core/zlib/zlib_1.2.8.bb:do_install) failed with exit code '1' (Bitbake rev: 696693d45f5eff1226866ed79dbfb67161d8cd3f) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: tests: add unit tests for the usehead url parameterMarkus Lehtonen2016-08-201-0/+30
| | | | | | | | | [YOCTO #9351] (Bitbake rev: 63031c0236ace10a9d52b9db9bbb892c1b4bf7db) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: git: Allow local repos to use HEADRichard Purdie2016-08-201-1/+15
| | | | | | | | | | | | | | | | Introduce a new 'usehead' url parameter for git repositories. Specifying usehead=1 causes bitbake to use whatever commit the repository HEAD is pointing to. Usage of usehead=1 is only allowed for local git repositories, i.e. it must always be accompanied with protocol=file url parameter. [YOCTO #9351] (Bitbake rev: 2673fac5a9d06de937101e3fb2ddf1e60ff99abf) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: bitbake-selftest: introduce BB_TMPDIR_NOCLEANMarkus Lehtonen2016-08-201-1/+4
| | | | | | | | | | Set this env variable to 'yes' to preserve temporary directories used by the fetcher tests. Useful for debugging tests. (Bitbake rev: 04132b261df9def3a0cff14c93c29b26ff906e8b) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: bitbake: Update version to 1.31.1Richard Purdie2016-08-181-1/+1
| | | | | | (Bitbake rev: 3ff1c66e6f336e5de7dcbc983a97fcd19ddc6b81) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: bitbake: Initial multi-config supportRichard Purdie2016-08-186-379/+520
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds the notion of supporting multiple configurations within a single build. To enable it, set a line in local.conf like: BBMULTICONFIG = "configA configB configC" This would tell bitbake that before it parses the base configuration, it should load conf/configA.conf and so on for each different configuration. These would contain lines like: MACHINE = "A" or other variables which can be set which can be built in the same build directory (or change TMPDIR not to conflict). One downside I've already discovered is that if we want to inherit this file right at the start of parsing, the only place you can put the configurations is in "cwd", since BBPATH isn't constructed until the layers are parsed and therefore using it as a preconf file isn't possible unless its located there. Execution of these targets takes the form "bitbake multiconfig:configA:core-image-minimal core-image-sato" so similar to our virtclass approach for native/nativesdk/multilib using BBCLASSEXTEND. Implementation wise, the implication is that instead of tasks being uniquely referenced with "recipename/fn:task" it now needs to be "configuration:recipename:task". We already started using "virtual" filenames for recipes when we implemented BBCLASSEXTEND and this patch adds a new prefix to these, "multiconfig:<configname>:" and hence avoid changes to a large part of the codebase thanks to this. databuilder has an internal array of data stores and uses the right one depending on the supplied virtual filename. That trick allows us to use the existing parsing code including the multithreading mostly unchanged as well as most of the cache code. For recipecache, we end up with a dict of these accessed by multiconfig (mc). taskdata and runqueue can only cope with one recipecache so for taskdata, we pass in each recipecache and have it compute the result and end up with an array of taskdatas. We can only have one runqueue so there extensive changes there. This initial implementation has some drawbacks: a) There are no inter-multi-configuration dependencies as yet b) There are no sstate optimisations. This means if the build uses the same object twice in say two different TMPDIRs, it will either load from an existing sstate cache at the start or build it twice. We can then in due course look at ways in which it would only build it once and then reuse it. This will likely need significant changes to the way sstate currently works to make that possible. (Bitbake rev: 5287991691578825c847bac2368e9b51c0ede3f0) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: siggen: properly close files rather than opening them inlinePaul Eggleton2016-08-181-6/+9
| | | | | | | | | | If you don't do this, with Python 3 you get a warning on exit under some circumstances. (Bitbake rev: 49502685df3e616023df352823156381b1f79cd3) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: ast/ConfHandler: Add a syntax to clear variableJérémy Rosen2016-08-183-0/+62
| | | | | | | | | | | | unset VAR will clear variable VAR unset VAR[flag] will clear flag "flag" from var VAR (Bitbake rev: bedbd46ece8d1285b5cd2ea07dc64b4875b479aa) Signed-off-by: Jérémy Rosen <jeremy.rosen@openwide.fr> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cache: Build datastores from databuilder objectRichard Purdie2016-08-182-31/+38
| | | | | | | | | | | | | | Rather than passing in a datastore to build on top of, use the data builder object in the cache and base the parsed recipe from this. This turns things into proper objects building from one another rather than messy mixes of static and class functions. This sets things up so we can support parsing and building multiple configurations. (Bitbake rev: fef18b445c0cb6b266cd939b9c78d7cbce38663f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cache: Split Cache() into a NoCache() parent objectRichard Purdie2016-08-181-52/+57
| | | | | | | | | | | There are some cases we want to parse recipes without any cache setup or involvement. Split out the standalone functions into a NoCache variant which the Cache is based upon, setting the scene for further cleanup and restructuring. (Bitbake rev: 120b64ea6a0c0ecae7af0fd15d989934fa4f1c36) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cache/cooker: Pass databuilder into bb.cache.Cache()Richard Purdie2016-08-182-3/+5
| | | | | | | | | | | | | Rather that the current mix of static and class methods, refactor so that the cache has the databuilder object internally. This becomes useful for the following patches for multi config support. It effectively completes some of the object oriented work we've been working towards in the bitbake core for a while. (Bitbake rev: 7da062956bf40c1b9ac1aaee222a13f40bba9b19) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cache: Make virtualfn2realfn/realfn2virtual standalone functionsRichard Purdie2016-08-182-35/+30
| | | | | | | | | Needing to access these static methods through a class doesn't make sense. Move these to become module level standalone functions. (Bitbake rev: 6d06e93c6a2204af6d2cf747a4610bd0eeb9f202) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cache/ast: Move __VARIANTS handling to parse cache functionRichard Purdie2016-08-182-5/+5
| | | | | | | | Simple refactoring to allow for multiconfig support. (Bitbake rev: 266b848da40904446eb1d084bbdc5307a9b45197) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: runqueue: Abstract worker functionality to an object/arrayRichard Purdie2016-08-181-56/+66
| | | | | | | | | | | | | | | With the introduction of multi-config and the possibility of distributed builds we need arrays of workers rather than the existing two. This refactors the code to have a dict() of workers and a dict of fakeworkers, represented by objects. The code can iterate over these. This is separated out from the multi-config changes since its separable and clearer this way. (Bitbake rev: 8181d96e0a4df0aa47287669681116fa65bcae16) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: cookerdata: Simplify prefiles/postfilesRichard Purdie2016-08-181-3/+5
| | | | | | | | | The current codepaths are rather confusing. Stop passing these as parameters and use the ones from when the object is created. (Bitbake rev: 8c992c148d9619b10eeae8bbd9376ecf408037a5) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>