[yocto] [meta-selinux][PATCH] conf/layer.conf: use BBFILES_DYNAMIC for dynamic layers

Yi Zhao yi.zhao at windriver.com
Tue Sep 10 18:22:11 PDT 2019


On 9/10/19 1:11 AM, Joe MacDonald wrote:
> Hi Yi,
>
> [[meta-selinux][PATCH] conf/layer.conf: use BBFILES_DYNAMIC for dynamic layers] On 19.09.09 (Mon 14:01) Yi Zhao wrote:
>
>> From: Robert Yang <liezhi.yang at windriver.com>
>>
>> The previous code add all BBFILE_COLLECTIONS/recipes*/*/*.bbappend to BBFILES,
>> which causes the parsing very slow when there are many layers, e.g., I have 87
>> layers:
>>
>> * Before:
>> $ rm -fr tmp-glibc/ cache; time bitbake -p
>> real    0m45.173s
>> user    0m0.560s
>> sys     0m0.060s
>>
>> * After:
>> $ rm -fr tmp-glibc/ cache; time bitbake -p
>> real    0m25.542s
>> user    0m0.572s
>> sys     0m0.040s
>>
>> It wasted 20s which wasn't worth (The host has 128 threads, it should cost more
>> time on less power host), use BBFILES_DYNAMIC can fix the problem.
>
> This seems like a big claim, I certainly haven't seen that on my setup:
>
> * Before:
> $ rm -fr tmp cache
> real    0m14.751s
> user    0m0.323s
> sys     0m0.048s
>
> * After:
> $ rm -fr tmp cache ; time bitbake -p
> real    0m14.725s
> user    0m0.326s
> sys     0m0.046s
>
> but it's still a sensible change.  When I ran a test before/after
> configuration for augeas the configuration seemed off, though.  Can you
> confirm that with this change as is you're getting the correct
> --with/--without and --enable/--disable and patches applied for your
> layers?  I just want to confirm since the ~20s difference in parsing
> seems kind of out of scale for moving essentially three bbappends around
> and I'm wondering if there's something else siginficant in your tree we
> want to consider.


This patch is from Robert Yang. CC to him. Maybe he can give us more 
explanation.

For the augeas, the current augeas_%.bbapend doesn't work because the 
augeas recipe is in meta-oe layer but not meta-python layer. This patch 
moves the bbappend to the correct layer to fix this issue.

It works on my local:

$ cat log.do_configure

[snip]
checking for library containing setfilecon... -lselinux
[snip]
checking for selinux/selinux.h... (cached) yes
checking selinux/context.h usability... yes
checking selinux/context.h presence... yes
checking for selinux/context.h... yes
[snip]


//Yi


>
> -J.
>
>> Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
>> Signed-off-by: Yi Zhao <yi.zhao at windriver.com>
>> ---
>>   conf/layer.conf                                               | 11 +++++++----
>>   .../recipes-daemons/iscsi-initiator-utils/files/initd.debian  |  0
>>   .../iscsi-initiator-utils/iscsi-initiator-utils_%.bbappend    |  0
>>   .../iscsi-initiator-utils/iscsi-initiator-utils_selinux.inc   |  0
>>   .../recipes-support}/augeas/augeas_%.bbappend                 |  0
>>   .../recipes-containers/lxc/lxc_%.bbappend                     |  0
>>   6 files changed, 7 insertions(+), 4 deletions(-)
>>   rename {networking-layer => dynamic-layers/networking-layer}/recipes-daemons/iscsi-initiator-utils/files/initd.debian (100%)
>>   rename {networking-layer => dynamic-layers/networking-layer}/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_%.bbappend (100%)
>>   rename {networking-layer => dynamic-layers/networking-layer}/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_selinux.inc (100%)
>>   rename {meta-python/recipes-extended/augeas => dynamic-layers/openembedded-layer/recipes-support}/augeas/augeas_%.bbappend (100%)
>>   rename {virtualization-layer => dynamic-layers/virtualization-layer}/recipes-containers/lxc/lxc_%.bbappend (100%)
>>
>> diff --git a/conf/layer.conf b/conf/layer.conf
>> index 9dd34b1..89b9468 100644
>> --- a/conf/layer.conf
>> +++ b/conf/layer.conf
>> @@ -5,10 +5,13 @@ BBPATH .= ":${LAYERDIR}"
>>   BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
>>               ${LAYERDIR}/recipes-*/*/*.bbappend"
>>   
>> -# Let us add layer-specific bbappends which are only applied when that
>> -# layer is included in our configuration
>> -BBFILES += "${@' '.join('${LAYERDIR}/%s/recipes*/*/*.bbappend' % layer \
>> -               for layer in BBFILE_COLLECTIONS.split())}"
>> +BBFILES_DYNAMIC += "openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bb \
>> +                    openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bbappend \
>> +                    networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/*/*/*.bb \
>> +                    networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/*/*/*.bbappend \
>> +                    virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes*/*/*.bb \
>> +                    virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes*/*/*.bbappend \
>> +                   "
>>   
>>   BBFILE_COLLECTIONS += "selinux"
>>   BBFILE_PATTERN_selinux = "^${LAYERDIR}/"
>> diff --git a/networking-layer/recipes-daemons/iscsi-initiator-utils/files/initd.debian b/dynamic-layers/networking-layer/recipes-daemons/iscsi-initiator-utils/files/initd.debian
>> similarity index 100%
>> rename from networking-layer/recipes-daemons/iscsi-initiator-utils/files/initd.debian
>> rename to dynamic-layers/networking-layer/recipes-daemons/iscsi-initiator-utils/files/initd.debian
>> diff --git a/networking-layer/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_%.bbappend b/dynamic-layers/networking-layer/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_%.bbappend
>> similarity index 100%
>> rename from networking-layer/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_%.bbappend
>> rename to dynamic-layers/networking-layer/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_%.bbappend
>> diff --git a/networking-layer/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_selinux.inc b/dynamic-layers/networking-layer/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_selinux.inc
>> similarity index 100%
>> rename from networking-layer/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_selinux.inc
>> rename to dynamic-layers/networking-layer/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_selinux.inc
>> diff --git a/meta-python/recipes-extended/augeas/augeas/augeas_%.bbappend b/dynamic-layers/openembedded-layer/recipes-support/augeas/augeas_%.bbappend
>> similarity index 100%
>> rename from meta-python/recipes-extended/augeas/augeas/augeas_%.bbappend
>> rename to dynamic-layers/openembedded-layer/recipes-support/augeas/augeas_%.bbappend
>> diff --git a/virtualization-layer/recipes-containers/lxc/lxc_%.bbappend b/dynamic-layers/virtualization-layer/recipes-containers/lxc/lxc_%.bbappend
>> similarity index 100%
>> rename from virtualization-layer/recipes-containers/lxc/lxc_%.bbappend
>> rename to dynamic-layers/virtualization-layer/recipes-containers/lxc/lxc_%.bbappend
>> -- 
>> 2.7.4
>>


More information about the yocto mailing list