[OE-core] [PATCH][jethro] perl-ptest.inc: fix tar call to prevent objcopy failure

Enrico Jorns ejo at pengutronix.de
Wed Jun 29 08:54:12 UTC 2016


Hi,

I recived some request to send this patch for backporting to 
jethro/krogoth. It is required for building Yocto with tar >= 1.29.

It is already in oe-core master, id 
2e498879098f7d84610aed7961d92433083d9a02.

Best regards, Enrico


--->8---->8---->8-----


With tar version 1.29, the tar call used to copy the ptest files will
not work anymore. While the call did not match the man page (but worked)
before, anyway, the latest update of tar seems to have a more strict 
argument
handling.

With the current version of the tar call, the copying of files still
works with latest tar version, but the excludes will not be handled
properly anymore.
This results in having binaries compiled with host GCC in the package.
When doing the strip_and_split files in do_package() with the target
objcopy, bitbake will fail with this error:

   ERROR: objcopy failed with exit code 256 (cmd was [...])
   [...]
   File format not recognized

Thus, the current argument issues and required changes are:

  * Options must be placed _before_ the pathnames.

  * --exclude must be followd by a '=' in order to work properly

  * 'f' options is for providing an archive file, which is unnecessary in
    this case

Note that this could also be a candidate for backporting.

Signed-off-by: Enrico Jorns <ejo at pengutronix.de>
---

  meta/recipes-devtools/perl/perl-ptest.inc | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-devtools/perl/perl-ptest.inc 
b/meta/recipes-devtools/perl/perl-ptest.inc
index 948ea7c..5f0989f 100644
--- a/meta/recipes-devtools/perl/perl-ptest.inc
+++ b/meta/recipes-devtools/perl/perl-ptest.inc
@@ -7,8 +7,8 @@ do_install_ptest () {
  	mkdir -p ${D}${PTEST_PATH}
  	sed -e "s:\/opt:\/usr:" -i Porting/add-package.pl
  	sed -e "s:\/local\/gnu\/:\/:" -i hints/cxux.sh
-	tar -cf - * --exclude \*.o --exclude libperl.so --exclude Makefile 
--exclude makefile --exclude hostperl \
-		--exclude miniperl --exclude generate_uudmap --exclude patches | ( cd 
${D}${PTEST_PATH} && tar -xf - )
+	tar -c --exclude=\*.o --exclude=libperl.so --exclude=Makefile 
--exclude=makefile --exclude=hostperl \
+		--exclude=miniperl --exclude=generate_uudmap --exclude=patches * | ( 
cd ${D}${PTEST_PATH} && tar -x )
   	sed -i -e "s,${D},,g" \
  	       -e "s,--sysroot=${STAGING_DIR_HOST},,g" \
-- 
2.8.1





More information about the Openembedded-core mailing list