[OE-core] Nasty tar breakage

Richard Purdie richard.purdie at linuxfoundation.org
Fri Oct 11 21:47:09 UTC 2013


On Fri, 2013-10-11 at 17:15 +0100, Jack Mitchell wrote:
> On 11/10/13 17:08, Richard Purdie wrote:
> > On Fri, 2013-10-11 at 16:21 +0100, Jack Mitchell wrote:
> >> I upgraded my host distribution today which pulled in tar 1.27 [1] and
> >> caused a nasty breakage. Downgrading to tar 1.26 fixed the problem, I
> >> would expect this is something we want to fix before 1.5 goes out the door?
> >>
> >> DEBUG: Executing python function sstate_task_prefunc
> >> DEBUG: Python function sstate_task_prefunc finished
> >> DEBUG: Executing python function do_populate_sysroot
> >> DEBUG: Executing shell function sysroot_stage_all
> >> tar: --same-order option cannot be used with -c
> >> Try 'tar --help' or 'tar --usage' for more information.
> >> tar: This does not look like a tar archive
> >> tar: Exiting with failure status due to previous errors
> >> WARNING:
> >> /home/jack/Work/oe-core.git/test-build/tmp-eglibc/work/x86_64-linux/quilt-native/0.60-r0/temp/run.sysroot_stage_all.21827:1
> >> exit 2 from
> >>   tar -xf - -C "$dest"
> >> DEBUG: Python function do_populate_sysroot finished
> >> ERROR: Function failed: sysroot_stage_all (log file is located at
> >> /home/jack/Work/oe-core.git/test-build/tmp-eglibc/work/x86_64-linux/quilt-native/0.60-r0/temp/log.do_populate_sysroot.21827)
> >>
> >> [1] https://lists.gnu.org/archive/html/info-gnu/2013-10/msg00004.html
> > Just to be clear, the command is:
> >
> > tar -cf - -C "$src" -ps . | tar -xf - -C "$dest"
> >
> > from staging.bbclass. The fix is probably just to drop the s from the
> > -ps.
> >
> > Cheers,
> >
> > Richard
> >
> 
> I'm afraid that doesn't work:
> 
> Exception: CalledProcessError: Command 'cd
> /home/jack/Work/oe-core.git/test-build/tmp-eglibc/work/x86_64-linux/quilt-native/0.60-r0/sysroot-destdir/home/jack/Work/oe-core.git/test-build/tmp-eglibc/sysroots/x86_64-linux;
> find . -type d -print | tar -cf - -C
> /home/jack/Work/oe-core.git/test-build/tmp-eglibc/work/x86_64-linux/quilt-native/0.60-r0/sysroot-destdir/home/jack/Work/oe-core.git/test-build/tmp-eglibc/sysroots/x86_64-linux
> -ps --files-from - | tar -xf - -C
> /home/jack/Work/oe-core.git/test-build/tmp-eglibc/sysroots/x86_64-linux'
> returned non-zero exit status 2 with output tar: --same-order option
> cannot be used with -c
> Try 'tar --help' or 'tar --usage' for more information.
> tar: This does not look like a tar archive
> tar: Exiting with failure status due to previous errors
> find: `standard output': Broken pipe
> find: write error
> 
> Tar command in staging.bbclass
> 
> tar -cf - -C "$src" -p . | tar -xf - -C "$dest"

I think this command got copy and pasted into a few parts of the system
so we'll need to hunt them all down and fix them. In classes alone:

$ grep \\-ps * -R
libc-package.bbclass:	tar -cf - -C ${LOCALETREESRC}${datadir} -ps i18n | tar -xf - -C $treedir/${datadir}
libc-package.bbclass:	tar -cf - -C ${LOCALETREESRC}${base_libdir} -ps . | tar -xf - -C $treedir/${base_libdir}
libc-package.bbclass:		tar -cf - -C ${STAGING_DIR_NATIVE}/${prefix_native}/${base_libdir} -ps libgcc_s.* | tar -xf - -C $treedir/${base_libdir}
libc-package.bbclass:	tar -cf - -C $treedir/$parent -ps $(basename ${localedir}) | tar -xf - -C ${PKGD}$parent
package.bbclass:    cmd = 'tar -cf - -C %s -ps . | tar -xf - -C %s' % (dest, dvar)
populate_sdk_deb.bbclass:	tar -cf - -C ${STAGING_ETCDIR_NATIVE} -ps apt | tar -xf - -C ${target_rootfs}/etc
staging.bbclass:		tar -cf - -C "$src" -ps . | tar -xf - -C "$dest"

Cheers,

Richard




More information about the Openembedded-core mailing list