Update upstream redhat-rpm-config release.
This commit is contained in:
parent
c8ec9fb01f
commit
97a32887d6
@ -3,6 +3,11 @@
|
|||||||
# This script reads filenames from STDIN and outputs any relevant provides
|
# This script reads filenames from STDIN and outputs any relevant provides
|
||||||
# information that needs to be included in the package.
|
# information that needs to be included in the package.
|
||||||
|
|
||||||
|
if [ "$1" ]
|
||||||
|
then
|
||||||
|
package_name = "$1"
|
||||||
|
fi
|
||||||
|
|
||||||
[ -z "$OBJDUMP" ] && OBJDUMP=objdump
|
[ -z "$OBJDUMP" ] && OBJDUMP=objdump
|
||||||
|
|
||||||
filelist=`sed "s/['\"]/\\\&/g"`
|
filelist=`sed "s/['\"]/\\\&/g"`
|
||||||
@ -70,4 +75,30 @@ done | sort -u
|
|||||||
[ -x /usr/lib/rpm/redhat/find-provides.pkgconfig ] &&
|
[ -x /usr/lib/rpm/redhat/find-provides.pkgconfig ] &&
|
||||||
echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/find-provides.pkgconfig | sort -u
|
echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/find-provides.pkgconfig | sort -u
|
||||||
|
|
||||||
|
#
|
||||||
|
# --- Kernel module imported symbols
|
||||||
|
#
|
||||||
|
# Since we don't (yet) get passed the name of the package being built, we
|
||||||
|
# cheat a little here by looking first for a kernel, then for a kmod.
|
||||||
|
#
|
||||||
|
|
||||||
|
is_kmod=1
|
||||||
|
for f in $filelist; do
|
||||||
|
if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*).ko$:\2:p') ]
|
||||||
|
then
|
||||||
|
is_kernel=1;
|
||||||
|
fi
|
||||||
|
if [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ]
|
||||||
|
then
|
||||||
|
unset is_kmod;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ! "$is_kernel" ] || [ "$package_name" == "kernel" ]
|
||||||
|
then
|
||||||
|
unset is_kmod
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -x /usr/lib/rpm/redhat/find-provides.ksyms ] && [ "$is_kmod" ] &&
|
||||||
|
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-provides.ksyms
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
9
find-provides.ksyms
Executable file
9
find-provides.ksyms
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
for module in $(grep -E '/lib/modules/.+\.ko$'); do
|
||||||
|
nm $module \
|
||||||
|
| sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):ksym(\2) = \1:p'
|
||||||
|
done \
|
||||||
|
| sort -u
|
@ -5,6 +5,11 @@
|
|||||||
# sonames, script interpreters, and perl modules.
|
# sonames, script interpreters, and perl modules.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
if [ "$1" ]
|
||||||
|
then
|
||||||
|
package_name = "$1"
|
||||||
|
fi
|
||||||
|
|
||||||
ulimit -c 0
|
ulimit -c 0
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -132,4 +137,30 @@ done | sort -u
|
|||||||
[ -x /usr/lib/rpm/redhat/tcl.req -a -n "$tcllist" ] && \
|
[ -x /usr/lib/rpm/redhat/tcl.req -a -n "$tcllist" ] && \
|
||||||
echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/tcl.req | sort -u
|
echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/tcl.req | sort -u
|
||||||
|
|
||||||
|
#
|
||||||
|
# --- Kernel module imported symbols
|
||||||
|
#
|
||||||
|
# Since we don't (yet) get passed the name of the package being built, we
|
||||||
|
# cheat a little here by looking first for a kernel, then for a kmod.
|
||||||
|
#
|
||||||
|
|
||||||
|
is_kmod=1
|
||||||
|
for f in $filelist; do
|
||||||
|
if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*).ko$:\2:p') ]
|
||||||
|
then
|
||||||
|
is_kernel=1;
|
||||||
|
fi
|
||||||
|
if [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ]
|
||||||
|
then
|
||||||
|
unset is_kmod;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ! "$is_kernel" ] || [ "$package_name" == "kernel" ]
|
||||||
|
then
|
||||||
|
unset is_kmod
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -x /usr/lib/rpm/redhat/find-requires.ksyms ] && [ "$is_kmod" ] &&
|
||||||
|
printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-requires.ksyms
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
48
find-requires.ksyms
Executable file
48
find-requires.ksyms
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
all_provides() {
|
||||||
|
nm "$@" \
|
||||||
|
| sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):\1\t\2:p' \
|
||||||
|
| sort -k2 -u
|
||||||
|
}
|
||||||
|
|
||||||
|
all_requires() {
|
||||||
|
for module in "$@"; do
|
||||||
|
set -- $(/sbin/modinfo -F vermagic "$module" | sed -e 's: .*::' -e q)
|
||||||
|
/sbin/modprobe --dump-modversions "$module" \
|
||||||
|
| sed -r -e 's:^0x0*::' -e 's:$:\t'"$1"':'
|
||||||
|
done \
|
||||||
|
| sort -k2 -u
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! [ -e /sbin/modinfo -a -e /sbin/modprobe ]; then
|
||||||
|
cat > /dev/null
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
modules=($(grep -E '/lib/modules/.+\.ko$'))
|
||||||
|
if [ ${#modules[@]} -gt 0 ]; then
|
||||||
|
symset_table=$(mktemp -t ${0##*/}.XXXXX)
|
||||||
|
/usr/lib/rpm/redhat/symset-table | sort > $symset_table
|
||||||
|
|
||||||
|
join -t $'\t' -j 1 -a 2 $symset_table <(
|
||||||
|
# Filter out requirements that we fulfill ourself.
|
||||||
|
join -t $'\t' -j 2 -v 1 \
|
||||||
|
<(all_requires "${modules[@]}") \
|
||||||
|
<(all_provides "${modules[@]}") \
|
||||||
|
| awk '
|
||||||
|
BEGIN { FS = "\t" ; OFS = "\t" }
|
||||||
|
{ print $3 "/" $2 "/" $1 }
|
||||||
|
' \
|
||||||
|
| sort -u) \
|
||||||
|
| sort -u \
|
||||||
|
| awk '
|
||||||
|
{ FS = "\t" ; OFS = "\t" }
|
||||||
|
NF == 3 { print "kernel(" $2 ") = " $3
|
||||||
|
next }
|
||||||
|
{ split($1, arr, "/")
|
||||||
|
print "ksym(" arr[3] ") = " arr[2] }
|
||||||
|
'
|
||||||
|
fi
|
@ -1,6 +1,6 @@
|
|||||||
Summary: Red Hat specific rpm configuration files.
|
Summary: Red Hat specific rpm configuration files.
|
||||||
Name: redhat-rpm-config
|
Name: redhat-rpm-config
|
||||||
Version: 8.0.40
|
Version: 8.0.45
|
||||||
Release: 1
|
Release: 1
|
||||||
License: GPL
|
License: GPL
|
||||||
Group: Development/System
|
Group: Development/System
|
||||||
@ -35,6 +35,21 @@ rm -rf ${RPM_BUILD_ROOT}
|
|||||||
%{_prefix}/lib/rpm/redhat
|
%{_prefix}/lib/rpm/redhat
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun Jul 30 2006 Jon Masters <jcm@redhat.com> - 8.0.45-1
|
||||||
|
- Fix inverted kernel test.
|
||||||
|
|
||||||
|
* Sun Jul 30 2006 Jon Masters <jcm@redhat.com> - 8.0.44-1
|
||||||
|
- Add a better check for a kernel vs. kmod.
|
||||||
|
|
||||||
|
* Thu Jun 15 2006 Jon Masters <jcm@redhat.com> - 8.0.43-1
|
||||||
|
- Workaround bug in find-requires/find-provides for kmods.
|
||||||
|
|
||||||
|
* Thu Jun 15 2006 Jon Masters <jcm@redhat.com> - 8.0.42-1
|
||||||
|
- Fix a typo in KMP find-requires.
|
||||||
|
|
||||||
|
* Tue Jun 13 2006 Jon Masters <jcm@redhat.com> - 8.0.41-1
|
||||||
|
- Add support for KMP Fedora Extras packaging.
|
||||||
|
|
||||||
* Fri Feb 3 2006 Jeremy Katz <katzj@redhat.com> - 8.0.40-1
|
* Fri Feb 3 2006 Jeremy Katz <katzj@redhat.com> - 8.0.40-1
|
||||||
- use -mtune=generic for x86 and x86_64
|
- use -mtune=generic for x86 and x86_64
|
||||||
|
|
||||||
|
76
rpmsort
Executable file
76
rpmsort
Executable file
@ -0,0 +1,76 @@
|
|||||||
|
#! /usr/bin/perl -w
|
||||||
|
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
# USA.
|
||||||
|
|
||||||
|
use Getopt::Long qw(:config gnu_getopt);
|
||||||
|
|
||||||
|
sub rpm_cmp_versions {
|
||||||
|
my ($evr1, $evr2) = @_;
|
||||||
|
|
||||||
|
sub _rpm_cmp {
|
||||||
|
my ($s1, $s2) = @_;
|
||||||
|
|
||||||
|
return defined $s1 <=> defined $s2
|
||||||
|
unless defined $s1 && defined $s2;
|
||||||
|
|
||||||
|
my ($r, $x1, $x2);
|
||||||
|
do {
|
||||||
|
$s1 =~ s/^[^a-zA-Z0-9]+//;
|
||||||
|
$s2 =~ s/^[^a-zA-Z0-9]+//;
|
||||||
|
if ($s1 =~ /^\d/ || $s2 =~ /^\d/) {
|
||||||
|
$s1 =~ s/^0*(\d*)//; $x1 = $1;
|
||||||
|
$s2 =~ s/^0*(\d*)//; $x2 = $1;
|
||||||
|
$r = length $x1 <=> length $x2 || $x1 cmp $x2;
|
||||||
|
} else {
|
||||||
|
$s1 =~ s/^([a-zA-Z]*)//; $x1 = $1;
|
||||||
|
$s2 =~ s/^([a-zA-Z]*)//; $x2 = $1;
|
||||||
|
return 0
|
||||||
|
if $x1 eq '' && $x2 eq '';
|
||||||
|
$r = $x1 cmp $x2;
|
||||||
|
}
|
||||||
|
} until $r;
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
my ($e1, $v1, $r1) = $evr1 =~ /^(?:(\d*):)?(.*?)(?:-([^-]*))?$/;
|
||||||
|
my ($e2, $v2, $r2) = $evr2 =~ /^(?:(\d*):)?(.*?)(?:-([^-]*))?$/;
|
||||||
|
my $r = _rpm_cmp($e1 || 0, $e2 || 0);
|
||||||
|
$r = _rpm_cmp($v1, $v2)
|
||||||
|
unless $r;
|
||||||
|
$r = _rpm_cmp($r1, $r2)
|
||||||
|
unless $r;
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $reorder = sub { return @_ };
|
||||||
|
my $key = 0;
|
||||||
|
|
||||||
|
GetOptions ("r|reverse" => sub { $reorder = sub { return reverse @_ } },
|
||||||
|
"k|key=i" => \$key)
|
||||||
|
or do {
|
||||||
|
print STDERR "Usage\n";
|
||||||
|
exit 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
if ($key == 0) {
|
||||||
|
# Sort by entire lines
|
||||||
|
map { print } &$reorder(sort { rpm_cmp_versions($a, $b) } <>);
|
||||||
|
} else {
|
||||||
|
# Sort by field $key
|
||||||
|
my @data = map { [(split)[$key-1], $_] } <>;
|
||||||
|
map { print } &$reorder(map { $_->[1] }
|
||||||
|
sort { rpm_cmp_versions($a->[0], $b->[0]) } @data);
|
||||||
|
}
|
35
symset-table
Executable file
35
symset-table
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Create a table of all symbol sets defined in all /boot/symsets*.tar.gz
|
||||||
|
# files.
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# kernelrelease/modver/symbol <tab> symset <tab> symset_hash
|
||||||
|
#
|
||||||
|
# This table is needed for computing the appropriate Requires: tags for
|
||||||
|
# kernel module packages.
|
||||||
|
|
||||||
|
tmpdir=$(mktemp -t -d ${0##*/}.XXXXXX)
|
||||||
|
trap "cd / ; rm -rf $tmpdir" EXIT
|
||||||
|
cd $tmpdir
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
for symsets in /boot/symsets-*.tar.gz; do
|
||||||
|
zcat $symsets \
|
||||||
|
| tar xf -
|
||||||
|
done
|
||||||
|
|
||||||
|
for symsets in *; do
|
||||||
|
krel=${symsets#symsets-}
|
||||||
|
for symset in $symsets/*; do
|
||||||
|
class=${symset##*/} ; class=${class%.*}
|
||||||
|
hash=${symset##*.}
|
||||||
|
awk '
|
||||||
|
BEGIN { FS = "\t" ; OFS = "\t" }
|
||||||
|
{ sub(/0x0*/, "", $1)
|
||||||
|
print krel "/" $1 "/" $2, class, hash }
|
||||||
|
' krel="$krel" class="$class" hash="$hash" $symset
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# vim:shiftwidth=4 softtabstop=4
|
Loading…
Reference in New Issue
Block a user