[OE-core] [PATCH v3] perf: Correct the substitution of python shebangs

Bruce Ashfield bruce.ashfield at gmail.com
Fri Feb 21 22:23:08 UTC 2020


On Fri, Feb 21, 2020 at 5:16 PM Khem Raj <raj.khem at gmail.com> wrote:
>
>
>
> On 2/21/20 1:43 PM, Joshua Watt wrote:
> > On Thu, Feb 13, 2020 at 9:58 PM <zhe.he at windriver.com> wrote:
> >>
> >> From: He Zhe <zhe.he at windriver.com>
> >>
> >> To make the native python3 is always used,
> >>
> >> - Use sed one-liner instead
> >> - Add substitution for ${S}/scripts/bpf_helpers_doc.py to fix the
> >>    following warning.
> >>
> >> File "/usr/lib/python3.6/sysconfig.py", line 421, in _init_posix
> >> _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
> >> ModuleNotFoundError: No module named '_sysconfigdata'
> >>
> >> This issue is first reported by Joel Stanley <joel at jms.id.au>
> >> The sed one-liner is credited to Anuj Mittal <anuj.mittal at intel.com>
> >>
> >> Signed-off-by: He Zhe <zhe.he at windriver.com>
> >> ---
> >>   meta/recipes-kernel/perf/perf.bb | 7 ++-----
> >>   1 file changed, 2 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
> >> index 6d1b06693d..a6fb51d3db 100644
> >> --- a/meta/recipes-kernel/perf/perf.bb
> >> +++ b/meta/recipes-kernel/perf/perf.bb
> >> @@ -239,11 +239,8 @@ do_configure_prepend () {
> >>       fi
> >>
> >>       # use /usr/bin/env instead of version specific python
> >> -    for s in `find ${S}/tools/perf/ -name '*.py'`; do
> >> -        sed -i 's,/usr/bin/python,/usr/bin/env python3,' "${s}"
> >> -        sed -i 's,/usr/bin/python2,/usr/bin/env python3,' "${s}"
> >> -        sed -i 's,/usr/bin/env python2,/usr/bin/env python3,' "${s}"
> >> -        sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}"
> >> +    for s in `find ${S}/tools/perf/ -name '*.py'` ${S}/scripts/bpf_helpers_doc.py; do
> >
> > Do we have to hard code bpf_helpers_doc.py? It doesn't exist in older
> > versions (e.g. 4.14) and causes do_configure to fail.
>
> Probably not, I also stumbled into this problem.

Yah,

We can either just do the entire directory (but during the review, we
were talking about the fact that since we aren't using them, we don't
actually know if they are py3 safe, so blindly converting the shebang
isnt' a great idea either).

But the solution we use in the devsrc recipe would work easily enough
here, just do $(find . -name ${S}/scripts/bpf_helpers_doc.py) and let
it return nothing for those older kernels.

Bruce

>
> >
> >> +        sed -i -e "s,#!.*python.*,#!${USRBINPATH}/env python3," ${s}
> >>       done
> >>
> >>       # unistd.h can be out of sync between libc-headers and the captured version in the perf source
> >> --
> >> 2.24.1
> >>
> >> --
> >> _______________________________________________
> >> Openembedded-core mailing list
> >> Openembedded-core at lists.openembedded.org
> >> http://lists.openembedded.org/mailman/listinfo/openembedded-core
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


More information about the Openembedded-core mailing list