summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2016-01-27 23:30:30 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-01-29 18:14:56 +0000
commit21368b4a7934b3a199e61c1072416fd5c091e5ff (patch)
tree33028247781e98ab60cc776064cb474ac9128263
parent9b0dd8e1c365d54300c15fdc06dd031fd0366575 (diff)
downloadopenembedded-core-contrib-21368b4a7934b3a199e61c1072416fd5c091e5ff.tar.gz
openembedded-core-contrib-21368b4a7934b3a199e61c1072416fd5c091e5ff.tar.bz2
openembedded-core-contrib-21368b4a7934b3a199e61c1072416fd5c091e5ff.zip
sstate: Improve handling of useradd dependencies
useradd has sstate [depends] for both do_package and do_populate_sysroot yet the dependency validation code only covers do_package. Add coverage of populate_sysroot, else the order inversion that [depends] creates means unexpected installation of users of useradd.bbclass (e.g. avahi do_populate_sysroot) in cases where it shouldn't be (e.g. libnss-mdns -c packagedata). The code needs to move above the other populate_sysroot intercept code since there are specific cases we need to cover before that code. The result of this change is more optimal installation of sstate objects in common usage scenarios. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r--meta/classes/sstate.bbclass9
1 files changed, 5 insertions, 4 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 295e033802..ec72c5506d 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -876,6 +876,11 @@ def setscene_depvalid(task, taskdependees, notneeded, d):
if isNativeCross(taskdependees[dep][0]) and taskdependees[dep][1] in ['do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm', 'do_packagedata', 'do_package', 'do_package_qa']:
continue
+ # This is due to the [depends] in useradd.bbclass complicating matters
+ # The logic *is* reversed here due to the way hard setscene dependencies are injected
+ if (taskdependees[task][1] == 'do_package' or taskdependees[task][1] == 'do_populate_sysroot') and taskdependees[dep][0].endswith(('shadow-native', 'shadow-sysroot', 'base-passwd', 'pseudo-native')) and taskdependees[dep][1] == 'do_populate_sysroot':
+ continue
+
# Consider sysroot depending on sysroot tasks
if taskdependees[task][1] == 'do_populate_sysroot' and taskdependees[dep][1] == 'do_populate_sysroot':
# base-passwd/shadow-sysroot don't need their dependencies
@@ -902,10 +907,6 @@ def setscene_depvalid(task, taskdependees, notneeded, d):
if taskdependees[dep][1] == "do_populate_lic":
continue
- # This is due to the [depends] in useradd.bbclass complicating matters
- # The logic *is* reversed here due to the way hard setscene dependencies are injected
- if taskdependees[task][1] == 'do_package' and taskdependees[dep][0].endswith(('shadow-native', 'shadow-sysroot', 'base-passwd', 'pseudo-native')) and taskdependees[dep][1] == 'do_populate_sysroot':
- continue
# Safe fallthrough default
bb.debug(2, " Default setscene dependency fall through due to dependency: %s" % (str(taskdependees[dep])))