#! /bin/bash set -x builddir="$1" shift filelist=$(mktemp -t ${0##*/}.XXXXXXXXXX) trap "rm -f $filelist" EXIT cat >"$filelist" flavor=${1##*-} grep -v '\.ko$' | /usr/lib/rpm/find-provides "$@" | grep -v '^ksym(' # HACK: find out what subpackage is this and just print the symsets # computed in %build. We need to do it this way because the provided # symsets are computed from the modules AND the reference symsets, which # we don't see here. subpack= samemodules() { cmp -s <(sed -rn 's:.*/([^/]*\.ko)$:\1:p' "$1" | sort) \ <(sed -rn 's:.*/([^/]*\.ko)$:\1:p' "$2" | sort) } if ! grep -q '\.ko$' "$filelist"; then # no modules, no symsets exit 0 fi if samemodules "$builddir"/base-modules "$filelist"; then symsets=("$builddir/base-symsets") elif samemodules "$builddir"/main-modules "$filelist"; then symsets=("$builddir/base-symsets" "$builddir/main-symsets") elif samemodules "$builddir"/unsupported-modules "$filelist"; then symsets=("$builddir/extra-symsets") else echo "find-provides: failed to determine which subpackage is this" >&2 exit 1 fi find "${symsets[@]}" -type f -printf '%f\n' | \ sed -rn 's/^\.?(.+)\.([a-z0-9]{16})(\.fake)?$/kernel('$flavor':\1) = \2/p' exit 0