Re: Merging problems

Richard Purdie
2014-12-19T12:42:03Z

On Fri, 2014-12-19 at 10:28 +0000, Richard Purdie wrote:
> I want to give people a headsup that we're having problems merging
> changes at the moment. We've been doing our best but the number of
> things building up which are causing issues is overwheling our ability
> to fix and stablise the build. It wasn't helped that I took a long
> weekend's vacation last weekend. There are changes being made or tested
> to the autobuilder which also isn't helping.
>
> The kernel series has several issues:
>
> * a random failure in do_kernel_configme [i]

I think I have a handle on this. If you look at the autobuilder failure
it says:

| [INFO] Configuring target/machine combo: "standard/qemuppc"
| [INFO] collecting configs in patches/meta-series

and what concerns me is "patches/meta-series". I my local builds it
says .meta/meta-series. Poking around kern-tools I see:

"""
# determine the meta directory name. The meta directory is at the top level
# of the repository, and is untracked.
meta_dir_options=`git ls-files -o --directory`
for m in $meta_dir_options; do
if [ -d "$m" ]; then
meta_dir=`echo $m | sed 's%/%%'`
fi
done

if [ -z "$meta_dir" ]; then
meta_dir=".meta"
fi
"""

which means that if a "patches" directory exists it will use it since
the command looks for untracked directories. I also noticed that some
places define the default as ".meta", some as "meta" and they look a bit
confused but that is probably a separate issue.

The question is then how does a "patches" directory end up in the kernel
source. I was able to create one with the commands:

MACHINE=qemuppc bitbake linux-yocto perf -c clean
MACHINE=qemuppc bitbake linux-yocto -c patch
MACHINE=qemuppc bitbake perf -c unpack
MACHINE=qemuppc bitbake linux-yocto -c kernel_configme

which doesn't fail like the autobuilder but does put the metadata into
the wrong place with the wrong data (into patches). I'm therefore
guessing this is a big horrible race.

Why does perf -c unpack create a patches directory? base.bbclass has:

do_unpack[cleandirs] = "${S}/patches"

The fix is therefore probably to not run the fetch/unpack/patch tasks in
kernelsrc.bbclass.

Cheers,

Richard