https://android.googlesource.com/kernel/common/+/refs/heads/android-mainline/scripts/Makefile.package#49 and https://android.googlesource.com/kernel/build/+/d68a8336a396a98820de2b3432ce5206fe70c854/build.sh#668 are the only two usages i've ever seen (and internal code search didn't have any others when i asked it).
sadly i've forgotten how to search debian packages again... but apparently i did remember last time this came up: http://lists.landley.net/htdig.cgi/toybox-landley.net/2020-October/012074.html On Thu, May 19, 2022 at 6:53 AM Rob Landley <[email protected]> wrote: > The "only apply transforms to certain file types" selection is CONCEPTUALLY > broken because the directories leading to those entries participate in the > transform, and the directories have their own type (which is not listed), > and > each directory is stored in its own entry because tar x doesn't mkdir -p. > So if > you make a symlink and a file in a deepish hirerarchy but only adjust the > directory names of SOME entries, it's not gonna extract right? Let's try: > > $ ln -s seven one/two/three/four/five/six > $ touch one/two/three/four/five/eight > > And then tell debian's tar to modify the path of non-symlinks: > > $ tar cv one --xform=s/three/zero/S | tar t > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > one/ > one/two/ > one/two/zero/ > one/two/zero/four/ > one/two/zero/four/five/ > one/two/zero/four/five/eight > one/two/zero/four/five/six > > The symlink's path is modified despite the S exclusion. What happens if I > tell > it to apply a different change that includes the filename: > > $ tar cv one --xform=s@five/six@seven@S | tar t > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/seven > > The "do not apply to symlink" got ignored? How about JUST the filename? > > 8$ tar cv one --xform=s@six@seven@S | tar tone/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/seven > > What does the S exclusion MEAN here? > > landley@driftwood:~/toybox/toybox/sub8$ ls -ls one/two/three/four/five > total 0 > 0 -rw-r--r-- 1 landley landley 0 May 19 08:29 eight > 0 lrwxrwxrwx 1 landley landley 5 May 19 08:29 six -> seven > > $ tar cv one --xform=s@eight@nine@R | tar t > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > > The "do not apply to regular files" exclusion is working... > > $ tar cv one --xform=s@three@zero@R | tar t > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > > Including for directory entries? > > $ tar cv one --xform=s@three@zero@r | tar t > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > one/ > one/two/ > one/two/zero/ > one/two/zero/four/ > one/two/zero/four/five/ > one/two/zero/four/five/eight > one/two/zero/four/five/six > > $ tar cv one --xform=s@six@seven@r | tar tone/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/six > one/ > one/two/ > one/two/three/ > one/two/three/four/ > one/two/three/four/five/ > one/two/three/four/five/eight > one/two/three/four/five/seven > > So it thinks directories are regular files. It also thinks (dangling) > SYMLINKS > are regular files... > > $ tar c ccc --xform s/ccc/abd/S | tar t > abd > $ tar c ccc --xform s/ccc/abd/R | tar t > ccc > > Ok, non-dangling symlinks with no directory component are ALSO regular > files. It > seems to think EVERYTHING is a regular file. Great. (I have not poked much > at > hardlinks yet because it seems a bit obscure?) > > Sigh. I am trying to work out what to implement here, and it's... not well > specified. (Can I just NOT implement the /RHS part yet and call it good? > So far > it looks like specifying "R" means "ignore this --xform" and everything > else is > a NOP? Modulo the H exclusion I haven't tested yet because hardlinks don't > come > up much...) > > Rob > _______________________________________________ > Toybox mailing list > [email protected] > http://lists.landley.net/listinfo.cgi/toybox-landley.net >
_______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
