[Toybox] "bad xform" not very helpful

enh enh at google.com
Wed Aug 31 18:18:15 PDT 2022


it does by default. that's what i turned off as a workaround for this bug.

On Wed, Aug 31, 2022, 18:15 David Seikel <onefang_toybox at dave.isageek.net>
wrote:

> On 2022-08-31 14:55:24, enh via Toybox wrote:
> >    On Tue, Aug 16, 2022 at 12:22 PM enh <enh at google.com> wrote:
> >
> >      On Tue, Aug 16, 2022 at 10:28 AM enh <enh at google.com> wrote:
> >
> >        On Tue, Aug 16, 2022 at 1:43 AM Rob Landley <rob at landley.net>
> wrote:
> >
> >          On 8/15/22 18:50, enh via Toybox wrote:
> >          > and here's their minimized repro case:
> >          >
> >          > echo > /tmp/foo.txt; echo /tmp/foo.txt > /tmp/find.txt
> >          >
> >          > cat /tmp/find.txt | prebuilts/build-tools/path/linux-x86/tar
> czf
> >          /tmp/out.tar.gz \
> >          >   --absolute-names \
> >          >   --transform 's,^/,,' -T -
> >          >
> >          > This fails with
> >          >
> >          > tar: bad xform
> >
> >          Hmmm...
> >
> >          $ echo > /tmp/foo.txt; echo /tmp/foo.txt > /tmp/find.txt
> >          $ cat /tmp/find.txt | PATH=$PWD/sub9:$PATH ./tar czf out.tar.gz
> \
> >            --absolute-names --transform 's,^/,,' -T -
> >          $ tar tvf /tmp/out.tar.gz
> >          -rw-r--r-- landley/landley   1 2022-08-16 01:53 tmp/foo.txt
> >
> >          Working for me? (The sub9 bit was because I stuck toybox sed in
> the
> >          $PATH to
> >          make sure that wasn't it...)
> >
> >        repos for me, both with their prebuilt but also with a fresh
> clone (on
> >        either macos or linux):
> >
> >        /tmp/toybox$ cat /tmp/find.txt | ./toybox tar czf /tmp/out.tar.gz
>
> >        --absolute-names   --transform 's,^/,,' -T -
> >
> >        tar: bad xform
> >
> >        /tmp/toybox$
> >
> >
> >        a bit of printf debugging shows we're reading nothing back:
> >
> >        /tmp/toybox$ cat /tmp/find.txt | strace -f ./toybox tar czf
> >        /tmp/out.tar.gz   --absolute-names   --transform 's,^/,,' -T - 2>
> >        /tmp/out
> >
> >        argv[0]="sed"
> >
> >        argv[1]="-e"
> >
> >        argv[2]="s,^/,,"
> >
> >        pid=1779946
> >
> >        stdin="/tmp/foo.txt"
> >
> >          len=0 Success
> >
> >        total=0 result="(null)"
> >
> >        but strace implies we're not actually exec()ing sed at all?
> >
> >      and if i `CONFIG_TOYBOX_NORECURSE=y`, it calls sed and works...
> >
> >    ...though this might be about to come back and bite me. i'm hearing
> as-yet
> >    unconfirmed reports that toybox `tar czf` is a lot slower than gnu
> tar,
> >    and -- given that they're using --transform` while they're assuming
> it's
> >    tar or gzip, i'm wondering whether it's actually the fact that we're
> >    forking out to sed for every file?
> >    i've asked for repro steps or a `perf record` i can look at...
>
> That reminds me...
>
> I've long thought it would be great if toybox toys could call other
> toybox toys directly.  So tar wouldn't fork out to sed, we have our own
> sed, just call it directly.  Then you avoid the fork and other overhead,
> which will probably speed things up.
>
> --
> A big old stinking pile of genius that no one wants
> coz there are too many silver coated monkeys in the world.
> _______________________________________________
> Toybox mailing list
> Toybox at lists.landley.net
> http://lists.landley.net/listinfo.cgi/toybox-landley.net
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20220831/b215207d/attachment.htm>


More information about the Toybox mailing list