This should correct the problem that ./bin/[ was missing from the
base.tgz set, despite being listed in src/distrib/sets/base/mi
and being present in METALOG. The corresponding entry in
METALOG.sanitised has ./bin/\133 instead of ./bin/[, and that made
join.awk omit it.
XXX: The unvis() implementation in join.awk handles only a subset
of the syntax, but it's probably good enough for now.
XXX: The file names should probably be canonicalised by
vis(unvis(name)), but at present none of the file names in the set
lists really need it.
XXX: It may be a bug that entries in the set lists without
corresponding entries in METALOG are silently ignored by join.awk.
- improve parsing; explicitly skip lines we don't want and use the rest.
- keep track of which items were explicitly listed, and only output directories
at the END which weren't listed, each with a suffix of "optional".
- convert to my awk KNF
join.awk:
- when joining, output all of the matching entry from the first file
and the 2nd & subsequent lines of the entry from the second file.
- convert to my awk KNF
these changes mean that maketars use of pax will result in tar files
with the traditional behaviour of only containing the necessary
directories, rather than all the parent directories required to get to
a particular item. this latter behaviour was necessary for METALOG
(i.e UNPRIVED) pax .tgz set file generation, until the changes above
fixed it.
- improve munging of NetBSD.dist and METALOG into metalog, using mtree to
"cleanup" / "merge" entries, and don't sort the result.
relies upon mtree to not change the order (see below)
- use (newly added) join.awk to output lines in metalog that are listed
in flist.${set}. join.awk doesn't require either file to be sorted
(unlike join(1)), which is required because we want to retain the
order of the metalog, because certain entries in the metalog (such
as hard links) make assumptions about the permissions of earlier entries.
this should fix [toolchain/16207]