[bitbake-devel] [PATCH] Remove whitelisted vars from non-task deps

Matthew McClintock msm-fsl at mcclintock.net
Wed Apr 4 17:02:59 UTC 2012


On Tue, Apr 3, 2012 at 4:23 PM, Christopher Larson <kergoth at gmail.com> wrote:
> From: Christopher Larson <chris_larson at mentor.com>
>
> Though the value of variables in the BB_BASEHASH_WHITELIST is kept out of the
> checksums, dependency on them is not, at least for variables and non-task
> functions. In the code, the whitelist is removed from the overall task dep
> list, but not the individual variable deps. The result of this is that
> functions like sysroot_stage_all and oe_runmake end up with whitelisted
> variables like TERM listed in their dependencies, which means that doing
> a 'unset TERM' before building will result in all checksums for tasks that
> depend on those changing, and shared state reuse not behaving correctly.
>
> This is only really a potential issue for variables from the environment, as
> it's the existance/removal of the variable that's an issue, not its value, and
> the other whitelisted variables are set in our metadata. This which means in
> practical terms the only cases where this is likely to be an issue are in
> environments where one of the following are unset: TERM, LOGNAME, HOME, USER,
> PWD, SHELL. This may seem like an unlikely circumstance, but is in fact a real
> issue for those of us using autobuilders. Jenkins does not set TERM when
> executing shell, which means shared state archives produced by your jenkins
> server would not be fully reused by an actual user.
>
> Fixed by removing the whitelisted elements from the individual variable deps,
> not just the accumulated result.

Which recipes/packages were you seeing this on? I've noticed the TERM
issue on several packages but not on all of them.

-M

>
> Signed-off-by: Christopher Larson <chris_larson at mentor.com>
> ---
>  lib/bb/siggen.py |    9 +++++----
>  1 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
> index 8c79b17..7f5ae93 100644
> --- a/lib/bb/siggen.py
> +++ b/lib/bb/siggen.py
> @@ -89,6 +89,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
>                 bb.error("Task %s from %s seems to be empty?!" % (task, fn))
>                 data = ''
>
> +            gendeps[task] -= self.basewhitelist
>             newdeps = gendeps[task]
>             seen = set()
>             while newdeps:
> @@ -98,12 +99,12 @@ class SignatureGeneratorBasic(SignatureGenerator):
>                 for dep in nextdeps:
>                     if dep in self.basewhitelist:
>                         continue
> +                    gendeps[dep] -= self.basewhitelist
>                     newdeps |= gendeps[dep]
>                 newdeps -= seen
>
> -            alldeps = seen - self.basewhitelist
> -
> -            for dep in sorted(alldeps):
> +            alldeps = sorted(seen)
> +            for dep in alldeps:
>                 data = data + dep
>                 if dep in lookupcache:
>                     var = lookupcache[dep]
> @@ -113,7 +114,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
>                 if var:
>                     data = data + str(var)
>             self.basehash[fn + "." + task] = hashlib.md5(data).hexdigest()
> -            taskdeps[task] = sorted(alldeps)
> +            taskdeps[task] = alldeps
>
>         self.taskdeps[fn] = taskdeps
>         self.gendeps[fn] = gendeps
> --
> 1.7.7
>
>
> _______________________________________________
> bitbake-devel mailing list
> bitbake-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/bitbake-devel




More information about the bitbake-devel mailing list