summaryrefslogtreecommitdiff
path: root/meta/lib
Commit message (Collapse)AuthorAgeFilesLines
* sstatesig.py: Move package exclusion list to the layer configRichard Purdie2012-02-231-4/+6
| | | | | | | | | | | its desireable for other layers to be able to append to the list of packages with 'safe ABI's which are excluded from the sstate signatures. I can't emphasise enough how careful you need to be with this list, anything excluded here needs to be things which don't change interface and are consistent between different machines. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstatesig.py: Add handling for machine specific module dependenciesRichard Purdie2012-02-231-6/+20
| | | | | | | | | | | | | | | | Adding dependencies on machine specific recipes from generic packages causes a rebuild of the generic package per machine if using signatures for the stamp files which is unacceptable. We need to declare that RRECOMMENDS on kernel-module-* are safe and that we shouldn't care about these machine specific dependencies from a stamp perspective. This change adds code which does this. It depends on a change in bitbake to expose the dataCache object which can be used to make the calculations we need to allow this to work correctly. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/utils.py: use bb.utils.vercmp_stringAndreas Oberritter2012-02-231-1/+1
| | | | | | | | | | Fixes the following warning: | WARNING: .../meta/lib/oe/utils.py:31: DeprecationWarning: Call to deprecated function bb.vercmp_string: Please use bb.utils.vercmp_string instead. | result = bb.vercmp(d.getVar(variable,True), checkvalue) Signed-off-by: Andreas Oberritter <obi@opendreambox.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* buildhistory_analysis: correctly split RDEPENDS/RRECOMMENDSPaul Eggleton2012-02-211-2/+12
| | | | | | | Split RDEPENDS and RRECOMMENDS correctly (which may contain version number specifications after each item). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
* buildhistory_analysis: avoid noise due to reorderingPaul Eggleton2012-02-211-3/+14
| | | | | | | | | | Avoid noise in the output due to reordering of list variables (except for PACKAGES where we just report that the order changed). Recent changes to the buildhistory class itself will avoid this reordering from occurring but this allows us to examine the results before and after those changes. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
* lib/oe/sstatesig.py: Exclude common machine specific dependencies from task ↵Richard Purdie2012-01-251-0/+4
| | | | | | | | | | | | signatures Where we have machine specific recipes with well defined behaviour, it makes no sense to rebuild recipes with these as dependencies whenever the machine changes. This patch lists those well behaved recipes and excludes them from the task signatures so we can change MACHINE without invalidating existing PACKAGE_ARCH binaries. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe: Add sstatesig, OE specific signature generator classesRichard Purdie2012-01-231-0/+48
| | | | | | | | | | | | | This patch adds SignatureGenerator classes specific to OE. For now, these emulate the previous behaviour with the exception that dependencies on quilt-native are now ignored for checksum purposes. The intent is to allow easier experimentation and customisation of this code in future as a result of these changes. Note that these changes require pending bitbake patches. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* buildhistory_analysis: include related fields in outputPaul Eggleton2012-01-191-25/+64
| | | | | | | | | | | | | | | | | | | | | | | | | Sometimes, when a value changes in the buildhistory it is useful to know when a related (but not necessarily itself monitored) value changes as it can help explain the change. For example, when the list of installed packages for an image changes it could be caused by a change to one of the image-related variables. Related field changes are recorded as sub-items of each change. Currently the only way to visualise these is via the buildhistory-diff tool, so an example would be: Changes to images/qemux86/eglibc/core-image-minimal (installed-package-names.txt): locale-base-de-de was added procps was added * IMAGE_LINGUAS: added "de-de" * IMAGE_INSTALL: added "procps" Here we see that two additional packages have been added to the image, and looking at the related changes to the two variables IMAGE_INSTALL and IMAGE_LINGUAS we have the explanation as to why. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/patch: avoid backtrace when patch does not applyPaul Eggleton2012-01-191-5/+5
| | | | | | | | | | | | We don't need to see a Python stack backtrace when a patch does not apply, just the error output from patch, so trap these kinds of errors and ensure that we display the message and fail the task and nothing else. Fixes [YOCTO #1143] Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* buildhistory_analysis: improve field handling robustnessPaul Eggleton2012-01-191-10/+19
| | | | | | | | | | | | | | | Avoid errors when comparing changes for KEY = value files (package info files and image-info.txt): * Handle keys appearing and disappearing - this will help to handle PE in package info files (which is only written when it is not blank) and when we add additional fields in future. * Handle when old value is 0 for numeric field (avoid division by zero) * Report when numeric field was empty or missing rather than 0 (but still treat it as 0 for comparison purposes) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* buildhistory_analysis: correctly handle whitespace when splitting listsPaul Eggleton2012-01-191-2/+2
| | | | | | | | | | Don't specify any argument to the split() function when handling changes to list type variables (e.g. PACKAGES) so that the values are split by any whitespace and only split once for a block of multiple whitespace characters. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* buildhistory: record additional image infoPaul Eggleton2012-01-191-22/+29
| | | | | | | | | | | | | | | Record some additional information about images - the uncompressed size of the final image as well as the values of various variables that may have influenced its contents. This is recorded in a machine-readable "image-info.txt" file similar in structure to the package history files. Also add some code to analyse changes to these values. (Most of the variable values aren't monitored directly but will be used as contextual information when they change at the same time as the content of the image changing.) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oe.license: avoid the need to catch SyntaxErrorChristopher Larson2012-01-171-4/+19
| | | | Signed-off-by: Christopher Larson <chris_larson@mentor.com>
* oe.license: add is_included convenience functionChristopher Larson2012-01-172-0/+39
| | | | | | | | | | | | | | | | | | | Given a license string and whitelist and blacklist, determine if the license string matches the whitelist and does not match the blacklist. When encountering an OR, it prefers the side with the highest weight (more included licenses). It then checks the inclusion of the flattened list of licenses from there. Returns a tuple holding the boolean state and a list of the applicable licenses which were excluded (or None, if the state is True) Examples: is_included, excluded = oe.license.is_included(licensestr, ['GPL*', 'LGPL*']) is_included, excluded = oe.license.is_included(licensestr, blacklist=['Proprietary', 'CLOSED']) Signed-off-by: Christopher Larson <chris_larson@mentor.com>
* meta/PRService: Added export/import fuctions.Lianhao Lu2012-01-111-0/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [YOCTO #1556] - Modified meta/class/package.bbclass and prserv.bbclass according to the change in PR service by adding PACKAGE_ARCH into the query tuple. - Added prexport.bbclass, primport.bbclass to export/import AUTOPR values from/to PRService. - Move PR service related common code to lib/oe/prservice.py. - Supported reading the AUTOPR values from the exported .inc file instead of reading it from remote PR service. - Created a new script bitbake-prserv-tool to export/import the AUTOPR values from/to the PR service. Typical usage scenario of the export/import is: 1. bitbake-prserv-tool export <file> to export the AUTOPR values from the current PR service into an exported .inc file. 2. Others may use that exported .inc file(to be included in the local.conf) to lockdown and reproduce the same AUTOPR when generating package feeds. 3. Others may "bitbake-prserv-tool import <file>" to import the AUTOPR values into their own PR service and the AUTOPR values will be incremented from there. Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
* buildhistory: add script to check for significant changesPaul Eggleton2012-01-061-0/+240
| | | | | | | | | | | | | | | | Adds a buildhistory-diff script which can be used to analyse changes in the buildhistory git repository (as produced by buildhistory.bbclass), and report significant ones that may need manual checking to ensure they aren't regressions (e.g. package size changed by more than a certain percentage, files added/removed/changed in the image, etc.) The implementation is actually split into a small script and a Python module, in order to make the logic re-usable in a future web-based interface. Implements the first part of [YOCTO #1566]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
* multilib: Abstract class extension code into classextend.pyRichard Purdie2012-01-051-0/+81
| | | | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oe.license: add license flattening codeChristopher Larson2011-12-082-0/+60
| | | | | | | This flattens a license tree by selecting one side of each OR operation (chosen via the user supplied function). Signed-off-by: Christopher Larson <kergoth@gmail.com>
* license: split license parsing into oe.licenseChristopher Larson2011-12-082-0/+70
| | | | | | | | | In addition to moving this functionality to oe.license, makes the string preparation more picky before passing it off to the ast compilation. This ensures that LICENSE entries like 'GPL/BSD' are seen as invalid (due to the presence of the unsupported '/'). Signed-off-by: Christopher Larson <kergoth@gmail.com>
* oe.test_types: move into an oe.tests packageChristopher Larson2011-12-082-0/+0
| | | | Signed-off-by: Christopher Larson <kergoth@gmail.com>
* getVar/setVar cleanupsRichard Purdie2011-11-261-3/+3
| | | | | | | Complete the bb.data.getVar/setVar replacements with accesses directly to the data store object. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Convert to use direct access to the data store (instead of bb.data.*Var*())Richard Purdie2011-11-103-17/+17
| | | | | | | | | | | | | | | This is the result of running the following over the metadata: sed \ -e 's:bb.data.\(setVar([^,()]*,[^,()]*\), *\([^ )]*\) *):\2.\1):g' \ -e 's:bb.data.\(setVarFlag([^,()]*,[^,()]*,[^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -e 's:bb.data.\(getVar([^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \ -e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \ -e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^() ]*\) *):\2.\1):g' \ -e 's:bb.data.\(getVar([^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -i `grep -ril bb.data *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* patch: Convert to use oe_terminalRichard Purdie2011-11-041-11/+6
| | | | | | | | | Unfortunately we can't access oe_terminal directly from patch.py so we have to pass in the correct terminal function pointer. [YOCTO #1587] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/terminal: add support for XFCE's terminal emulatorJoshua Lock2011-11-011-0/+23
| | | | | | | | That's Terminal on Fedora and xfce4-terminal on Ubuntu/Debian... This could get interesting! Signed-off-by: Joshua Lock <josh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* data.py: fixed message domain errorsSamuel Stirtzel2011-10-141-1/+1
| | | | | | | | The dynamic message domain was introduced by Richard Purdie with the following patch: http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=a6c48298b17e6a5844b3638b422fe226e3b67b89 Signed-off-by: Samuel Stirtzel <s.stirtzel@googlemail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* patch.py: fixed message domain errorsSamuel Stirtzel2011-10-141-2/+2
| | | | | | | | The dynamic message domain was introduced by Richard Purdie with the following patch: http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=a6c48298b17e6a5844b3638b422fe226e3b67b89 Signed-off-by: Samuel Stirtzel <s.stirtzel@googlemail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* distrodata: fix distro_check codeSaul Wold2011-09-211-4/+4
| | | | | | This fixes a problem with package names from inherits showing up Signed-off-by: Saul Wold <sgw@linux.intel.com>
* lib/oe/terminal.py: declare konsole from KDE 4.x as unsupportedPaul Eggleton2011-09-181-0/+27
| | | | | | | | | Konsole 2.x (from KDE 4.x) does not work as devshell - it does not pass the environment or current working directory through among other issues, so do a version check and disable it if it is found (skipping to the next available terminal application.) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
* oe.terminal: improve how we spawn screenChris Larson2011-08-101-1/+6
| | | | | | | | | - Name the screen session 'devshell', to avoid confusion if running bitbake itself under a screen session. - Display a warning message when spawning screen, so it's clear to the user that screen has been run (otherwise do_devshell just appears to hang). Signed-off-by: Chris Larson <chris_larson@mentor.com>
* Rework how the devshell functionsChris Larson2011-08-101-0/+101
| | | | | | | | | | | | | | | | | | | | | | | | In the new implementation, each known terminal is defined as a class in oe.terminal, as a subclass of bb.process.Popen. terminal.bbclass wraps this functionality, providing the metadata pieces. It obeys the OE_TERMINAL variable, which is a 'choice' typed variable. This variable may be 'auto', 'none', or any of the names of the defined terminals. When using 'auto', or requesting an unsupported terminal, we attempt to spawn them in priority order until we get one that's available on this system (and in the case of the X terminals, has DISPLAY defined). The 'none' value is used when we're doing things like automated builds, and want to ensure that no terminal is *ever* spawned, under any circumstances. Current available terminals: gnome konsole xterm rxvt screen Signed-off-by: Chris Larson <chris_larson@mentor.com>
* lib/oe/util.py: Add MLPREFIX support to prune_suffix()Richard Purdie2011-07-271-1/+6
| | | | | | | prune_suffix() also needs be aware of MLPREFIX when changing PN for use in BPN. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/utils: 'Fix' oe.utils.contains() behaviourRichard Purdie2011-07-261-8/+7
| | | | | | | | | | | | | | | Currently oe.utils.contains(X, "A", true, false) will return true for substring matches, e.g. if X = "ABC". This is not what most users expect from the function. In the common OE use of this function there is the case of "touchscreen" and "screen" being used as independent variables. Whilst it could be argued there isn't a problem in that specific case (touchscreens are usually on screens), there is no substring usage of this function is OE-Core so this patch changes the behaviour to match only full strings. It also fixes a bug where duplicate entries would confuse multiple matches, e.g. contains(X, ["A", "B"], ...) would match X = "A A" which is clearly wrong. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oe.classutils: add moduleChris Larson2011-06-281-0/+43
| | | | | | | This adds a ClassRegistry utility metaclass, as maintaining a class registry is a fairly common thing to do. Signed-off-by: Chris Larson <chris_larson@mentor.com>
* packagedata.py: Fix read_subpkgdata_dict()Richard Purdie2011-06-231-0/+2
| | | | | | | | If both VAR and VAR_foo are in subd, we need to ensure VAR_foo gets returned. Currently the code would work randomly. The only current user is the rpm packaging backend. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* packagedata: don't choke on empty PACKAGESChris Larson2011-05-201-1/+2
| | | | Signed-off-by: Chris Larson <chris_larson@mentor.com>
* Move packagedata code into oe.packagedata (sync from OE)Chris Larson2011-05-201-0/+106
| | | | Signed-off-by: Chris Larson <chris_larson@mentor.com>
* oe.packagegroup: add code for package groups (sync from OE)Chris Larson2011-05-201-0/+29
| | | | | | | | | | | | | This includes some utility functions for dealing with groups of packages defined in the metadata. Metadata syntax: PACKAGE_GROUP_<group> = "<list of packages>" If the packages in the group are optional: PACKAGE_GROUP_<group>[optional] = "1" Signed-off-by: Chris Larson <chris_larson@mentor.com>
* oe.data: expand the flagsChris Larson2011-05-201-0/+5
| | | | Signed-off-by: Chris Larson <chris_larson@mentor.com>
* Implement variable typing (sync from OE)Chris Larson2011-05-204-0/+279
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implementation consists of two components: - Type creation python modules, whose job it is to construct objects of the defined type for a given variable in the metadata - typecheck.bbclass, which iterates over all configuration variables with a type defined and uses oe.types to check the validity of the values This gives us a few benefits: - Automatic sanity checking of all configuration variables with a defined type - Avoid duplicating the "how do I make use of the value of this variable" logic between its users. For variables like PATH, this is simply a split(), for boolean variables, the duplication can result in confusing, or even mismatched semantics (is this 0/1, empty/nonempty, what?) - Make it easier to create a configuration UI, as the type information could be used to provide a better interface than a text edit box (e.g checkbox for 'boolean', dropdown for 'choice') This functionality is entirely opt-in right now. To enable the configuration variable type checking, simply INHERIT += "typecheck". Example of a failing type check: BAZ = "foo" BAZ[type] = "boolean" $ bitbake -p FATAL: BAZ: Invalid boolean value 'foo' $ Examples of leveraging oe.types in a python snippet: PACKAGES[type] = "list" python () { import oe.data for pkg in oe.data.typed_value("PACKAGES", d): bb.note("package: %s" % pkg) } LIBTOOL_HAS_SYSROOT = "yes" LIBTOOL_HAS_SYSROOT[type] = "boolean" python () { import oe.data assert(oe.data.typed_value("LIBTOOL_HAS_SYSROOT", d) == True) } Signed-off-by: Chris Larson <chris_larson@mentor.com>
* Add a new task checklicense and fix some bugs in distro_check.pyMei Lei2011-05-171-9/+18
| | | | | | | | | | | distro_check.py: Create a new function called create_log_file to reduce a lot of repeat code in distrodata.bbclass. We needn't to create log file in function save_distro_check_result, because the log file has been generated in check_eventhandler. Another bug is that we maybe access the /tmp/Meego-1.0 before we create this file. Add a judge statement to decide whether we need to create this file firstly. distrodata.bbclass: Add a new task checklicense to collect missing text license information. This can help package-report system to know how many recipes are missing license text. Signed-off-by: Mei Lei <lei.mei@intel.com>
* lib/oe/process.py: import from OEMartin Jansa2011-05-161-0/+74
|
* oe/patch.py: Remove series file during Clean()Khem Raj2011-05-101-0/+1
| | | | | | | | | | | | | | | | | | | | | Currently if there is a failed do_patch the series files get appended so if there were two patches a.patch b.patch and b.patch failed during next run it would append a.patch again a.patch b.patch a.patch and this would keep growing. We can remove series file in Clean() because we populate it in Import() anyway Signed-off-by: Khem Raj <raj.khem@gmail.com> Acked-by: Chris Larson <chris_larson@mentor.com> Acked-by: Eric Bénard <eric@eukrea.com>
* distro_check.py: Fix some bugs in distro_check.pyMei Lei2011-05-041-6/+11
| | | | | | | | The recipe meta-ide-support's alias is Poky, but not defined in distro_exceptions, this will lead an error. The compare_in_distro_packages_list function omit a split process, this will lead to a form issue. Change the log file generate way, use symbolic links link to the latest log file, instead of appending every log file in old log. Signed-off-by: Mei Lei <lei.mei@intel.com>
* lib/oe/distro_check.py: Fixup Poky referencesRichard Purdie2011-04-211-2/+2
| | | | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/patch.py: Cosmetic change to avoid bitbake warningKhem Raj2011-03-211-1/+1
| | | | | | bb.mkdirhier should be bb.utils.mkdirhier Signed-off-by: Khem Raj <raj.khem@gmail.com>
* oe.utils: add inherits (sync from OE)Chris Larson2011-03-211-0/+4
| | | | Signed-off-by: Chris Larson <chris_larson@mentor.com>
* oe.path: sync up with current OEChris Larson2011-03-211-7/+14
| | | | Signed-off-by: Chris Larson <chris_larson@mentor.com>
* oe.patch: add missing importsChris Larson2011-03-211-0/+2
| | | | Signed-off-by: Chris Larson <chris_larson@mentor.com>
* oe.utils: add bb, bb.data importsChris Larson2011-03-211-0/+2
| | | | | | | While the metadata can and should rely on bb always being available, this needn't necessarily be the case for imported python modules. Signed-off-by: Chris Larson <chris_larson@mentor.com>
* qa.py: Fix a typo when evaluating bitsizeMark Hatle2011-03-031-2/+2
| | | | | | This should be setting a variable, not performing a comparison. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>