On Thu, Aug 25, 2022 at 5:49 PM enh <[email protected]> wrote: > the kernel folks build in an even more restricted environment than AOSP. > so although they have bzip2 and gzip, they don't have bzcat and gzcat. > > from a bad run (with no bzcat/gzcat): > > ~/aosp-master-with-phones$ /usr/bin/strace -f -e execve > ./prebuilts/build-tools/linux-x86/bin/toybox tar tvf x.tar.gz > execve("./prebuilts/build-tools/linux-x86/bin/toybox", > ["./prebuilts/build-tools/linux-x8"..., "tar", "tvf", "x.tar.gz"], > 0x7ffe8acad930 /* 36 vars */) = 0 > /usr/bin/strace: Process 640688 attached > [pid 640688] > execve("/usr/local/google/home/enh/aosp-master-with-phones/prebuilts/build-tools/path/linux-x86/bzip2", > ["bzip2", "-d"], 0x7ffd675c2a80 /* 36 vars */) = 0 > bzip2: (stdin) is not a bzip2 file. > [pid 640688] +++ exited with 2 +++ > --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=640688, > si_uid=73769, si_status=2, si_utime=0, si_stime=0} --- > +++ exited with 0 +++ > > from a successful run (with all the tools): > > ~/aosp-master-with-phones$ strace -f -e execve > ./prebuilts/build-tools/linux-x86/bin/toybox tar tvf x.tar.gz > execve("./prebuilts/build-tools/linux-x86/bin/toybox", > ["./prebuilts/build-tools/linux-x8"..., "tar", "tvf", "x.tar.gz"], > 0x7ffea9535030 /* 36 vars */) = 0 > strace: Process 640431 attached > [pid 640431] execve("/usr/bin/zcat", ["/usr/bin/zcat"], 0x7fffe0fd7580 /* > 36 vars */) = 0 > [pid 640431] execve("/usr/bin/gzip", ["gzip", "-cd"], 0x55f91049b290 /* 34 > vars */) = 0 > [pid 640431] +++ exited with 0 +++ > --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=640431, > si_uid=73769, si_status=0, si_utime=0, si_stime=0} --- > -rw-r----- enh/primarygroup 0 2022-08-25 20:53 foo > +++ exited with 0 +++ > > there is code to try to use $TOOL -d if the *cat tool doesn't exist > (that's why we're running bzip2 at all), but it's obviously not working > here :-( > > it also works fine if you explicitly say 'z'. > > so here's the setup: > > $ touch foo > $ tar czf x.tar.gz foo > > here's the failure: > > $ tar tf x.tar.gz > bzip2: (stdin) is not a bzip2 file. > > here's the success: > > $ tar tzf /tmp/x.tar.gz > foo > > i didn't get time today to look at this in more detail, but i do notice > that there appears to be an inconsistency between the two ways we choose > the appropriate tool: > > *archiver = FLAG(I) ? TT.I : (FLAG(z) ? "gzip" : (FLAG(J) ? > "xz":"bzip2")); > > struct string_list *zcat = FLAG(I) ? 0 : find_in_path(getenv("PATH"), > FLAG(j) ? "bzcat" : FLAG(J) ? "xzcat" : "zcat"); > > is that intentional or a bug? > > (i'll try to have another look tomorrow, but since you seem to be > nocturnal atm i thought i'd send this out now anyway :-) ) >
ran out of time to investigate further today, but i did at least send you a patch to fix the build, and another to fix the tar tests on macOS again...
_______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
