summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* runqueue: Fix collapsed setscene dependency treeHEADmasterRichard Purdie2017-02-191-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we removed the postinst sstate dependency handling code from setscene_depvalid, we noticed things being installed into the old style sysroot for rootfs tasks which should not have been there, causing a performance regression. Analysis revealed that setscene dependencies were "bubbling" over sstate tasks when they should have been stopping there. The 'continue' added by this patch avoids this issue and eusures sstate tasks remain contained to their specific chains. There was another bug in the code this exposed where the acconting for tasks as they were removed from sq_revdeps was not correct. In fixing this, what looks like a workaround in another test can then be simplified. After this change, populate_sysroot tasks are no longer depending on package_write_rpm tasks for example, which would make no sense. A before/after analysis of image dependencies only revealed improved dependencies after this change. Recipe specific sysroots did highlight the issue here since the behaviour of the sysroot dependencies (and processing with depvalid) was not matching what bitbake itself was doing, with bitbake being incorrect. Failures were 'safe' in that too many dependencies would get installed. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake-layers: Handle exception raised bytinfoil.prepare()Aníbal Limón2017-02-191-10/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The tinfoil.prepare method can raise Exceptions when is parsing initial data so add this call inside try, finally to avoid get blocked for don't call tinfoil.shutdown(). The tinfoil_init function was remove because isn't make sense now since tinfoil.prepare() needs to be inside try, finally closures. Example of raised exception and gets blocked: $ bitbake-layers add-layer ~/repos/meta-openembedded/meta-python/ Traceback (most recent call last): File "/home/alimon/repos/poky/bitbake/bin/bitbake-layers", line 83, in main tinfoil.prepare(True) ... File "/home/alimon/repos/poky/bitbake/lib/bb/tinfoil.py", line 268, in run_command raise TinfoilCommandFailed(result[1]) bb.tinfoil.TinfoilCommandFailed: Traceback (most recent call last): File "/home/alimon/repos/poky/bitbake/lib/bb/command.py", line 81, in runCommand result = command_method(self, commandline) ... File "/home/alimon/repos/poky/bitbake/lib/bb/cooker.py", line 1314, in handleCollections raise CollectionError("Errors during parsing layer configuration") bb.cooker.CollectionError: Errors during parsing layer configuration Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* tinfoil: ensure PATH includes bitbake's bin directoryPaul Eggleton2017-02-191-0/+13
| | | | | | | | | | | | | | | The runqueue expects to be able to run 'bitbake-worker' from PATH, but for example in the OE extensible SDK, tinfoil is used within devtool where this isn't the case (we're not exposing bitbake to the user, thus bitbake's bin directory isn't in PATH). This fixes devtool modify usage within the extensible SDK which has apparently been broken since the tinfoil2 changes went in. Fixes [YOCTO #11034]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* fetch2: Add NFS Stale file exception handlingKhem Raj2017-02-191-0/+12
| | | | | | | | | | | | | | | | | | - In some cases the file descriptor is held by nfs client and none of os.path.* is catching that, it could mean that error is not doled out because client has cached the stat info. In this case we are out of luck. Needed to catch IOError, which would be causing the Stale error. - In download method, update_stamp is invoked md5sum validation which is found to be throwing Stale errors. - Added error handling to fix the stale errors. Signed-off-by: Balaji Punnuru <balaji_punnuru@cable.comcast.com> Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* fetch2: Rename "setup_revisons" to "setup_revisions"Robert P. J. Day2017-02-196-6/+6
| | | | | | | | For spelling's sake, rename Python routine "setup_revisons" to "setup_revisions." Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* fetch2: Correct two examples of typo "revsion."Robert P. J. Day2017-02-192-2/+2
| | | | | Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cooker: detect malformed BBMASK expressions which begin with a separatorAndre McCurdy2017-02-191-0/+5
| | | | | | | | When constructing an older style single regex, it's possible for BBMASK to end up beginning with '|', which matches and masks _everything_. Signed-off-by: Andre McCurdy <armccurdy@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cooker: Rewrite dependency dot file generationRichard Purdie2017-02-192-62/+49
| | | | | | | | | | | | | | | | | | | | | | The package-depends.dot and pn-depends.dot files are inaccurate, missing out key dependencies such those made via the [depends] flags. As such they can be misleading to the user. They mainly exist for historical reasons, coming from a time before we had task based execution. This commit removes the two dated file formats and replaces them with a recipe-depends.dot which is a flattened version of task-depends.dot. The old format files are removed if present so that the user can't get confused about why data might not match between files. The code is also rewritten to use 'with f: f.write()' syntax as is more commonly used now. Also update the docs to match the change. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* doc: Replace depexp UI with taskexp and cleanup UI listsRichard Purdie2017-02-192-2/+2
| | | | | | | The depexp UI has been replaced with taskexp, also remove old references to goggle and hob. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* ui: Replace depexp with taskexpRichard Purdie2017-02-131-25/+9
| | | | | | | | | | | | The data displayed by the depexp UI is buggy, bitbake can't convey accurate runtime dependency information. Convert the UI to become taskexp ("Task Explorer") which provides a graphical way of exploring the task-depends.dot file. This data is accurate and being able to visualise the data is an often requested feature as standard dot file viewers can't usualy cope. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cooker.py: run sanity checks for multiconfigJuro Bystricky2017-02-131-1/+2
| | | | | | | | | | Also run sanity check for all additional multiconfig configurations as listed in BBMULTICONFIG, not just the "default" configuration. [YOCTO#10810] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: toaster: add wic.bmap support to toasterSujith H2017-02-131-1/+1
| | | | | | | Add wic.bmap file extension support for toaster Signed-off-by: Sujith H <sujith.h@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* toaster: remove cut and paste cruftbrian avery2017-02-131-12/+2
| | | | | | | | | | | There was a superfluous section in toaster start/stop script that was setting the TOASTER_DIR and had a set of comments around that setting. This was done in two places and only the last one was effective. This patch removes the spurious section to make it clearer what was happening and what TOASTER_DIR was actually getting set to. Signed-off-by: brian avery <brian.avery@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* toaster: move sqlite database to TOASTER_DIRbrian avery2017-02-131-2/+1
| | | | | | | | | | | | | The toaster.sqlite database was located in TOASTER_DIR/build. This meant that if you named your build directory something else (like cow), Toaster would fail to make/find the database. TOASTER_DIR is on the whitelist unlike BUILDDIR and we need to be able to write there anyway given our current layout so this should not disrupt anything. [YOCTO #9992] Signed-off-by: brian avery <brian.avery@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* toaster: remove cut and paste cruftbrian avery2017-02-131-1/+4
| | | | | | | | | | | There was a superfluous section in toaster start/stop script that was setting the TOASTER_DIR and had a set of comments around that setting. This was done in two places and only the last one was effective. This patch removes the spurious section to make it clearer what was happening and what TOASTER_DIR was actually getting set to. Signed-off-by: brian avery <brian.avery@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib: Drop now unneeded update_data callsRichard Purdie2017-02-135-25/+1
| | | | | | | | Now that the datastore works dynamically we don't need the update_data calls so we can just remove them. They're not actually done anything at all for a while. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: Update version to 1.33.1Richard Purdie2017-02-072-2/+2
| | | | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* fetch2/npm: fix handling of os fieldPaul Eggleton2017-02-071-1/+6
| | | | | | | | | | | | | | | When I originally added this check I didn't quite understand how the values in this field should be expressed - it seems from reading the documentation if there is an entry starting with '!' then the list is a blacklist and we shouldn't expect "linux" to be in the list, or we'll end up skipping important dependencies. This fixes fetching the "statsd" npm package. Fixes [YOCTO #10760]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* fetch2/npm: handle items only in optionalDependenciesPaul Eggleton2017-02-071-0/+1
| | | | | | | | | | | | | | An npm package.json file has two dependency fields: dependencies and optionalDependencies. An item in optionalDependencies *may* also be listed in dependencies, but this is not required (and not necessary since if it's in optionalDependencies it will be optional, adding it to dependencies won't do anything). The code here was assuming that an optional dependency would always be in both, that's probably because that was true of the examples I was looking at at the time. To fix it, just add the optional ones to the list we're iterating over. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/bb/build: add tasksbetween() functionPaul Eggleton2017-02-071-0/+27
| | | | | | | | | | | | | Add a utility function that gives the list of dependent tasks between two specified tasks (just within the same recipe). This is intended to be able to be executed from recipe context so it uses the datastore rather than having access to the runqueue. This will be used in OpenEmbedded-Core's populate_sdk_ext.bbclass to get the list of tasks between do_image_complete and do_build. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake: Bump version to 1.33.0 (develoment version)Richard Purdie2017-01-272-2/+2
| | | | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* build.py: avoid exception when function is not definedPatrick Ohly2017-01-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | exc_func() fails with a hard to debug exception when the function does not exist, for example due to a typo: ERROR: ...: Traceback (most recent call last): File "/work/bitbake/lib/bb/build.py", line 644, in exec_task return _exec_task(fn, task, d, quieterr) File "/work/bitbake/lib/bb/build.py", line 584, in _exec_task exec_func(func, localdata) File "/work/bitbake/lib/bb/build.py", line 198, in exec_func cleandirs = flags.get('cleandirs') AttributeError: 'NoneType' object has no attribute 'get' There is code further down which will print a warning, but we don't reach that unless we allow None as result of of d.getVarFlags() first. The warning is further down intentionally and has to stay there, to ensure that 'cleandirs' gets executed also for empty functions. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake-user-manual: Fixed small typo in "Events" sectionScott Rifenbark2017-01-231-1/+1
| | | | | | | | There was a stra quote character after the word database and I removed it. Signed-off-by: Scott Rifenbark <srifenbark@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake-user-manual: Updated Event descriptionsScott Rifenbark2017-01-231-61/+127
| | | | | | | | | | Fixes [YOCTO #10886] Added text descriptions for many of the events in the list of the "Events" section. Signed-off-by: Scott Rifenbark <srifenbark@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/bb/main.py: Shutdown cooker when server isn't foregroundAníbal Limón2017-01-231-0/+1
| | | | | | | | | | | | | | | | | | | | | The cooker is added to the BBServer and then detached creating a copy of the cooker in the process, if the server isn't in foreground it cause fd leaks on inotify this can be see using many instances of tinfoil. Example: from bb.tinfoil import Tinfoil while True: with Tinfoil() as tinfoil: input("Pre\n") tinfoil.prepare(config_only=True) input("Post\n") [YOCTO #10873] Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bb/server/process.py: ProcessEventQueue add close of _writer pipeAníbal Limón2017-01-231-1/+3
| | | | | | | | | | Call explicity close in _writer to avoid fd leakage because isn't called on Queue.close() [YOCTO #10873] Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake-layers: show-appends: add optional argument to limit package listMatthew McClintock2017-01-231-4/+10
| | | | | | | | | | | | | | | Add ability to limit output per package: $ bitbake-layers show-appends m4 === Matched appended recipes === m4_1.4.17.bb: /home/mattsm/git/openembedded-core/meta-selftest/recipes-test/m4/m4_1.4.17.bbappend Useful for writing tools to process the output, and debugging bbappends for specific packages Signed-off-by: Matthew McClintock <msm-oss@mcclintock.net> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* data_smart: Fix unneeded variable manipulationRichard Purdie2017-01-201-7/+8
| | | | | | | | | | | | | | | If was pointed out that if we have: XXX = " A" XXX_remove_inactive-override = "YY" then XXX can become "A" and the leading space can be removed. This is because the remove override code changes the variable value even when there is no removals active. In the process it dirties the cache. We don't really need to do this so tweak the code accordingly. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* runqueue.py: revised completion schedulerPatrick Ohly2017-01-191-24/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The idea is that tasks which complete building a recipe (like do_package_qa) are more important than tasks which start building new recipes (do_fetch) or those which increase disk usage (do_compile). Therefore tasks get ordered like this (most important first, do_rm_work before do_build because the enhanced rm_work.bbclass was used): 1. ID /work/poky/meta/recipes-support/popt/popt_1.16.bb:do_build 2. ID /work/poky/meta/recipes-core/readline/readline_6.3.bb:do_build 3. ID /work/poky/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb:do_build ... 464. ID /work/poky/meta/recipes-sato/images/core-image-sato.bb:do_build 465. ID /work/poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb:do_rm_work 466. ID /work/poky/meta/recipes-devtools/python/python3_3.5.2.bb:do_rm_work 467. ID /work/poky/meta/recipes-core/packagegroups/packagegroup-base.bb:do_rm_work ... 3620. ID virtual:native:/work/poky/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb:do_install 3621. ID /work/poky/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb:do_install 3622. ID /work/poky/meta/recipes-core/zlib/zlib_1.2.8.bb:do_compile_ptest_base 3623. ID /work/poky/meta/recipes-extended/bzip2/bzip2_1.0.6.bb:do_compile_ptest_base ... 3645. ID /work/poky/meta/recipes-support/libevent/libevent_2.0.22.bb:do_compile_ptest_base 3646. ID /work/poky/meta/recipes-core/busybox/busybox_1.24.1.bb:do_compile_ptest_base 3647. ID /work/poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb:do_uboot_mkimage 3648. ID /work/poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb:do_sizecheck 3649. ID /work/poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb:do_strip 3650. ID /work/poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb:do_compile_kernelmodules 3651. ID /work/poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb:do_shared_workdir 3652. ID /work/poky/meta/recipes-kernel/linux/linux-yocto_4.8.bb:do_kernel_link_images 3653. ID /work/poky/meta/recipes-devtools/quilt/quilt-native_0.64.bb:do_compile 3654. ID /work/poky/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb:do_compile ... The order of the same task between different recipes is the same as with the speed scheduler, i.e. more important recipes come first. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* build.py: add preceedtask() APIPatrick Ohly2017-01-191-0/+16
| | | | | | | | | | | | | | | | | The API is required by the revised rm_work.bbclass implementation, which needs to know all tasks that do_build depends so that it can properly inject itself between do_build and those tasks. The new API primarily hides the internal implementation of the "after" and "before" dependency tracking. Because tasks defined as precondition via "recrdeptask" may or may not be relevant (they are for rm_work.bclass), the API also includes support for that. There's no default value for including recrdeptasks, so developers have to think about what they need. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* fetch2: Avoid recursive errorsRichard Purdie2017-01-191-0/+9
| | | | | | | | If PATH contains WORKDIR which contains PV which contains SRCPV we can end up in circular recursion within the fetcher. This code change allows for the recursion to be broken by giving PV a temporary dummy value in a data store copy. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cooker: Add BB_LIMITEDDEPS supportRichard Purdie2017-01-193-0/+4
| | | | | | | | | When we're running with bitbake -b, BB_TASKDEPDATA is incorrect and limited. We really need a way to know this from the metadata and this new variable provides this in worker context. This means existing code can stop having to guess. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* event/ast: Add RecipeTaskPreProcess event before task finalisationRichard Purdie2017-01-192-0/+12
| | | | | | | | | There are various pieces of code which need to run after the tasks are finalised but before bitbake locks in on the task dependencies. This adds such an event so dependency changes in anonymous python can be accounted for and acted upon by these specific event handlers. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* runqueue: Fix traceback when using -bRichard Purdie2017-01-191-0/+2
| | | | | | | Without this, bitbake -b of image recipes cause tracebacks since the list of providers is empty. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cooker: Only add universe targets where the task existsRichard Purdie2017-01-191-0/+9
| | | | | | | | | | | Currently "bitbake universe -c fetch" will error if every task in the system doesn't have a fetch task. This seems unreasonable so filter the list based upon whether the task exists. This implementation does assume if a task exits for a given provider name, it can run, even if the preferred provider that ends up getting built might be the namespace without the task. This is unlikely to be a real world issue at this point. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cooker.py: new multiconfig '*' syntax supportJuro Bystricky2017-01-171-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently you cannot build a target for all the configured multiconfigs without specifying a list. The list can be quite long, requiring to type several lines of text. This enhancement is to support globbing so that you can do this, e.g. instead of: $ bitbake multiconfig:A:bash multiconfig:B:bash bash you can do: $ bitbake multiconfig:*:bash There are real world use cases where it is desirable to use multiconfig with two different tasks. For example: SDKs with multiple toolchains but also containing set of additional host tools, or multiconfig builds requiring one image for the main CPU(s) and a different co-image for a companion CPU. For this reason, two variations of the new syntax are supported. For example, the following: $ bitbake multiconfig:*:meta-toolhchain would expand to: $ bitbake multiconfig:A:meta-toolchain multiconfig:B:meta-toolchain meta-toolchain However the following: $ bitbake multiconfig:*:meta-toolhchain hosttools would expand to: $ bitbake multiconfig:A:meta-toolchain multiconfig:B:meta-toolchain hosttools In other words, if the user specified the "default" task explicitly, it replaces the implicit "default" task. [YOCTO#10680] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* toaster: bin/toaster whitelist TOASTER_DIRbrian avery2017-01-171-0/+1
| | | | | | | | | | | | | Some of the tinfoil2 changes resulted in TOASTER_DIR being cleared by the memory resident bitbake server toaster starts up. This prevented toaster from being able to connect to its sqlite database. Adding TOASTER_DIR to the BB_ENV_EXTRAWHITE list stops the cooker from clearing out the TOASTER_DIR variable. [YOCTO #9252] Signed-off-by: brian avery <brian.avery@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gitsm.py: Add force flag to git checkout command in update_submodulesOla Redell2017-01-121-1/+1
| | | | | | | | | | When the gitsm fetcher is used with a repo that includes a .gitattributes file that makes git modify files on cloning (e.g. line break characters), the subsequent checkout performed in the update_submodules function fails. This is fixed by adding the force flag (-f) to the checkout command. Signed-off-by: Ola Redell <ola.redell@retotech.se> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* use multiple processes to dump signatures.Jianxun Zhang2017-01-122-7/+29
| | | | | | | | | | | | | | | | | | | This change significantly shortens the time on reparsing stage of '-S' option. Each file is reparsed and then dumped within a dedicated process. The maximum number of the running processes is not greater than the value of BB_NUMBER_PARSE_THREADS if it is set. The dump_sigs() in class SignatureGeneratorBasic is _replaced_ by a new dump_sigfn() interface, so calls from the outside and subclasses are dispatched to the implementation in the base class of SignatureGeneratorBasic. Fixes [YOCTO #10352] Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* event: Replace slightly elderly bbmake references!Richard Purdie2017-01-061-3/+3
| | | | | | | bbmake hasn't existed for a while (a decade+) so we should probably remove the references. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* prserv/persist_data/utils: Drop obsolete python2 importsRichard Purdie2017-01-063-28/+7
| | | | | | | These imports were from python 2.6 and earlier, 2.4 in some cases. Drop them since we're all python3 now. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bb/cooker: BBCooker stops notifier at shutdownAníbal Limón2017-01-061-0/+2
| | | | | | | | | | | At end of BBCooker needs to release fd's associated with pyinotify watchers to avoid: Too many open files (EMFILE) error in different scenarios like several instances of tinfoil. [YOCTO #10873] Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* prserv/serv: Tweak stdout manipulation to be stream safeRichard Purdie2017-01-051-4/+17
| | | | | | | | | | | | | | | | | | | We've been seeing oe-selftest failures under puzzling circumstances. It turns out if you run oe-selftest on a machine with xmlrunner installed and have the recent tinfoil2 changes, the launching of PR server crashes leading to selftest hanging if using an autoloaded PR server. The reason is that xmlrunner uses an io.StringIO object as stdout/stderr instead of the usual io.TextIOWrapper and StringIO lacks a fileno() method. We have to deal with both cases and in the python way, we try and then seek forgivness if we see an AttributeError or UnSupportedOperation exception. Unfortunately we have to deal with both cases as we may be performing a traditiional double fork() from the commandline, or a larger python program. [YOCTO #10866] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cookerdata: Convert multiconfig to use BB_CURRENT_MCRichard Purdie2016-12-211-2/+3
| | | | | | | | | | | | | | | People are struggling with multiconfig as the point the conf file is injected into the data store is not what people expect. We can't really use a post config since that is too late and we can't really use a pre config file since that is too early. In OE terms, we need something right around the local.conf point so it behaves in a similar way. A way to handle this is to set the new variable BB_CURRENT_MC to be the currently selected multiconfig, then the metadata itself can choose when to inject the approriate configuration. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* runqueue: Only start fakeroot workers when neededRichard Purdie2016-12-211-8/+7
| | | | | | | | | | | Fakeroot workers usually have dependencies that need to be ready before they can be started. Starting them as a block therefore doesn't work as the dependencies may or may not have been built. Therefore start the multiconfig fakeworkers individually upon demand. [YOCTO #10344] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* runqueue: Ensure setscene tasks with overlapping stamps don't parallel executeRichard Purdie2016-12-211-1/+5
| | | | | | | | | | | In multiconfig, mutliple tasks can execute which share the same stamp file. These must not execute in parallel, the idea is the first should execute, the subsequent ones should see a valid stamp and get skipped. The normal task execution code has stamps code to handle this, this adds similar code to the setscene execute() function to handle the issue there too. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* runqueue: Fix setscene issues with multiconfigRichard Purdie2016-12-211-20/+20
| | | | | | | | | | | | | | setscene was being entirelu skipped for multiconfig variants as the tasks were simply not being spotted. If the default config was also being built it masked the problem. When this was fixed by using taskfn instead of fn in lookups against dataCache, several other instances of this problem were highlighted. This goes through and corrects the setscene code to correclty use taskfn instead of fn in the appropriate places meaning setscene tasks for multiconfig now work correctly. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* siggen: Fix clean_basepath to work with multiconfigRichard Purdie2016-12-211-0/+5
| | | | | | | | Tasknames can now start with "multiconfig:" which broke the virtual: comparison code and lead to unpredictable checksums with nativesdk recipes. This adds in handling for the new additional prefix which unbreaks nativesdk builds when using multiconfig. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* build/uihelper: Show better information about multiconfig tasks on UIRichard Purdie2016-12-212-1/+5
| | | | | | | | Currently the UI shows X is building, possibly multiple times but doesn't say which of the multilibs that might be. This adds a prefix to the task name so the mulitconfig being built can be identified. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* runqueue: Ensure pseudo executes from the correct place (use the right ↵Richard Purdie2016-12-211-2/+3
| | | | | | | | | | | | datastore with multiconfig) The location of the fakeroot command and the various environmental values need to be taken from the right multiconfig datastore, not the shared one. This patch ensures the right one is used for cases like a split TMPDIR. [YOCTO #10344] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>