aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/providers.py
AgeCommit message (Collapse)Author
2017-02-13lib: Drop now unneeded update_data callsRichard Purdie
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>
2016-11-30bitbake: remove True option to getVar callsJoshua Lock
getVar() now defaults to expanding by default, thus remove the True option from getVar() calls with a regex search and replace. Search made with the following regex: getVar ?\(( ?[^,()]*), True\) Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-09-21cooker/providers: Only add target to world build if task existsRichard Purdie
A "bitbake world -c unpack" currently breaks as not all tasks have an unpack task. This change allows addition of world targets only if the specified task exists which makes certain commands possible when otherwise you just get errors which can't easily be avoided. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-06-01bitbake: Convert to python 3Richard Purdie
Various misc changes to convert bitbake to python3 which don't warrant separation into separate commits. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-04-14providers: Add PREFERRED_RPROVIDER supportRichard Purdie
Sometimes you can end up in a situation where you need to specify that a specific runtime entity should be provided by a specific entry. An example of this is bluez where you could end up in a situation where for example: NOTE: multiple providers are available for runtime libasound-module-bluez (bluez4, bluez5) NOTE: consider defining a PREFERRED_PROVIDER entry to match libasound-module-bluez NOTE: multiple providers are available for runtime bluez-hcidump (bluez-hcidump, bluez5) NOTE: consider defining a PREFERRED_PROVIDER entry to match bluez-hcidump The only option here is to set something like PREFERRED_PROVIDER_bluez4 = "bluez4" which is clearly not very informative. I've actually held off adding RPROVIDER support for a long while as this does have sigificant potential for misuse. It doesn't for example allow multiple runtime providers of the same name to coexist, that simply isn't supported. It therefore doesn't replace some of the name mappings such as busybox verses coreutils that OE-Core faces as that is a different problem with different constraints. This mechanism is simply to provide bitbake with a hint to decide what the dependency tree should look like. Also, this allows us to stop printing a confusing message telling the user to set PREFERRED_PROVIDER when the setting needed would be rather ambiguous. [YOCTO #5044] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-04-14providers: We don't depend on previous build resultsRichard Purdie
Back in history the code did depend on previous build results. This was bad for determinism and we no longer do that. Update comments to match the current behaviour. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-02-28providers: Fix PREFERRED_VERSION lookup for '_' in PNRichard Purdie
PN can contain '_', e.g. gcc-cross-x86_64 and an override cannot hence we do this manually rather than use OVERRIDES. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-01-22taskdata: add the ability to access world targets listPaul Eggleton
In certain circumstances it can be useful to get access to the world targets list from a recipe in order to add dependencies on some or all of the items in it. If a special function, 'calculate_extra_depends' is defined in the recipe, and the recipe is to be built, then call it at the right point before we calculate which tasks should be run. The function can append items to the "deps" list in order to add dependencies. This is not as tidy a solution as I would have liked, but it does at least do the job. As part of this change, the buildWorldTargets function was moved to bb.providers to make it possible to call from taskdata. Part of the implementation of [YOCTO #8600]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-03-09providers/runqueue/taskdata: Optimise logger.debug callsRichard Purdie
A run of "bitbake bash -c unpack" when the task has already been completed resulted in about 9000 calls to logger.debug(). With this patch which comments out some noisy/less usefull logging and moves other logging calls outside loops, this number is reduced to 1000 calls. This results in cleaner logs and gives a small but measurable 0.15s speedup. The log size dropped from 900kb to 160kb. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-09-09providers.py: enhance the runtime debug degbug messgaeRobert Yang
The runtime provider debug message is the same as the build time debug message, make them different would be better. [YOCTO #5067] Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-07-29providers.py: print a debug message for dynamic pacakgeRobert Yang
We can't know the dynamic pacakge's name exactly, there might be a problem, for example, when we use: IMAGE_INSTALL_append += "ncurses-lib12344" The ncurses-lib12344 matches ncurses' dynamic packages pattern: PACKAGES_DYNAMIC = "^${PN}-lib.*" so there is no errors before the rootfs creation though there is no ncurses-lib12344. We can warn this, but I think that we'd better not since there are many dynamic packages, or there would be too many warnings, for example, the perl and kernel modules, maybe we can print a debug message for it. [YOCTO #4798] Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-05-09providers: Remove pointless lambda sort functionRichard Purdie
This lambda function is equivalent to the default sort used by sorted, so we can simply remove this. The syntax isn't compatible with python 3. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-03providers.py: Fix PREFERRED_VERSION containing epochsRichard Purdie
For some reason the code calls int() on the epoch component of any PREFERRED_VERSION. Since this is compared against strings, the comparison would always fail. This removes the stray cast and allows epochs in preferred_version to work correctly. [YOCTO #3187] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-11bitbake: Abort build if runtime dependency conflictWenzong Fan
Currently if there are multiple preferred providers available for a runtime dependency, bitbake will print an Error message and let the build go on. Anyways the build should abort while any Errors occured. [YOCTO #2734] Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-03bitbake: Convert getVar/getVarFlag(xxx, 1) -> (xxx, True)Richard Purdie
Using "1" with getVar is bad coding style and "True" is preferred. This patch is a sed over bitbake directory of the form: sed \ -e 's:\(\.getVar([^,()]*, \)1 *):\1True):g' \ -e 's:\(\.getVarFlag([^,()]*, [^,()]*, \)1 *):\1True):g' \ -i `grep -ril getVar *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-02-01bitbake-layers: improve show-overlayed outputPaul Eggleton
Make the following improvements to the show-overlayed subcommand: * Show recipes that are overlayed when the version is higher or lower, not just when it is the same. This gives a much better picture of the influence each layer is having over the metadata used for building. This can be disabled with the -s option if you just want to see recipes with the same version as before. * Default to showing name (PN), layer and version rather than the full path and filename. The old style formatting can be used by specifying the -f option. * Mark skipped recipes as such in the output, and print them in the correct sorted place in the list rather than at the end * Prefix/suffix title line with === so it can be filtered out easily in shell scripts if desired Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-01-10bitbake: Add BBHandledException exception classRichard Purdie
We have a problem knowing when to show the user debug information and when not to since the code has already shown the user suitable information about why a failure is occurring. This patch adds a bb.BBHandledException exception class which can be used to identify those exceptions which don't need further explanation to the user. This patch uses this class for the bb.providers exceptions and ensures the command handling code correctly filters the exceptions meaning that "bitbake invalid" now shows an simple error message and not a python traceback. [YOCTO #1141 partial] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-27Update users of getVar/setVar to use the data store functions directlyRichard Purdie
(From Poky rev: affd0907253387cee0ba0c7e9f92bcc109895446) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-15lib/bb/providers: make "checking PREFERRED_PROVIDER_%s" a debug messageDenys Dmytriyenko
In verbose mode there are hundreds of these "checking PREFERRED_PROVIDER_%s" messages, cluttering the output and obscuring the more important resulting "selecting %s to satisfy runtime %s due to %s" messages. Individual "checking" lines are more suited for debug mode, similar to "sorted providers for %s are: %s", hence convert logger.verbose() to logger.debug(). Signed-off-by: Denys Dmytriyenko <denys@ti.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-07-27bitbake/providers: list PREFERRED_VERSION candidates when unavailablePaul Eggleton
If the specified PREFERRED_VERSION is not available then list the available versions in the output. (PR is omitted.) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-31providers.py: Correct PREFERRED_VERSION handlingRichard Purdie
Overrides on the right are the highest priority and in this case, pn-PN and PN should take priority over any other override so fix the code to do this. Also, since overrides will have been processed by bitbake, we shouldn't then be specifically looking up PREFERRED_VERSION_${PN} but just using PREFERRED_VERSION. This patch corrects the behaviours to match what the code is expected to do. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-21bitbake/providers.py: Fix runtime providers problemsRichard Purdie
Take a real world testcase where you have two recipes, each of which contains PACKAGES_DYNAMIC = "gdk-pixbuf-loaders-*" and recipes which RDEPEND on some gdk-pixbuf-loaders-xxx package. To select between these you need to set a PREFERRED_PROVIDER. These are specified in the PN namespace so the locgical conclusion is that setting PREFERRED_PROVIDER_gdk-pixbuf = "gtk+" should work. It doesn't and instead checks crazy things. The code was correctly finding the two possible providers, gtk+ and gdk-pixbuf. It was however only accepting PREFERRED_PROVIDER_gtk+ = "gdk-pixbuf" to resolve this problem which reads as the exact opposite to what was wanted. This patch changes the code to do something that makes sense. I suspect that before these changes it was pretty much a null operation rubber stamping the single provider case. For Poky at least it exposes a few cases where -nativesdk recipes were providing the same things as their normal counterparts but these are genuine bugs in the metadata. I've also attempted to make the multiple provider error message human readable as I counldn't understand it and I doubt anyone else could either. (From Poky rev: d4f537965b3a530ca7ed3bce206abbff810031e8) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2010-09-03Switch bitbake internals to use logging directly rather than bb.msgChris Larson
We use a custom Logger subclass for our loggers This logger provides: - 'debug' method which accepts a debug level - 'plain' method which bypasses log formatting - 'verbose' method which is more detail than info, but less than debug Signed-off-by: Chris Larson <chris_larson@mentor.com>
2010-04-09Formatting cleanupsChris Larson
Signed-off-by: Chris Larson <chris_larson@mentor.com>
2010-02-25Avoid unnecessary calls to keys() when iterating over dictionaries.Chris Larson
dict objects provide an __iter__ method for the iteration which gives you the keys, so calling keys directly is unnecessary, and isn't really a best practice. The only time you really need to call the keys is if there's a danger of the dict changing out from underneith you, either due to external forces or due to modification of the iterable in the loop. Iterations over os.environ are apparently subject to such changes, so they must continue to use keys(). As an aside, also switches a couple spots to using sorted() rather than creating a temporary list with keys() and sorting that. Signed-off-by: Chris Larson <clarson@mvista.com>
2010-02-16Revert "providers.py: sort eligible providers by DEFAULT_PREFERENCE"Richard Purdie
This breaks preferred providers functionality This reverts commit ee9afccf33b220a21b74fab279925eeb4771249b.
2010-02-10providers.py: sort eligible providers by DEFAULT_PREFERENCEBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-02-10providers.py: commentary typo fixBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-01-19providers: Apply modified version of a patch from Martin Jansa ↵Richard Purdie
<martin.jansa@gmail.com> to allow wildcards at the end of PREFERRED_VERSION strings Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-11-06providers.py: Fix package sorting order to reflect prioritiesChris Conroy
I found that the code that sorts packages does not respect the priority order. By iterating over sortpkg_pn.keys() instead of pkg_pn.keys(), it produces the expected order based on the priorities I have set. Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
2009-07-23providers.py: Add caching for the dynamic package regexps (from Poky)Richard Purdie
Add caching for the dyanmic package regexps which improves task data performance significantly. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
2009-05-12providers.py: Fix + character escaping from PACKAGES_DYNAMIC (thanks Otavio ↵Richard Purdie
Salvador)
2009-05-11[bb] Remove unused imports reported by pyflakesHolger Hans Peter Freyther
2008-12-06providers.py: Fix typos and add some further debug which can occassionaly be ↵Richard Purdie
useful for debugging problems
2008-09-30providers.py: Fix PACKAGES_DYNAMIC handling of packages with '++' in the ↵Richard Purdie
name (from poky)
2008-07-19providers.py: Fix indentation errorsRichard Purdie
2008-07-19providers.py: When a regexp fails to compile for PACKAGES_DYNAMIC, print a ↵Richard Purdie
more useful error (#4444)
2008-05-09providers.py: No longer weight providers on the basis of a package being ↵Richard Purdie
"already staged". This leads to builds being non-deterministic.
2008-05-04providers.py: Improve runtime PREFERRED_PROVIDERS warning messages to be ↵Richard Purdie
more user friendly
2007-10-21providers.py: Fix bogus preferred_version return valuesRichard Purdie
2007-08-24providers.py: Fix regressionsRichard Purdie
2007-08-23providers.py: Sort providers by default preference as well as priority ↵Richard Purdie
before processing
2007-08-23ptoviders.py: Remove debuggingRichard Purdie
2007-08-23providers.py: Adjust logic so providers with a PREFERRED_VERSION set take ↵Richard Purdie
priority over providers without a PREFERRED_VERSION available
2007-08-15providers.py: Sort the list of providers before processing so dependency ↵Richard Purdie
problems are reproducible rather than effectively random
2007-08-14providers.py: Move providers code into the providers moduleRichard Purdie
2007-08-11providers.py: Add pn-PN to overrides when evalutating PREFERRED_VERSION ↵Richard Purdie
(from poky)
2007-03-24Fix PE handling to use strings and update showVersions to add PE support ↵Richard Purdie
(closes #2027)
2007-03-19Add PE (Package Epoch) support from Philipp Zabel (pH5)Richard Purdie
2007-03-04providers.py: Remove now unused parameter from filterProvidersRichard Purdie