On Mon, Apr 16, 2018 at 12:32 PM, Mark Hatle <mark.ha...@windriver.com> wrote: > The isELF function works by running: > > result = file <pathname> > if 'ELF' in result > > By default 'file' will prepend the result with the path name of the file > that is being checked. This usually works fine, such as: > > $ file /home/foo/openembedded-core/meta/classes/package.bbclass > /home/foo/openembedded-core/meta/classes/package.bbclass: Python script, > ASCII text executable, with very long lines > > However, if the path includes 'ELF', ELF will end up in the result, and then > the check will return positive. > > $ file /home/ELF/openembedded-core/meta/classes/package.bbclass > /home/ELF/openembedded-core/meta/classes/package.bbclass: Python script, > ASCII text executable, with very long lines > > This will then result in the isELF coming back true, and possibly causing the > checks that use isELF, such as the 'is it already stripped' check, to do the > incorrect thing. > > Adding the '-b' option to file will result in the path being omitted in the > result: > > $ file /home/ELF/openembedded-core/meta/classes/package.bbclass > Python script, ASCII text executable, with very long lines > > Signed-off-by: Mark Hatle <mark.ha...@windriver.com> > --- > meta/classes/package.bbclass | 2 +- > meta/classes/staging.bbclass | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass > index a03c05b9f7..0844fd5065 100644 > --- a/meta/classes/package.bbclass > +++ b/meta/classes/package.bbclass > @@ -898,7 +898,7 @@ python split_and_strip_files () { > # 16 - kernel module > def isELF(path): > type = 0 > - ret, result = oe.utils.getstatusoutput("file \"%s\"" % > path.replace("\"", "\\\"")) > + ret, result = oe.utils.getstatusoutput("file -b '%s'" % > path.replace("\"", "\\\""))
Sorry this feedback is a little late, but now the change has landed in rocko I noticed that the backports for this patch appear to be wrong. Either the path passed to file should be quoted using double quotes with any " chars in the path being escaped (ie the original code) or the path should be quoted using single quotes and then any " chars in the path should NOT be escaped (ie the version now in master - which also handles paths containing special characters such as $ etc). The best approach for rocko and pyro would probably be (err... have been) to cherry pick from master in the following order: http://git.openembedded.org/openembedded-core/commit/?id=7877761534b0c2492da6289e9f2269d41b6ed464 http://git.openembedded.org/openembedded-core/commit/?id=5a324e9b2cf6378f8eaa4e394f9cb36d4e2680ac http://git.openembedded.org/openembedded-core/commit/?id=ab056c7f6065f310be4dd256ceb45f85ff981f69 > > if ret: > msg = "split_and_strip_files: 'file %s' failed" % path > diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass > index 984051d6aa..bff04373dc 100644 > --- a/meta/classes/staging.bbclass > +++ b/meta/classes/staging.bbclass > @@ -84,7 +84,7 @@ python sysroot_strip () { > # 16 - kernel module > def isELF(path): > type = 0 > - ret, result = oe.utils.getstatusoutput("file \"%s\"" % > path.replace("\"", "\\\"")) > + ret, result = oe.utils.getstatusoutput("file -b \"%s\"" % > path.replace("\"", "\\\"")) > > if ret: > bb.error("split_and_strip_files: 'file %s' failed" % path) > -- > 2.16.0.rc2 > > -- > _______________________________________________ > 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