command: add error to return of runCommand

Currently, command.py can return an error message from runCommand, due to
being unable to run the command, yet few of our UIs (just hob) can handle it
today. This can result in seeing a TypeError with traceback in certain rare
circumstances.

To resolve this, we need a clean way to get errors back from runCommand,
without having to isinstance() the return value. This implements such a thing
by making runCommand also return an error (or None if no error occurred).

As runCommand now has a method of returning errors, we can also alter the
getCmdLineAction bits such that the returned value is just the action, not an
additional message. If a sync command wants to return an error, it raises
CommandError(message), and the message will be passed to the caller
appropriately.

Example Usage:

    result, error = server.runCommand(...)
    if error:
        log.error('Unable to run command: %s' % error)
        return 1

Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
hob: hob was freezing because it doesn't receives well the log file

-after pressing "build image" button, hob was freezing because it didn't
receive well the log file

[YOCTO #3398]
Signed-off-by: Cristiana Voicu <cristiana.voicu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
fetch2/wget: Fix for mixed-up wget commands

wget commands for check and resume were
mixed-up, leading to the following issues:

1. long running "NOTE: Preparing runqueue"
reason: objects were downloaded, not spidered on the mirror
2. Failing network test in Build Appliance, because wget 1.14
(in use in BA) will fail if a file already exists.
During the network connectivity test, index.php file was
actually downloaded, not spidered (checked for existence on
yoctoproject.org website), leading to wget failure.

Signed-off-by: Cristian Iorga <cristian.iorga@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
build/siggen.py: Avoid removing too many stamps when cleaning

The "*" part of the mask is to ensure we clean both any stamp, and any
setscene varient. It turns out we would also trample other tasks,
e.g. do_package_write could trample do_package_write_rpm. do_package also
tramples do_package_write_* but this is less of an issue since the other
tasks depend on it.

Rather than use the wildcard, we can just use a list instead.

[YOCTO #3484]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
data_smart: Improve get_hash to account for overrides and key expansion

An issue was uncovered where changing:

IMAGE_INSTALL_append = "X"

to

IMAGE_INSTALL_append = "X Y"

in local.conf would not get noticed by bitbake. The issue is that
the configuration hash doesn't account for overrides or key expansion.

This patch improves get_hash to account for these. This means the hash
does account for changes like the above.

[YOCTO #3503]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
build.py: Preserve sigdata files in the stamps directory

Leaving the sigdata files around can aid debugging and doesn't harm
anything. This is the easiest way to allow this to happen.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
BBHandler: Ensure parser state engine is correctly reset for new parsing

The classes variable in particular could be in an odd state if parsing of a
previous recipe had abruptly ended.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>