Re: [OE-core] [PATCH] perf: Correct the substitution of python shebangs
Thanks for your input. Since the old one doesn't make it to next branch and the thread hasn't had following replies, I'll send v2 as a summary. Zhe On 2/14/20 4:45 AM, Bruce Ashfield wrote: > On Thu, Feb 13, 2020 at 1:39 PM wrote: >> From: He Zhe >> >> To make the native python3 are always used, >> >> - Move the substitution of /usr/bin/python3 to first, otherwise the >> possible original /usr/bin/python3 would be changed to >> /usr/bin/env python33. >> - Add substitution for ${S}/scripts/ >> >> Signed-off-by: He Zhe >> --- >> meta/recipes-kernel/perf/perf.bb | 7 +++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/meta/recipes-kernel/perf/perf.bb >> b/meta/recipes-kernel/perf/perf.bb >> index 6d1b066..14a9090 100644 >> --- a/meta/recipes-kernel/perf/perf.bb >> +++ b/meta/recipes-kernel/perf/perf.bb >> @@ -240,10 +240,17 @@ do_configure_prepend () { >> >> # use /usr/bin/env instead of version specific python >> for s in `find ${S}/tools/perf/ -name '*.py'`; do >> +sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" > Rather than messing around with the order of these, we should just > combine them into a single sed invocation. When I started those > substitutions, there weren't so many. > > As was mentioned in the other perf patch and review: > > sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${s} > > or some variant of the regex should fix them all. > >> 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}" >> +done >> + >> +for s in `find ${S}/scripts/ -name '*.py'`; do > It would be better to not have two loops doing the same thing, why not > combine the two ? In the other review, the single script that was > causing the problem was specifically pointed out .. and while I also > agree that we can just substitute them all, technically, if we haven't > run them, we don't know they are py3 safe. > > But minimally, getting them into a single for loop is something we > should do (also part of that other patch/review). > > Bruce > >> sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" >> +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}" >> done >> >> # unistd.h can be out of sync between libc-headers and the captured >> version in the perf source >> -- >> 2.7.4 >> >> -- >> ___ >> Openembedded-core mailing list >> Openembedded-core@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 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH] perf: Correct the substitution of python shebangs
On Thu, Feb 13, 2020 at 1:39 PM wrote: > > From: He Zhe > > To make the native python3 are always used, > > - Move the substitution of /usr/bin/python3 to first, otherwise the > possible original /usr/bin/python3 would be changed to > /usr/bin/env python33. > - Add substitution for ${S}/scripts/ > > Signed-off-by: He Zhe > --- > meta/recipes-kernel/perf/perf.bb | 7 +++ > 1 file changed, 7 insertions(+) > > diff --git a/meta/recipes-kernel/perf/perf.bb > b/meta/recipes-kernel/perf/perf.bb > index 6d1b066..14a9090 100644 > --- a/meta/recipes-kernel/perf/perf.bb > +++ b/meta/recipes-kernel/perf/perf.bb > @@ -240,10 +240,17 @@ do_configure_prepend () { > > # use /usr/bin/env instead of version specific python > for s in `find ${S}/tools/perf/ -name '*.py'`; do > +sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" Rather than messing around with the order of these, we should just combine them into a single sed invocation. When I started those substitutions, there weren't so many. As was mentioned in the other perf patch and review: sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${s} or some variant of the regex should fix them all. > 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}" > +done > + > +for s in `find ${S}/scripts/ -name '*.py'`; do It would be better to not have two loops doing the same thing, why not combine the two ? In the other review, the single script that was causing the problem was specifically pointed out .. and while I also agree that we can just substitute them all, technically, if we haven't run them, we don't know they are py3 safe. But minimally, getting them into a single for loop is something we should do (also part of that other patch/review). Bruce > sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" > +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}" > done > > # unistd.h can be out of sync between libc-headers and the captured > version in the perf source > -- > 2.7.4 > > -- > ___ > Openembedded-core mailing list > Openembedded-core@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 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH] perf: Correct the substitution of python shebangs
On 2020-02-13 11:45 a.m., Bruce Ashfield wrote: On Thu, Feb 13, 2020 at 1:39 PM wrote: From: He Zhe To make the native python3 are always used, FWIW, a very similar patch was sent 10 days ago. Did you confirm that it isn't in master-next already ? It's not in master-next as far as I can tell. see: "[OE-core] [PATCH] perf: Additional fixes for 5.5+" Bruce - Move the substitution of /usr/bin/python3 to first, otherwise the possible original /usr/bin/python3 would be changed to /usr/bin/env python33. - Add substitution for ${S}/scripts/ Signed-off-by: He Zhe --- meta/recipes-kernel/perf/perf.bb | 7 +++ 1 file changed, 7 insertions(+) diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index 6d1b066..14a9090 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -240,10 +240,17 @@ do_configure_prepend () { # use /usr/bin/env instead of version specific python for s in `find ${S}/tools/perf/ -name '*.py'`; do +sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" 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}" +done + +for s in `find ${S}/scripts/ -name '*.py'`; do sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" +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}" done # unistd.h can be out of sync between libc-headers and the captured version in the perf source -- 2.7.4 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH] perf: Correct the substitution of python shebangs
On Thu, Feb 13, 2020 at 1:39 PM wrote: > > From: He Zhe > > To make the native python3 are always used, > FWIW, a very similar patch was sent 10 days ago. Did you confirm that it isn't in master-next already ? see: "[OE-core] [PATCH] perf: Additional fixes for 5.5+" Bruce > - Move the substitution of /usr/bin/python3 to first, otherwise the > possible original /usr/bin/python3 would be changed to > /usr/bin/env python33. > - Add substitution for ${S}/scripts/ > > Signed-off-by: He Zhe > --- > meta/recipes-kernel/perf/perf.bb | 7 +++ > 1 file changed, 7 insertions(+) > > diff --git a/meta/recipes-kernel/perf/perf.bb > b/meta/recipes-kernel/perf/perf.bb > index 6d1b066..14a9090 100644 > --- a/meta/recipes-kernel/perf/perf.bb > +++ b/meta/recipes-kernel/perf/perf.bb > @@ -240,10 +240,17 @@ do_configure_prepend () { > > # use /usr/bin/env instead of version specific python > for s in `find ${S}/tools/perf/ -name '*.py'`; do > +sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" > 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}" > +done > + > +for s in `find ${S}/scripts/ -name '*.py'`; do > sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" > +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}" > done > > # unistd.h can be out of sync between libc-headers and the captured > version in the perf source > -- > 2.7.4 > > -- > ___ > Openembedded-core mailing list > Openembedded-core@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 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH] perf: Correct the substitution of python shebangs
Thank you - works for me. I've been waiting for a fix! On 2020-02-13 10:38 a.m., zhe...@windriver.com wrote: From: He Zhe To make the native python3 are always used, - Move the substitution of /usr/bin/python3 to first, otherwise the possible original /usr/bin/python3 would be changed to /usr/bin/env python33. - Add substitution for ${S}/scripts/ Signed-off-by: He Zhe Tested-by: Scott Branden --- meta/recipes-kernel/perf/perf.bb | 7 +++ 1 file changed, 7 insertions(+) diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index 6d1b066..14a9090 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -240,10 +240,17 @@ do_configure_prepend () { # use /usr/bin/env instead of version specific python for s in `find ${S}/tools/perf/ -name '*.py'`; do +sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" 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}" +done + +for s in `find ${S}/scripts/ -name '*.py'`; do sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" +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}" done # unistd.h can be out of sync between libc-headers and the captured version in the perf source -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
[OE-core] [PATCH] perf: Correct the substitution of python shebangs
From: He Zhe To make the native python3 are always used, - Move the substitution of /usr/bin/python3 to first, otherwise the possible original /usr/bin/python3 would be changed to /usr/bin/env python33. - Add substitution for ${S}/scripts/ Signed-off-by: He Zhe --- meta/recipes-kernel/perf/perf.bb | 7 +++ 1 file changed, 7 insertions(+) diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index 6d1b066..14a9090 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -240,10 +240,17 @@ do_configure_prepend () { # use /usr/bin/env instead of version specific python for s in `find ${S}/tools/perf/ -name '*.py'`; do +sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" 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}" +done + +for s in `find ${S}/scripts/ -name '*.py'`; do sed -i 's,/usr/bin/python3,/usr/bin/env python3,' "${s}" +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}" done # unistd.h can be out of sync between libc-headers and the captured version in the perf source -- 2.7.4 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core