[OE-core] [PATCH 2/3] package.bbclass: use oe.path.realpath()

Enrico Scholz enrico.scholz at sigma-chemnitz.de
Tue Mar 12 10:25:07 UTC 2013


Richard Purdie <richard.purdie at linuxfoundation.org> writes:

>> Old implementation suffered from lot of problems; e.g.
>> 
>> * redundant code
>> 
>> * calls 'os.stat()' which references files on host; this can give wrong
>>   results about existing/non-existing and can cause EPERM (instead of
>>   the catched ENONENT) exceptions
>> 
>> * does not deal with special cases like '..' leaving the sysroot.
>
> Whilst these changes are good, they do come at a cost:
>
> post symlink package changes
> ./perfscript -c 8c22531e491e6b0cfffaaa80d6bc75db757fc1d1
> 49:38.46,17:12.15
>
> pre symlink package changes
> ./perfscript -c 1a80329b3fcf23ecc23e409a260b9b2182652f65
> 48:16.33,13:39.97
>
> So it added 1m20 to the overall build time, but more worryingly, added
> added nearly 3m30 to the time for:
>
> bitbake virtual/kernel -c cleansstate; bitbake virtual/kernel
>
> These tests are based on the script linked from
> https://wiki.yoctoproject.org/wiki/Performance_Test where the kernel
> test is this is the second number above list, overall build time is the
> first.
>
> Have you any time to look into this performance regression?

Well, patch replaced a call to os.path.realpath() with a more accurate
variant honoring a sysroot. There must be more work be done to replace
things previously solved by the operating system with custom (python)
code.

I will try to write a C implementation of oe.path.realpath() but this
can take some time and I do not have an idea how to integrate it into
oe.


Enrico




More information about the Openembedded-core mailing list