@@ -0,0 +1,40 @@
+#! /bin/bash
+
+usage() {
+ echo "Usage: ${0##*/} {dir} < Module.symvers"
+ exit $1
+}
+
+[ $# -eq 1 ] || usage 1
+dir=$1
+
+tmpdir=$(mktemp -dt ${0##*/}.XXXXXXXXXX)
+trap "rm -rf $tmpdir" EXIT
+
+split_into_sets() {
+ local dir=$1
+
+ awk '
+ { set = gensub(/\/[^\/]+$/, "", "", $3)
+ sets[set] = sets[set] $0 "\n"
+ }
+ END {
+ for (set in sets) {
+ filename = gensub(/\//, "_", "g", set)
+ printf "%s", sets[set] > dir "/" filename
+ }
+ }
+ ' dir="$dir"
+}
+
+sort -k2 \
+| split_into_sets "$tmpdir"
+
+shopt -s nullglob
+set -- $tmpdir/*
+if [ $# -ne 0 ]; then
+ md5sum "$@" \
+ | while read md5sum set; do
+ cp $set $dir/${set##*/}.${md5sum:0:16}
+ done
+fi
|