mkimage-profiles/bin/archdep-filter
Michael Shigorin ca6ec25e32 bin/archdep-filter: a debugging note
...just to have it handy when it's in need next time.
2021-12-04 22:12:09 +07:00

56 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
# filter stdin or file for words related to
# the specified target architecture
#
# args: [-a arch] [-i file]
if [ "$1" = "-a" -a -n "$2" ]; then
a="$2"
shift 2
else
cat
exit
fi
if [ "$1" = "-i" -a -w "$2" ]; then
f="$2"
t="`mktemp`"
fi
# map meta-arches for prefiltering
# NB: biarch gets special expansion later
case "$a" in
i586)
A="(IA32|X86)";;
x86_64)
A="X86";;
e2k*)
A="E2K";;
aarch64|arm*)
A="ARM";;
*)
A=;;
esac
# NB: pipe runs in parallel => faster than -e -e
cat ${f:+"$f"} |
sed -r ':loop; s/^((([^@]+@!)[^,]+)+),([a-zA-Z0-9_]+)/\1@!\4/; t loop' |
sed -r ':loop; s/^((([^@]+@)[^,]+)+),([a-zA-Z0-9_]+)/\1\n\3\4/; t loop' |
sed -rn "s/\<([^@ ]*)\>|\<([^@ ]*)@$A\>[^ ]*\>/\1\2/pg" |
sed -rn "s/\<([^@ ]*)\>|\<[^ ]*@\!$A\>[^ ]*\> */\1/pg" |
sed -r "s/\<([^@ ]*)@IA32\>/\1@i586 i586-\1@x86_64/g" |
sed -rn "s/\<([^@ ]*)\>|\<([^@ ]*)@$a\>[^ ]*\>/\1\2/pg" |
sed -rn "s/\<([^@ ]*)\>|\<[^ ]*@\!$a\>[^ ]*\> */\1/pg" |
sed -r "s/\<([^@ ]*)@\![^ ]+\>/\1/g" |
sed -r "s/\<([^@ ]*)@[^@ ]+\> *//g" |
sed -r "s/^ +//;s/ +$//;/^$/d" |
if [ -n "$f" ]; then
cat > "$t" && mv "$t" "$f"
else
cat
fi
# stick this for debugging sed pipeline and run the script
# with >/dev/null to see what flows in a particular place:
# tee /dev/stderr |