The issue has been tracked down. The solution is actually under evaluation, expect this fixed very soon! 
AS
awesome news AS! Curious to hear what caused this flaw. 
I'm not sure about the 'cause', because there has been several changes at the same time when we switched from rpm-4.4.6 to rpm-4.8.1.
Anyway, the issue is that some special chars aren't valid chars to be used from rpmbuild, notably '[' and ']'.
Another hint was provided from
apavloma:
I intercepted what was sent to /usr/lib/rpm/mandriva/find-provides and found the following input
contained a '[':
kmod(a100u2w)
kmod(a3d)
kmod(aacraid) = 1.1-5[26400]-ms
kmod(abituguru)
kmod(abituguru3)
Then I went a bit further: /usr/lib/rpm/mandriva/find-provides call a bunch of similar scripts, one of them is:
/usr/lib/rpm/mandriva/kmod.prov, which is the script that generate the version as in "
= 1.1-5[26400]-ms",
From a practical point of view, the square brackets are invalid characters, and cannot be supplied as input for rpmbuild.
Now the question is (still unaswered) who is wrong in this extended chain ?
a) who wrote the driver aacraid specifying a version string containing square brackets ?
b) the script kmod.prov should filters those square brackets ?
c) the script find-provides should filters those square brackets ?
d) those scripts "find-provides" should be not used at all, and instead should be used "rpmdeps --provides" ?
Right now I have applied an easy workaround: to filter out the square brackets, applied to
kmod.prov, but I'm nearly sure that this is not enough to satisfy RPM dependency mechanism.
#!/bin/sh
provideslist=`sed "s/['\"]/\\\&/g"`
modulelist=$(echo "$provideslist" | egrep '^.*(/lib/modules/|/var/lib/dkms/).*\.ko(\.gz)?$')
echo $modulelist | xargs -r /sbin/modinfo | \
perl -lne '
$name = $1 if m!^filename:\s*(?:.*/)?([^/]+)\.k?o!;
$ver = $1 if /^version:\s*[a-zA-Z]{0,6}\-?(\d+[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*[\.\:\-\[\]]?\d*-?[a-zA-Z]{0,6}\d?).*/;
if (/^vermagic:/) {
print "kmod\($name\)" . ($ver ? " = $ver" : "") if $name;
undef $name; undef $ver;
}
' | tr "\[\]" ".."
# the above 'tr' is a workaround by AS to avoid find-provides failure while building kernels
dkmslist=$(echo "$provideslist" | egrep '(/var/lib/dkms-binary/[^/]+/[^/]+|/usr/src)/[^/]+/dkms.conf$')
[ -n "$dkmslist" ] && for d in $dkmslist; do
VERSION=`sed -rne 's/^PACKAGE_VERSION="?([^"]+)"?$/\1/;T;p' $d`
[ -z "$VERSION" ] && continue
PACKAGE_NAME=`sed -rne 's/^PACKAGE_NAME="?([^"]+)"?$/\1/;T;p' $d`
MODULES=`sed -rne 's/^DEST_MODULE_NAME\[[0-9]+\]="?([^"]+)"?$/\1/;T;p' $d`
[ -z "$MODULES" ] && MODULES=`sed -rne 's/^BUILT_MODULE_NAME\[[0-9]+\]="?([^"]+)"?$/\1/;T;p' $d`
# default on PACKAGE_NAME if no BUILT_MODULE_NAME is specified
[ -z "$MODULES" ] && MODULES=$PACKAGE_NAME
echo "$MODULES" | sed -re "s/\\\$PACKAGE_NAME/$PACKAGE_NAME/" | while read m; do
echo "kmod($m) = $VERSION"
done
done
There is also to say that the perl expression, colored blue-navy, may be should filter out those characters, my knowledge of perl is not so advanced to properly evaluate that "
insane" expression.

AS