[OE-core] [pyro][PATCH] package.bbclass: Add '-b' option to file call in isELF

Andre McCurdy armccurdy at gmail.com
Thu May 3 23:24:50 UTC 2018


On Mon, Apr 16, 2018 at 12:32 PM, Mark Hatle <mark.hatle at 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.hatle at 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 at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list