aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb
AgeCommit message (Collapse)Author
2015-06-19bitbake: Add explict getVar param for (non) expansionRichard Purdie
Rather than just use d.getVar(X), use the more explict d.getVar(X, False) since at some point in the future, having the default of expansion would be nice. This is the first step towards that. This patch was mostly made using the command: sed -e 's:\(getVar([^,()]*\)\s*):\1, False):g' -i `grep -ril getVar *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-06-09bitbake: Bump version to 1.27.1Richard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-06-09cooker/event: Add an event which lists all stamps reachable after parsingRichard Purdie
The metadata can potentially use such an event to clean up any "unreachable" data, solving several problems we currently have where obsolete data may continue to exist in the shared areas. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-06-05parse/BBHandler: Avoid repeatedly resetting FILERichard Purdie
If we're not going to change the value of FILE, or we know it isn't going to have changed (ext == bbclass), don't set FILE. This avoids messy looking history of the variable as well as optimises parsing speed slightly. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-29toaster logger: assign projects to all buildsAlexandru DAMIAN
Bitbake logger now sets a default project if the TOASTER_BRBE or TOASTER_PROJECT Bitbake variables are not set. This a necessary step in getting all builds under a project, as to unify the MANAGED and interactive modes. Other small fixes are included, related to the size of the fields in the database. Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
2015-05-29toaster logger: refactor recipe and layer file pathsAlexandru DAMIAN
This refactoring brings the "local_path" of the layer from the Layer object to the Layer_Version object, which is more appropriate as different checkouts of the same Layer may live in different directories. This enables us to store Recipe file paths relative to a Layer_Version at all times, aleviating the need to store full file paths in the database. We also turn the prefix of the path (e.g. virtual:native path name space) into a pathflag field. In turn, this solves the problem of mis-identification of tasks based on the recipe file paths, since we can also match the namespace of the file paths on the recipe files. [YOCTO #7594] Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
2015-05-29data: Make expandKeys deterministicRichard Purdie
At least in theory, the order the keys are expanded in can make a difference, particularly if there is key overlap. We also want to ensure that any underlying base key is processed before any overridden version of that variable (FOO before FOO_x) which helps the update_data removal code I've been testing. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-29ConfHandler: Fix bogus dependency problemsRichard Purdie
Adding a dependency when errors occur accessing a file when calling handle() is not the correct thing to do. THe handle() code calls resolve_file() which can raise an exception without ever touching "fn" itself, it has also already marked all the dependencies correctly. This leads to bogus files being resolved to the local cwd and hence triggers reparses for no good reason. The solution is to simply remove the bogus dependency. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-29BBHandler: Drop cwd from search pathRichard Purdie
Whilst bitbake has done this for a long time, the behaviour of resolving class files against cwd is not desirable. This can be seen during base configuration parsing when looking for base.bbclass where a dependency on cwd is added. If cwd then changes, the cache is invalid and triggers a re-parse. The only real option is to drop this entry and if files can't be found, we fix BBPATH in the cases where it needs fixing. I didn't find any in the random selection of layers I tested parsing locally. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-29cooker/utils: Improve parsing profilingRichard Purdie
Currently the cooker parsing processes each dump an individual profile which is ok, but means absolute numbers of function calls for a given load can be tricky to determine as parsing of recipes may go to different pool threads on different runs. This change collects up the individual thread parsing results and processes them into one profile output. The profile processing function in utils needed tweaks to allow this to work. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-29tests/data: Add key expansion unit testRichard Purdie
This ensures basic key expansion works and that overlapping keys generate a log message. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-29tests/data: Add log parsing test codeRichard Purdie
This allows us to write tests which ensure a particular action generates a particular log message. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-26data: Revert expandKeys warning moveRichard Purdie
This was incorrect, it *must* be done next to the rename as a previous may overlap with the current one and we need to detect this case. I'll add a test case to better catch this problem in future. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-26data: Clean up expandKeys None value handlingRichard Purdie
This comparison is interesting even in the case of empty vales. Enabling this warning actually found a bug in the metadata in avahi. Make the code handle None specifically and also remove the dead code path in the second if statement. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-25data: Move warning code to the first loop for performanceRichard Purdie
By doing this we can take advantage of the expansion cache before starting write operations on the data store. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-25siggen: Don't crash if number of task dependencies changeRichard Purdie
If the number of task dependencies change you currently get a traceback when using diffsigs. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-25cache: Clean up getVar usage to modern syntax/styleRichard Purdie
No functional change. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-24fetch/hg: Disable checksums for archived downloadsAsh Charles
Like the Git fetcher, the Mercurial fetcher shouldn't expect recipes to provide a checksum. As described [1], recipes using a mercurial fetcher that don't provide a checksum will fail in a the repository has previously been downloaded and archived. Credit to Rafaël Carré for figuring out the bug. [1] https://www.mail-archive.com/openembedded-devel@lists.openembedded.org/msg41328.html Signed-off-by: Ash Charles <ashcharles@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-23fetch2/git.py: Add gitpkgv_revision alternative version informationMike Looijmans
gitpkgv_revision returns a sortable revision number that can be used in the PKGV variable for example. To mimic meta-openembedded gitpkgv behaviour to provide a sortable revision numner, one could set the following: PKGV = "1.0+${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" This would yield a package version like "1.0+69+fb5eb80". Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-23fetch2/__init__.py: Make get_srcrev output configurableMike Looijmans
The idea here is to support package version numbering similar to gitpkgv in meta-openembedded. This commit is the first step towards such functionality. The original plan was to add a "get_pretty_srcrev" method to the fetcher, as per Richard's suggestion [1]. While writing this, I noticed that it would become a copy of get_srcrev with only two lines changed. So to create something more Pythonic than a boolean argument and conditionals around the calls to the fetcher's sortable_revision, I just made the method to be called on the fetcher an argument to the method. Defaulting to 'sortable_revision' prevents affecting existing code. Now if the git fetcher were to implement, say 'gitpkgv_revision' one could set the following in a recipe: PKGV="1.2+${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" and this would yield the same result as gitpkgv's GITPKGV variable. See for the discussion leading to this change: [1] http://lists.openembedded.org/pipermail/openembedded-core/2015-January/100345.html Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-19fetch/git: Fix uri in git checkstatusMarcin Smoczyński
Pass proper repository url without arguments after a semicolon. Executing checkuri on a rule with git repository in SRC_URI does not report errors when working offline because wrong repository url is passed to the ls-remote command. For example "bitbake -c checkuri glibc" command executes: "git -c core.fsyncobjectfiles=0 ls-remote git://sourceware.org/git/glibc.git;branch=release/2.21/master" command in a shell subprocess to determine if url is valid. Shell subprocess executes in fact 2 commands: "git -c core.fsyncobjectfiles=0 ls-remote git://sourceware.org/git/glibc.git" and "branch=release/2.21/master" First one returns 127 or 128 depending on error but second one returns 0 because it is just env variable setup. Therefore we're not catching connection error. [YOCTO #7558] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-19fetch2/hg.py: add clean functionRobert Yang
Fixed when bitbake vim -ccleanall: File: '/path/to/bitbake/lib/bb/fetch2/__init__.py', lineno: 1462, function: clean 1458: def clean(self, urldata, d): 1459: """ 1460: Clean any existing full or partial download 1461: """ *** 1462: bb.utils.remove(urldata.localpath) 1463: 1464: def try_premirror(self, urldata, d): 1465: """ 1466: Should premirrors be used? File: '/path/to/bitbake/lib/bb/utils.py', lineno: 633, function: remove 0629: subprocess.call(['rm', '-rf'] + glob.glob(path)) 0630: return 0631: for name in glob.glob(path): 0632: try: *** 0633: os.unlink(name) 0634: except OSError as exc: 0635: if exc.errno != errno.ENOENT: 0636: raise Exception: OSError: [Errno 21] Is a directory: '/path/to/downloads/hg/vim.googlecode.com/hg/vim' Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-19lib/bb/utils: fix and extend edit_metadata_file()Paul Eggleton
Fix several bugs and add some useful enhancements to make this into a more generic metadata editing function: * Support modifying function values (name must be specified ending with "()") * Support dropping values by returning None as the new value * Split out edit_metadata() function to provide same functionality on a list/iterable * Pass operation to callback and allow function to return them * Pass current output lines to callback so they can be modified * Fix handling of single-quoted values * Handle :=, =+, .=, and =. operators * Support arbitrary indent string * Support indenting by length of assignment (by specifying -1) * Fix typo in variablename - intentspc -> indentspc * Expand function docstring to cover arguments / usage * Add a parameter to enable matching names with overrides applied * Add some bitbake-selftest tests Note that this does change the expected signature of the callback function. The only known caller is in lib/bb/utils.py itself; I doubt anyone else has made extensive use of this function yet. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-19lib/bb/utils: fix several bugs in edit_metadata_file()Paul Eggleton
* Fix unchanged assignments being dropped if other lines changed * Fix not passing variable name from single-line assignments to the function * Fix not trimming the trailing quote from values Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-19lib/bb/utils: add function to get layer containing a filePaul Eggleton
In certain contexts it can be useful to find the layer that a file (e.g. a recipe) appears in. Implements [YOCTO #7723]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-16tests/parse: Add file missing from previous commitRichard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-15tests/fetch: Add mirror of mirror testsRichard Purdie
Add some tests of mirrors or mirrors to the fetcher unittests. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-15fetch2: Improve mirror building function error handlingRichard Purdie
First, when building mirror urls we don't do any fetching so we should never be calling clean functions. Currently, if a mirror url fails, we don't process it further to see if there are any mirrors of the mirror. We should do this even when the mirror url fails, else we may miss out on valid/useful mappings, particularly in the case of file:// urls. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-15fetch2: Allow GIT_SMART_HTTP to be passed throughLiam R. Howlett
Allow GIT_SMART_HTTP to be passed through to the fetch command so that servers that cannot use GIT_SMART_HTTP can be used by the fetcher. Signed-off-by: Liam R. Howlett <Liam.Howlett@WindRiver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-14bitbake: fetch2/git: Add URL when latest_revision generates an exception.Mariano Lopez
The URL is not sent when _latest_revision generates and exception. When performing the sanity checks it is not possible to know the URI that failed. This add the URL when latest_revision generates an exception. [YOCTO: #7592] Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-14BBHandler: Error for incomplete function definitionsRichard Purdie
Add some sanity checks on the parsing state engine when returning data so that incomplete functions raise parse errors. This means a recipe doing: do_somefunction { echo 1 VAR = "1" will now raise a ParseError. To get the right file/line information, __infunc__ was changed to a list. [YOCTO #7633] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-14tests/fetch: ensure fetch tests preserve current dirPaul Eggleton
The fetcher calls os.chdir() in a number of places, which can affect other tests (since the directory it changes into gets deleted) - let's just put the current directory back to where it was when we're done. (This fixes bb.tests.Path.test_unsafe_delete_path failing if it was run as part of a full bitbake-selftest run, where the fetcher tests get to run before it.) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-14fetch2/git: ensure the unpacked origin remote points upstreamPaul Eggleton
If you're interested in using the checked out repository for development (e.g. in OE with devtool) then you ideally want the origin remote to point to the repository it was fetched from, so just set that after cloning. (As part of this I did a minor refactor so we have one function to generate the repository URL, which was already in two places.) Fixes [YOCTO #7756]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-14runqueue: Handle cases where siginfo is now a parameter to the hashvadlidate ↵Richard Purdie
function In some cases we need to check specifically for siginfo files, in some cases we need to check for the actual sstate objects themselves. Therefore make this a parameter to the function. A fallback to the previous function style is maintained for now. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-12fetch2: Add BB_ALLOWED_NETWORKS supportLiam R. Howlett
BB_ALLOWED_NETWORKS is a list of hosts that the fetcher will be allowed to use when BB_NO_NETWORK is not set. If BB_NO_NETWORK is set, then networking is still disabled. If BB_ALLOWED_NETWORKS is not set, the behaviour remains the same as today. If BB_NO_NETWORK is NOT set, and BB_ALLOWED_NETWORKS is configured, then only the hosts in the list are usable by the fetcher. eg: BB_ALLOWED_NETWORKS="yoctoproject.org git.gnu.org" The fetcher will be able to download from yoctoproject.org, git.gnu.org, but not ftp.gnu.org or any other hostname that is not in the list. There is also limited support for wildcards on the beginning of the hosts, so BB_ALLOWED_NETWORKS="*.gnu.org" with match git.gnu.org and ftp.gnu.org as well as foo.git.gnu.org Signed-off-by: Liam R. Howlett <Liam.Howlett@WindRiver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-12fetch/hg: support submodulesDaniel McGregor
Use hg clone and hg pull to copy the source into the build directory rather than taring up the cloned repository and untarring in the destination. This allows submodules to be cloned. While here, make the default behaviour keep the hg scm data to match the behaviour of the git fetcher. Signed-off-by: Daniel McGregor <daniel.mcgregor@vecima.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-12fetch2: Allow git to use a different CA Bundle with private keysJason Wessel
Setting BB_ENV_EXTRAWHITE to include GIT_SSL_CAINFO is enough to get "git ls-remote" to work for recipe parsing but it is not enough to get the fetcher to clone properly. This is because the fetcher has its own idea about what variables should be exported in the environment for some operations. It is desirable to use alternate CA Bundles for internal testing prior to using public keys for https, so we should allow the GIT_SSL_CAINFO to pass through. Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-05-01toasterui: close build on BuildCompleted eventAlexandru DAMIAN
Moving the code to close the build and instantiate a fresh buildinfohelper object to BuildCompleted event, as the CommandCompleted/Failed/Exit events come in too early. Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
2015-05-01toasterui: proper exit code on toaster errorsAlexandru DAMIAN
This patch modifies the toasterui to properly return the exit code based on the errors found in the toaster itself. The upload event file API call will not delete event logs for which toasterui showed an error. This will facilitate debugging. Minor enhancement in the buildinfohelper to reduce the number of lookups on unknown layer objects (prevented testing of the patch). Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
2015-04-28bitbake: reset build mtime cache before the buildEd Bartosh
Introduced build mtime cache structure. Reset it before the build to prevent bitbake from crashing when build/tmp/stamps hierarchy is removed. [YOCTO: #7562] Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-04-28bitbake: Check if bitbake versions matchEd Bartosh
Bitbake program and core versions must match. Moved __version__ from main.py back to bin/bitbake. Implemented check for version match in bin/bitbake. Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> tbs Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-04-28bitbake: Handle BBMainExceptionEd Bartosh
Some error messages were lost because BBMainException was inherited from bb.BBHandledException. When bb.BBHandledException is processed error messages are not printed as they suppose to be printed before raising this exception. Stopped to inherit BBMainException from bb.BBHandledException. Handled BBMainException in bin/bitbake and printed error message to the stderr. Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-04-19lib/bb/utils: add safeguard against recursively deleting things we shouldn'tPaul Eggleton
Add some very basic safeguard against recursively deleting paths such as / and /home in the event of bugs or user mistakes. Addresses [YOCTO #7620]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-04-19cookerdata: Allow ~ in bblayersEd Bartosh
Implemented processing of ~ in bblayer's paths if HOME environment variable is approved. Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-04-17fetch/git: Remove a possible trailing '/' in subpathAnders Darander
If the subpath parameter to the git fetcher ends with a trailing '/', bb.utils.prunedir() will be called on '/'... Fixes [YOCTO #7620]. Signed-off-by: Anders Darander <anders@chargestorm.se> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-04-06runqueue: pass finalized metadata to scenequeue callbacksChristopher Larson
This ensures that _append, _prepend, overrides, etc are functional when used on sstate variables (e.g. SSTATE_DIR). [YOCTO #7564] Signed-off-by: Christopher Larson <kergoth@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-03-31cooker: Ensure bbappend files are processed in a determistic orderRichard Purdie
self.appendlist is a dict and as such unordered. This can lead to cases where appends with different names (e.g. x_%.bbappend vs. x_123.bbappend) can be reordered in application which in turn reorders the variables that those bbappend files might touch. Reorderd variables changes the sstate cache signatures causing real world issues. To avoid this, use a list for the append files instead. This patch is conservative and just adds a new data structure alongside the existing one and uses it to resolve the core issue. Later patches (post release) can handle some of the wider but less problematic ones (e.g. issues in bitbake-layers flatten). [YOCTO #7511] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-03-25Update to version 1.27.0 post 1.26 releaseRichard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-03-25Update to version 1.26.0Richard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-03-24toasterui: enable sanity checkerAlexandru DAMIAN
Since toasterui acts as the user-facing UI, we need to run sanity checks in order to let the GUI display proper warnings and stop the build if something is wrong. Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>