Toshaan Bharvani
7 years ago
commit
a67d9ea36a
26 changed files with 2664 additions and 0 deletions
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
NAME=redhat-rpm-config |
||||
VERSION=9.1.0 |
||||
|
||||
CVSTAG = REDHAT_RPM_CONFIG_$(subst .,_,$(VERSION)) |
||||
|
||||
all: |
||||
|
||||
clean: |
||||
rm -f *~ |
||||
|
||||
install: |
||||
mkdir -p $(DESTDIR)/usr/lib/rpm/redhat |
||||
cp -pr * $(DESTDIR)/usr/lib/rpm/redhat/ |
||||
rm -f $(DESTDIR)/usr/lib/rpm/redhat/Makefile |
||||
|
||||
tag-archive: |
||||
@git tag -a $(CVSTAG) -m "$(NAME)-$(VERSION) release" |
||||
|
||||
create-archive: |
||||
@git archive --format=tar --prefix=$(NAME)-$(VERSION)/ HEAD | tar xf - |
||||
@git log > $(NAME)-$(VERSION)/ChangeLog |
||||
@tar cjf $(NAME)-$(VERSION).tar.bz2 $(NAME)-$(VERSION) |
||||
@rm -rf $(NAME)-$(VERSION) |
||||
@echo "Created $(NAME)-$(VERSION).tar.bz2" |
||||
|
||||
archive: tag-archive create-archive |
@ -0,0 +1,56 @@
@@ -0,0 +1,56 @@
|
||||
#!/bin/sh |
||||
|
||||
# If using normal root, avoid changing anything. |
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
cd $RPM_BUILD_ROOT |
||||
|
||||
# Compress man pages |
||||
COMPRESS="gzip -9 -n" |
||||
COMPRESS_EXT=.gz |
||||
|
||||
for d in ./usr/man/man* ./usr/man/*/man* ./usr/info \ |
||||
./usr/share/man/man* ./usr/share/man/*/man* ./usr/share/info \ |
||||
./usr/kerberos/man ./usr/X11R6/man/man* ./usr/lib/perl5/man/man* \ |
||||
./usr/share/doc/*/man/man* ./usr/lib/*/man/man* |
||||
do |
||||
[ -d $d ] || continue |
||||
for f in `find $d -type f` |
||||
do |
||||
[ -f "$f" ] || continue |
||||
[ "`basename $f`" = "dir" ] && continue |
||||
|
||||
case "$f" in |
||||
*.Z) gunzip -f $f; b=`echo $f | sed -e 's/\.Z$//'`;; |
||||
*.gz) gunzip -f $f; b=`echo $f | sed -e 's/\.gz$//'`;; |
||||
*.bz2) bunzip2 -f $f; b=`echo $f | sed -e 's/\.bz2$//'`;; |
||||
*) b=$f;; |
||||
esac |
||||
|
||||
$COMPRESS $b </dev/null 2>/dev/null || { |
||||
inode=`ls -i $b | awk '{ print $1 }'` |
||||
others=`find $d -type f -inum $inode` |
||||
if [ -n "$others" ]; then |
||||
for afile in $others ; do |
||||
[ "$afile" != "$b" ] && rm -f $afile |
||||
done |
||||
$COMPRESS -f $b |
||||
for afile in $others ; do |
||||
[ "$afile" != "$b" ] && ln $b$COMPRESS_EXT $afile$COMPRESS_EXT |
||||
done |
||||
else |
||||
$COMPRESS -f $b |
||||
fi |
||||
} |
||||
done |
||||
|
||||
for f in `find $d -type l` |
||||
do |
||||
l=`ls -l $f | sed -e 's/.* -> //' -e 's/\.gz$//' -e 's/\.bz2$//' -e 's/\.Z$//'` |
||||
rm -f $f |
||||
b=`echo $f | sed -e 's/\.gz$//' -e 's/\.bz2$//' -e 's/\.Z$//'` |
||||
ln -sf $l$COMPRESS_EXT $b$COMPRESS_EXT |
||||
done |
||||
done |
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash |
||||
|
||||
# If using normal root, avoid changing anything. |
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
tempdir=`mktemp -d /tmp/implant-ident-XXXXXX` |
||||
if test -z "$tempdir" ; then |
||||
exit 1 |
||||
fi |
||||
|
||||
cleanup() { |
||||
rm -f $tempdir/* |
||||
rmdir $tempdir |
||||
} |
||||
trap cleanup 0 1 2 3 4 5 6 7 8 9 11 13 14 15 |
||||
|
||||
for library in `find $RPM_BUILD_ROOT -type f -exec file \{\} \; | grep 'current ar archive' | sed 's,:.*,,g' ` ; do |
||||
pushd $tempdir > /dev/null |
||||
if test -n "$RPM_BUILD_ROOT" ; then |
||||
cleanedlibrary=`echo "$library" | sed s,"$RPM_BUILD_ROOT",,g` |
||||
else |
||||
cleanedlibrary="$library" |
||||
fi |
||||
ar x "$library" |
||||
for object in *.o ; do |
||||
echo '$RPM: '${RPM_PACKAGE_NAME:-UNKNOWN_NAME}-${RPM_PACKAGE_VERSION:-UNKNOWN_VERSION}-${RPM_PACKAGE_RELEASE:-UNKNOWN_RELEASE}:"$cleanedlibrary":"$object"' $' > __x_rpm_ident_string.txt |
||||
objcopy --add-section .rodata=__x_rpm_ident_string.txt "$object" |
||||
ar r "$library" "$object" |
||||
done |
||||
rm -f *.o |
||||
popd > /dev/null |
||||
done |
@ -0,0 +1,99 @@
@@ -0,0 +1,99 @@
|
||||
#!/bin/sh |
||||
|
||||
# If using normal root, avoid changing anything. |
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
# If zip is not installed, we can't repack the jars. |
||||
if [ ! -x /usr/bin/zip ]; then |
||||
exit 0 |
||||
fi |
||||
if [ ! -x /usr/bin/unzip ]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
JARS=`find $RPM_BUILD_ROOT -type f -name \*.jar -not -size 0` |
||||
if [ ! -z "$JARS" ]; then |
||||
|
||||
# make $RPM_BUILD_ROOT/tmp if it doesn't exist |
||||
rmtmp=0 |
||||
if [ ! -x "$RPM_BUILD_ROOT/tmp" ]; then |
||||
mkdir -p $RPM_BUILD_ROOT/tmp |
||||
rmtmp=1 |
||||
fi |
||||
|
||||
# unpack every jar, set the date of the files and directories and |
||||
# repack the jar |
||||
for j in $JARS ; do |
||||
JARNAME=`basename $j` |
||||
JTMPDIR=`mktemp -d -p $RPM_BUILD_ROOT/tmp $JARNAME.tmpdir.XXXXXXXXXX` || exit 1 |
||||
JARDIR=`mktemp -d -p $RPM_BUILD_ROOT/tmp $JARNAME.jardir.XXXXXXXXXX` || exit 1 |
||||
TIMEREF=`mktemp -p $RPM_BUILD_ROOT/tmp $JARNAME.timeref.XXXXXXXXXX` || exit 1 |
||||
|
||||
pushd $JTMPDIR > /dev/null |
||||
/usr/bin/unzip -qq -o $j |
||||
find -type d -exec chmod a+rx {} \; |
||||
find -type f -exec chmod a+r {} \; |
||||
rm -f $j |
||||
|
||||
# Create the directories first. |
||||
find -type d | LC_ALL=C sort | while read d; do |
||||
mkdir -p "$JARDIR/$d" |
||||
done |
||||
|
||||
# Get the modtime from the newest ChangeLog. If the project |
||||
# doesn't have a ChangeLog, Jan 1, 1970 will be used. |
||||
DATE="1970-01-01 UTC" |
||||
|
||||
if [ -z $_PACKAGE_BUILD_DIR ]; then |
||||
_PACKAGE_BUILD_DIR=$RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION |
||||
fi |
||||
|
||||
if [ -d $_PACKAGE_BUILD_DIR ]; then |
||||
CHANGELOGS=`find $_PACKAGE_BUILD_DIR -type f -name ChangeLog` |
||||
if [ ! -z "$CHANGELOGS" ]; then |
||||
for c in $CHANGELOGS; do |
||||
TMPDATE=`stat -c %y $c | cut -d " " -f 1-2` |
||||
if [ `date --date="$TMPDATE" +%s` -gt `date --date="$DATE" +%s` ]; then |
||||
DATE="$TMPDATE" |
||||
fi |
||||
done |
||||
fi |
||||
fi |
||||
|
||||
# move the contents over to the a new directory in order and set |
||||
# the times. |
||||
find -type f | LC_ALL=C sort | while read f; do |
||||
cp "$f" "$JARDIR/$f" |
||||
touch --date="$DATE" "$JARDIR/$f" |
||||
done |
||||
popd > /dev/null |
||||
|
||||
# Set the times of the directories. |
||||
find "$JARDIR" -type d | while read d; do |
||||
touch --date="$DATE" "$d" |
||||
done |
||||
|
||||
# make the jar |
||||
pushd $JARDIR > /dev/null |
||||
|
||||
if [ -n "`find -not -name '.'`" ]; then |
||||
find * -not -name '.' | LC_ALL=C sort | /usr/bin/zip -q -X -9 $j -@ |
||||
else |
||||
# Put the empty jar back |
||||
touch $j |
||||
fi |
||||
popd > /dev/null |
||||
|
||||
# Cleanup. |
||||
rm -rf $JTMPDIR |
||||
rm -rf $JARDIR |
||||
rm -f $TIMEREF |
||||
done |
||||
|
||||
# remove $RPM_BUILD_ROOT/tmp if we created it |
||||
if [ $rmtmp -eq 1 ]; then |
||||
rm -rf $RPM_BUILD_ROOT/tmp |
||||
fi |
||||
fi |
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh |
||||
|
||||
# If using normal root, avoid changing anything. |
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
# Hardlink identical *.pyc and *.pyo, originally from PLD's rpm-build-macros |
||||
# Modified to use sha1sum instead of cmp to avoid a diffutils dependency. |
||||
find "$RPM_BUILD_ROOT" -type f -name "*.pyc" | while read pyc ; do |
||||
pyo="$(echo $pyc | sed -e 's/.pyc$/.pyo/')" |
||||
if [ -f "$pyo" ] ; then |
||||
csha="$(sha1sum -b $pyc | cut -d' ' -f 1)" && \ |
||||
osha="$(sha1sum -b $pyo | cut -d' ' -f 1)" && \ |
||||
if [ "$csha" = "$osha" ] ; then |
||||
ln -f "$pyc" "$pyo" |
||||
fi |
||||
fi |
||||
done |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh |
||||
# If using normal root, avoid changing anything. |
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then |
||||
exit 0 |
||||
fi |
||||
[ -z "$STRIP" -a -n "$1" ] && STRIP="$1" |
||||
[ -z "$STRIP" ] && STRIP=strip |
||||
# Strip ELF binaries |
||||
for f in `find $RPM_BUILD_ROOT -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) -exec file {} \; | \ |
||||
grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug" | \ |
||||
grep -v ' shared object,' | \ |
||||
sed -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do |
||||
$STRIP -g "$f" || : |
||||
done |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh |
||||
# If using normal root, avoid changing anything. |
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
[ -z "$STRIP" -a -n "$1" ] && STRIP="$1" |
||||
[ -z "$OBJDUMP" -a -n "$2" ] && OBJDUMP="$2" |
||||
[ -z "$STRIP" ] && STRIP=strip |
||||
[ -z "$OBJDUMP" ] && OBJDUMP=objdump |
||||
|
||||
# Strip .comment and .note sections (the latter only if it is not allocated) |
||||
# for already stripped elf files in the build root |
||||
for f in `find $RPM_BUILD_ROOT -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) -exec file {} \; | \ |
||||
grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug" | \ |
||||
sed -n -e 's/^\(.*\):[ ]*ELF.*, stripped/\1/p'`; do |
||||
note="-R .note" |
||||
if $OBJDUMP -h $f | grep '^[ ]*[0-9]*[ ]*.note[ ]' -A 1 | \ |
||||
grep ALLOC >/dev/null; then |
||||
note= |
||||
fi |
||||
$STRIP -R .comment $note "$f" || : |
||||
done |
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh |
||||
# Conectiva brp - strip shared libraries. Based on Red Hat's brp-strip. |
||||
# Thu Apr 20 - Guilherme Manika <gwm@conectiva.com.br> |
||||
# Created file |
||||
|
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
[ -z "$STRIP" -a -n "$1" ] && STRIP="$1" |
||||
[ -z "$STRIP" ] && STRIP=strip |
||||
# Strip ELF shared objects |
||||
# Please note we don't restrict our search to executable files because |
||||
# our libraries are not (should not be, at least) +x. |
||||
for f in `find $RPM_BUILD_ROOT -type f -a -exec file {} \; | \ |
||||
grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug" | \ |
||||
grep ' shared object,' | \ |
||||
sed -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p'`; do |
||||
$STRIP --strip-unneeded "$f" |
||||
done |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh |
||||
|
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then |
||||
exit 0 |
||||
fi |
||||
|
||||
[ -z "$STRIP" -a -n "$1" ] && STRIP="$1" |
||||
[ -z "$STRIP" ] && STRIP=strip |
||||
|
||||
# Strip static libraries. |
||||
for f in `find $RPM_BUILD_ROOT -name \*.a -a -exec file {} \; | \ |
||||
grep -v "^${RPM_BUILD_ROOT}/\?usr/lib/debug" | \ |
||||
grep 'current ar archive' | \ |
||||
sed -n -e 's/^\(.*\):[ ]*current ar archive/\1/p'`; do |
||||
$STRIP -g "$f" |
||||
done |
@ -0,0 +1,83 @@
@@ -0,0 +1,83 @@
|
||||
#!/bin/bash |
||||
# dist.sh |
||||
# Author: Tom "spot" Callaway <tcallawa@redhat.com> |
||||
# License: GPL |
||||
# This is a script to output the value for the %{dist} |
||||
# tag. The dist tag takes the following format: .$type$num |
||||
# Where $type is one of: el, fc, rh |
||||
# (for RHEL, Fedora Core, and RHL, respectively) |
||||
# And $num is the version number of the distribution. |
||||
# NOTE: We can't detect Rawhide or Fedora Test builds properly. |
||||
# If we successfully detect the version number, we output the |
||||
# dist tag. Otherwise, we exit with no output. |
||||
|
||||
RELEASEFILE=/etc/redhat-release |
||||
|
||||
function check_num { |
||||
MAINVER=`cut -d "(" -f 1 < $RELEASEFILE | \ |
||||
sed -e "s/[^0-9.]//g" -e "s/$//g" | cut -d "." -f 1` |
||||
|
||||
echo $MAINVER | grep -q '[0-9]' && echo $MAINVER |
||||
} |
||||
|
||||
function check_rhl { |
||||
grep -q "Red Hat Linux" $RELEASEFILE && ! grep -q "Advanced" $RELEASEFILE && echo $DISTNUM |
||||
} |
||||
|
||||
function check_rhel { |
||||
egrep -q "(Enterprise|Advanced)" $RELEASEFILE && echo $DISTNUM |
||||
} |
||||
|
||||
function check_fedora { |
||||
grep -q Fedora $RELEASEFILE && echo $DISTNUM |
||||
} |
||||
|
||||
PELRELFILE=/etc/powerel-release |
||||
|
||||
function check_ver { |
||||
MAINVER=`cut -d "(" -f 1 < $PELRELFILE | \ |
||||
sed -e "s/[^0-9.]//g" -e "s/$//g" | cut -d "." -f 1` |
||||
echo $PELVER | grep -q '[0-9]' && echo $PELVER |
||||
} |
||||
|
||||
function check_pel { |
||||
grep -q "PowerEL" $PELRELFILE && echo $PELNUM |
||||
} |
||||
|
||||
DISTNUM=`check_num` |
||||
DISTFC=`check_fedora` |
||||
DISTRHL=`check_rhl` |
||||
DISTRHEL=`check_rhel` |
||||
PELNUM=`check_ver` |
||||
DISTPEL=`check_pel` |
||||
if [ -n "$DISTNUM" ]; then |
||||
if [ -n "$DISTFC" ]; then |
||||
DISTTYPE=fc |
||||
elif [ -n "$DISTRHEL" ]; then |
||||
DISTTYPE=el |
||||
elif [ -n "$DISTRHL" ]; then |
||||
DISTTYPE=rhl |
||||
elif [ -n "$DISTPEL" ]; then |
||||
DISTTYPE=pel |
||||
DISTNUM=$DISTPEL |
||||
fi |
||||
fi |
||||
[ -n "$DISTTYPE" -a -n "$DISTNUM" ] && DISTTAG=".${DISTTYPE}${DISTNUM}" |
||||
|
||||
case "$1" in |
||||
--el) echo -n "$DISTRHEL" ;; |
||||
--fc) echo -n "$DISTFC" ;; |
||||
--rhl) echo -n "$DISTRHL" ;; |
||||
--distnum) echo -n "$DISTNUM" ;; |
||||
--disttype) echo -n "$DISTTYPE" ;; |
||||
--help) |
||||
printf "Usage: $0 [OPTIONS]\n" |
||||
printf " Default mode is --dist. Possible options:\n" |
||||
printf " --el\t\tfor RHEL version (if RHEL)\n" |
||||
printf " --fc\t\tfor Fedora version (if Fedora)\n" |
||||
printf " --rhl\t\tfor RHL version (if RHL)\n" |
||||
printf " --dist\t\tfor distribution tag\n" |
||||
printf " --distnum\tfor distribution number (major)\n" |
||||
printf " --disttype\tfor distribution type\n" ;; |
||||
*) echo -n "$DISTTAG" ;; |
||||
esac |
@ -0,0 +1,112 @@
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash |
||||
|
||||
# This script reads filenames from STDIN and outputs any relevant provides |
||||
# information that needs to be included in the package. |
||||
|
||||
if [ "$1" ] |
||||
then |
||||
package_name="$1" |
||||
fi |
||||
|
||||
[ -z "$OBJDUMP" ] && OBJDUMP=objdump |
||||
|
||||
filelist=`sed "s/['\"]/\\\&/g"` |
||||
|
||||
solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \ |
||||
xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1) |
||||
pythonlist= |
||||
tcllist= |
||||
|
||||
# |
||||
# --- Alpha does not mark 64bit dependencies |
||||
case `uname -m` in |
||||
alpha*) mark64="" ;; |
||||
*) mark64="()(64bit)" ;; |
||||
esac |
||||
|
||||
# |
||||
# --- Library sonames and weak symbol versions (from glibc). |
||||
for f in $solist; do |
||||
soname=$(objdump -p $f | awk '/SONAME/ {print $2}') |
||||
|
||||
lib64=`if file -L $f 2>/dev/null | \ |
||||
grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi` |
||||
if [ "$soname" != "" ]; then |
||||
if [ ! -L $f ]; then |
||||
echo $soname$lib64 |
||||
objdump -p $f | awk ' |
||||
BEGIN { START=0 ; } |
||||
/Version definitions:/ { START=1; } |
||||
/^[0-9]/ && (START==1) { print $4; } |
||||
/^$/ { START=0; } |
||||
' | \ |
||||
grep -v $soname | \ |
||||
while read symbol ; do |
||||
echo "$soname($symbol)`echo $lib64 | sed 's/()//'`" |
||||
done |
||||
fi |
||||
else |
||||
echo ${f##*/}$lib64 |
||||
fi |
||||
done | sort -u |
||||
|
||||
# |
||||
# --- Perl modules. |
||||
[ -x /usr/lib/rpm/perl.prov ] && |
||||
echo $filelist | tr '[:blank:]' \\n | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u |
||||
|
||||
# |
||||
# --- Python modules. |
||||
[ -x /usr/lib/rpm/redhat/python.prov -a -n "$pythonlist" ] && |
||||
echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/python.prov | sort -u |
||||
|
||||
# |
||||
# --- Tcl modules. |
||||
[ -x /usr/lib/rpm/redhat/tcl.prov -a -n "$tcllist" ] && |
||||
echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/tcl.prov | sort -u |
||||
|
||||
# |
||||
# --- libtool |
||||
[ -x /usr/lib/rpm/redhat/find-provides.libtool ] && |
||||
echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/find-provides.libtool | sort -u |
||||
|
||||
# |
||||
# --- any other extra find-provides scripts |
||||
for i in /usr/lib/rpm/redhat/find-provides.d/*.prov |
||||
do |
||||
[ -x $i ] && |
||||
(echo $filelist | tr '[:blank:]' \\n | $i | sort -u) |
||||
done |
||||
|
||||
# |
||||
# --- pkgconfig |
||||
[ -x /usr/lib/rpm/redhat/find-provides.pkgconfig ] && |
||||
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 |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh |
||||
# |
||||
# firmware.prov - Automatically extract any and all firmware dependencies from |
||||
# kernel object (.ko) files and add to RPM deps. |
||||
|
||||
IFS=$'\n' |
||||
|
||||
for module in $(grep -E '/lib/modules/.+\.ko$') $*; |
||||
do |
||||
for firmware in `/sbin/modinfo -F firmware $module`; |
||||
do |
||||
echo "firmware($firmware)" |
||||
done |
||||
done |
@ -0,0 +1,76 @@
@@ -0,0 +1,76 @@
|
||||
#! /bin/sh |
||||
|
||||
# heavily based upon find-suggests.ksyms by Andreas Gruenbacher <agruen@suse.de>. |
||||
# with modifications by Michael Brown <Michael_E_Brown@dell.com> |
||||
# |
||||
# -- added module versioning info to modalias() symbols |
||||
# -- removed code which inspects spec files. |
||||
|
||||
IFS=$'\n' |
||||
|
||||
# |
||||
# Initially, dont generate modalias() lines for kernel package. This needs |
||||
# additional discussion. Would like to eventually add them for |
||||
# completeness, so that we can determine when drivers are folded into |
||||
# mainline kernel. |
||||
# |
||||
case "$1" in |
||||
kernel-module-*) ;; # Fedora kernel module package names start with |
||||
# kernel-module. |
||||
kernel*) is_kernel_package=1 ;; |
||||
esac |
||||
|
||||
if ! [ -z "$is_kernel_package" ]; then |
||||
cat > /dev/null |
||||
exit 0 |
||||
fi |
||||
|
||||
print_modaliases() { |
||||
declare class=$1 variants=$2 pos=$3 |
||||
if [ -n "$variants" ]; then |
||||
echo "${class:0:pos}[$variants]${class:pos+1}" |
||||
else |
||||
[ -z "$class" ] || echo "$class" |
||||
fi |
||||
} |
||||
|
||||
combine_modaliases() { |
||||
declare tag class variants pos n |
||||
read class |
||||
while read tag; do |
||||
for ((n=0; n<${#class}; n++)); do |
||||
if [ "*" != "${class:n:1}" -a \ |
||||
"${class:0:n}" = "${tag:0:n}" -a \ |
||||
"${class:n+1}" = "${tag:n+1}" ] && |
||||
( [ -z "$pos" ] || [ $n = $pos ] ); then |
||||
variants="${variants:-${class:n:1}}${tag:n:1}" |
||||
pos=$n |
||||
break |
||||
fi |
||||
done |
||||
if [ $n -eq ${#class} ]; then |
||||
print_modaliases "$class" "$variants" "$pos" |
||||
variants= |
||||
pos= |
||||
class=$tag |
||||
fi |
||||
done |
||||
print_modaliases "$class" "$variants" "$pos" |
||||
} |
||||
|
||||
for module in $(grep -E '/lib/modules/.+\.ko$') $*; do |
||||
# | head -n1 because some modules have *two* version tags. *cough*b44*cough* |
||||
modver=$(/sbin/modinfo -F version "$module"| head -n1) |
||||
modver=${modver// /_} |
||||
|
||||
# only add version tag if it has a version |
||||
if [ -n "$modver" ]; then |
||||
/sbin/modinfo -F alias "$module" \ |
||||
| sed -nre "s,(.+),modalias(\\1) = $modver,p" |
||||
else |
||||
/sbin/modinfo -F alias "$module" \ |
||||
| sed -nre "s,(.+),modalias(\\1),p" |
||||
fi |
||||
done \ |
||||
| sort -u \ |
||||
| combine_modaliases |
@ -0,0 +1,9 @@
@@ -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 |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh |
||||
while read possible ; do |
||||
case "$possible" in |
||||
*.la) |
||||
if grep -iq '^# Generated by ltmain.sh' "$possible" 2> /dev/null ; then |
||||
echo "libtool($possible)" |
||||
fi |
||||
;; |
||||
esac |
||||
done |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash |
||||
pkgconfig=${1:-/usr/bin/pkg-config} |
||||
test -x $pkgconfig || exit 0 |
||||
while read filename ; do |
||||
case "${filename}" in |
||||
*.pc) |
||||
# Assume that this file doesn't contain useful information. |
||||
needs_pkgconfig=false |
||||
# Query the dependencies of the package. |
||||
$pkgconfig --print-provides "$filename" 2> /dev/null | while read n r v ; do |
||||
# We have a dependency. Make a note that we need the pkgconfig |
||||
# tool for this package. |
||||
echo "pkgconfig($n)" "$r" "$v" |
||||
needs_pkgconfig=true |
||||
done |
||||
# The dependency on the pkgconfig package itself. |
||||
if $needs_pkgconfig ; then |
||||
echo pkgconfig |
||||
fi |
||||
;; |
||||
esac |
||||
done |
@ -0,0 +1,160 @@
@@ -0,0 +1,160 @@
|
||||
#!/bin/bash |
||||
|
||||
# |
||||
# Auto-generate requirements for executables (both ELF and a.out) and library |
||||
# sonames, script interpreters, and perl modules. |
||||
# |
||||
|
||||
ulimit -c 0 |
||||
|
||||
# |
||||
# --- Set needed to 0 for traditional find-requires behavior. |
||||
needed=1 |
||||
if [ X"$1" = Xldd ]; then |
||||
needed=0 |
||||
elif [ X"$1" = Xobjdump ]; then |
||||
needed=1 |
||||
fi |
||||
[ -z "$OBJDUMP" ] && OBJDUMP=objdump |
||||
|
||||
# |
||||
# --- Grab the file manifest and classify files. |
||||
#filelist=`sed "s/['\"]/\\\&/g"` |
||||
filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"` |
||||
exelist=`echo $filelist | xargs -r file | egrep -v ":.* (commands|script) " | \ |
||||
grep ":.*executable" | cut -d: -f1` |
||||
scriptlist=`echo $filelist | xargs -r file | \ |
||||
egrep ":.* (commands|script) " | cut -d: -f1` |
||||
liblist=`echo $filelist | xargs -r file | \ |
||||
grep ":.*shared object" | cut -d : -f1` |
||||
|
||||
interplist= |
||||
perllist= |
||||
pythonlist= |
||||
tcllist= |
||||
|
||||
# |
||||
# --- Alpha does not mark 64bit dependencies |
||||
case `uname -m` in |
||||
alpha*) mark64="" ;; |
||||
*) mark64="()(64bit)" ;; |
||||
esac |
||||
|
||||
if [ "$needed" -eq 0 ]; then |
||||
# |
||||
# --- Executable dependency sonames. |
||||
for f in $exelist; do |
||||
[ -r $f -a -x $f ] || continue |
||||
lib64=`if file -L $f 2>/dev/null | \ |
||||
grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi` |
||||
ldd $f | awk '/=>/ { |
||||
if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /libredhat-kernel.so/) { |
||||
gsub(/'\''"/,"\\&",$1); |
||||
printf "%s'$lib64'\n", $1 |
||||
} |
||||
}' |
||||
done | xargs -r -n 1 basename | sort -u |
||||
|
||||
# |
||||
# --- Library dependency sonames. |
||||
for f in $liblist; do |
||||
[ -r $f ] || continue |
||||
lib64=`if file -L $f 2>/dev/null | \ |
||||
grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi` |
||||
ldd $f | awk '/=>/ { |
||||
if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /libredhat-kernel.so/) { |
||||
gsub(/'\''"/,"\\&",$1); |
||||
printf "%s'$lib64'\n", $1 |
||||
} |
||||
}' |
||||
done | xargs -r -n 1 basename | sort -u |
||||
fi |
||||
|
||||
# |
||||
# --- Script interpreters. |
||||
for f in $scriptlist; do |
||||
[ -r $f -a -x $f ] || continue |
||||
interp=`head -n 1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1` |
||||
interplist="$interplist $interp" |
||||
case $interp in |
||||
*/perl) perllist="$perllist $f" ;; |
||||
esac |
||||
done |
||||
[ -n "$interplist" ] && { echo "$interplist" | tr '[:blank:]' \\n | sort -u ; } |
||||
|
||||
# |
||||
# --- Add perl module files to perllist. |
||||
for f in $filelist; do |
||||
[ -r $f -a "${f%.pm}" != "${f}" ] && perllist="$perllist $f" |
||||
done |
||||
|
||||
# |
||||
# --- Weak symbol versions (from glibc). |
||||
[ -n "$mark64" ] && mark64="(64bit)" |
||||
for f in $liblist $exelist ; do |
||||
[ -r $f ] || continue |
||||
lib64=`if file -L $f 2>/dev/null | \ |
||||
grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi` |
||||
$OBJDUMP -p $f | awk 'BEGIN { START=0; LIBNAME=""; needed='$needed'; } |
||||
/^$/ { START=0; } |
||||
/^Dynamic Section:$/ { START=1; } |
||||
(START==1) && /NEEDED/ { |
||||
if (needed) { |
||||
if ("'$lib64'" != "") { |
||||
sub(/$/, "()'$lib64'", $2) ; |
||||
} |
||||
print $2 ; |
||||
} |
||||
} |
||||
/^Version References:$/ { START=2; } |
||||
(START==2) && /required from/ { |
||||
sub(/:/, "", $3); |
||||
LIBNAME=$3; |
||||
} |
||||
(START==2) && (LIBNAME!="") && ($4!="") { |
||||
print LIBNAME "(" $4 ")'$lib64'"; |
||||
} |
||||
/^[A-Za-z]/ { START=3; } |
||||
' |
||||
done | sort -u |
||||
|
||||
# |
||||
# --- Perl modules. |
||||
[ -x /usr/lib/rpm/perl.req -a -n "$perllist" ] && \ |
||||
echo $perllist | tr '[:blank:]' \\n | /usr/lib/rpm/perl.req | sort -u |
||||
|
||||
# |
||||
# --- Python modules. |
||||
[ -x /usr/lib/rpm/redhat/python.req -a -n "$pythonlist" ] && \ |
||||
echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/python.req | sort -u |
||||
|
||||
# |
||||
# --- Tcl modules. |
||||
[ -x /usr/lib/rpm/redhat/tcl.req -a -n "$tcllist" ] && \ |
||||
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. |
||||
# |
||||
|
||||
unset is_kmod |
||||
|
||||
for f in $filelist; do |
||||
if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*).ko$:\2:p') ] |
||||
then |
||||
is_kmod=1; |
||||
elif [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ] |
||||
then |
||||
unset is_kmod; |
||||
break; |
||||
fi |
||||
done |
||||
|
||||
# Disabling for now while the Fedora kernel doesn't produce kABI deps. |
||||
#[ -x /usr/lib/rpm/redhat/find-requires.ksyms ] && [ "$is_kmod" ] && |
||||
# printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-requires.ksyms |
||||
|
||||
exit 0 |
@ -0,0 +1,48 @@
@@ -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 |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh |
||||
while read possible ; do |
||||
case "$possible" in |
||||
*.la) |
||||
for dep in `grep ^dependency_libs= "$possible" 2> /dev/null | \ |
||||
sed -r -e "s,^dependency_libs='(.*)',\1,g"` ; do |
||||
case "$dep" in |
||||
/*.la) |
||||
echo "libtool($dep)" |
||||
;; |
||||
esac |
||||
done |
||||
;; |
||||
esac |
||||
done |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash |
||||
pkgconfig=${1:-/usr/bin/pkg-config} |
||||
test -x $pkgconfig || exit 0 |
||||
while read filename ; do |
||||
case "${filename}" in |
||||
*.pc) |
||||
$pkgconfig --print-requires "$filename" 2> /dev/null | while read n r v ; do |
||||
echo "pkgconfig($n)" "$r" "$v" |
||||
done |
||||
esac |
||||
done |
@ -0,0 +1,267 @@
@@ -0,0 +1,267 @@
|
||||
#!/bin/bash |
||||
|
||||
# kmodtool - Helper script for building kernel module RPMs |
||||
# Copyright (c) 2003-2006 Ville Skyttä <ville.skytta@iki.fi>, |
||||
# Thorsten Leemhuis <fedora@leemhuis.info> |
||||
# Jon Masters <jcm@redhat.com> |
||||
# |
||||
# Permission is hereby granted, free of charge, to any person obtaining |
||||
# a copy of this software and associated documentation files (the |
||||
# "Software"), to deal in the Software without restriction, including |
||||
# without limitation the rights to use, copy, modify, merge, publish, |
||||
# distribute, sublicense, and/or sell copies of the Software, and to |
||||
# permit persons to whom the Software is furnished to do so, subject to |
||||
# the following conditions: |
||||
# |
||||
# The above copyright notice and this permission notice shall be |
||||
# included in all copies or substantial portions of the Software. |
||||
# |
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
||||
shopt -s extglob |
||||
|
||||
myprog="kmodtool" |
||||
myver="0.10.10_kmp2" |
||||
knownvariants=@(BOOT|PAE|@(big|huge)mem|debug|enterprise|kdump|?(large)smp|uml|xen[0U]?(-PAE)|xen) |
||||
kmod_name= |
||||
kver= |
||||
verrel= |
||||
variant= |
||||
kmp= |
||||
|
||||
get_verrel () |
||||
{ |
||||
verrel=${1:-$(uname -r)} |
||||
verrel=${verrel%%$knownvariants} |
||||
} |
||||
|
||||
print_verrel () |
||||
{ |
||||
get_verrel $@ |
||||
echo "${verrel}" |
||||
} |
||||
|
||||
get_variant () |
||||
{ |
||||
get_verrel $@ |
||||
variant=${1:-$(uname -r)} |
||||
variant=${variant##$verrel} |
||||
variant=${variant:-'""'} |
||||
} |
||||
|
||||
print_variant () |
||||
{ |
||||
get_variant $@ |
||||
echo "${variant}" |
||||
} |
||||
|
||||
get_rpmtemplate () |
||||
{ |
||||
local variant="${1}" |
||||
local dashvariant="${variant:+-${variant}}" |
||||
case "$verrel" in |
||||
*.el*) kdep="kernel${dashvariant}-%{_target_cpu} = ${verrel}" ;; |
||||
*.EL*) kdep="kernel${dashvariant}-%{_target_cpu} = ${verrel}" ;; |
||||
*) kdep="kernel-%{_target_cpu} = ${verrel}${variant}" ;; |
||||
esac |
||||
|
||||
echo "%package -n kmod-${kmod_name}${dashvariant}" |
||||
|
||||
if [ -z "$kmp_provides_summary" ]; then |
||||
echo "Summary: ${kmod_name} kernel module(s)" |
||||
fi |
||||
|
||||
if [ -z "$kmp_provides_group" ]; then |
||||
echo "Group: System Environment/Kernel" |
||||
fi |
||||
|
||||
if [ ! -z "$kmp_version" ]; then |
||||
echo "Version: %{kmp_version}" |
||||
fi |
||||
|
||||
if [ ! -z "$kmp_release" ]; then |
||||
echo "Release: %{kmp_release}" |
||||
fi |
||||
|
||||
if [ ! -z "$kmp" ]; then |
||||
echo "%global _use_internal_dependency_generator 0" |
||||
fi |
||||
|
||||
cat <<EOF |
||||
Provides: kernel-modules = ${verrel}${variant} |
||||
Provides: ${kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} |
||||
EOF |
||||
|
||||
if [ -z "$kmp" ]; then |
||||
echo "Requires: ${kdep}" |
||||
fi |
||||
|
||||
# |
||||
# RHEL5 - Remove common package requirement on general kmod packages. |
||||
# Requires: ${kmod_name}-kmod-common >= %{?epoch:%{epoch}:}%{version} |
||||
# |
||||
|
||||
cat <<EOF |
||||
Requires(post): /sbin/depmod |
||||
Requires(postun): /sbin/depmod |
||||
EOF |
||||
|
||||
if [ "no" != "$kmp_nobuildreqs" ] |
||||
then |
||||
echo "BuildRequires: kernel${dashvariant}-devel-%{_target_cpu} = ${verrel}" |
||||
fi |
||||
|
||||
if [ "" != "$kmp_override_preamble" ] |
||||
then |
||||
cat "$kmp_override_preamble" |
||||
fi |
||||
|
||||
cat <<EOF |
||||
%description -n kmod-${kmod_name}${dashvariant} |
||||
This package provides the ${kmod_name} kernel modules built for the Linux |
||||
kernel ${verrel}${variant} for the %{_target_cpu} family of processors. |
||||
%post -n kmod-${kmod_name}${dashvariant} |
||||
if [ -e "/boot/System.map-${verrel}${variant}" ]; then |
||||
/sbin/depmod -aeF "/boot/System.map-${verrel}${variant}" "${verrel}${variant}" > /dev/null || : |
||||
fi |
||||
EOF |
||||
|
||||
if [ ! -z "$kmp" ]; then |
||||
cat <<EOF |
||||
|
||||
modules=( \$(find /lib/modules/${verrel}${variant}/extra/${kmod_name}) ) |
||||
if [ -x "/sbin/weak-modules" ]; then |
||||
printf '%s\n' "\${modules[@]}" \ |
||||
| /sbin/weak-modules --add-modules |
||||
fi |
||||
%preun -n kmod-${kmod_name}${dashvariant} |
||||
rpm -ql kmod-${kmod_name}${dashvariant} | grep '\.ko$' \ |
||||
> /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules |
||||
EOF |
||||
|
||||
fi |
||||
|
||||
cat <<EOF |
||||
%postun -n kmod-${kmod_name}${dashvariant} |
||||
/sbin/depmod -aF /boot/System.map-${verrel}${variant} ${verrel}${variant} &> /dev/null || : |
||||
EOF |
||||
|
||||
if [ ! -z "$kmp" ]; then |
||||
cat <<EOF |
||||
modules=( \$(cat /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules) ) |
||||
#rm /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules |
||||
if [ -x "/sbin/weak-modules" ]; then |
||||
printf '%s\n' "\${modules[@]}" \ |
||||
| /sbin/weak-modules --remove-modules |
||||
fi |
||||
EOF |
||||
fi |
||||
|
||||
echo "%files -n kmod-${kmod_name}${dashvariant}" |
||||
|
||||
if [ "" == "$kmp_override_filelist" ]; |
||||
then |
||||
echo "%defattr(644,root,root,755)" |
||||
echo "/lib/modules/${verrel}${variant}/" |
||||
echo "/lib/firmware/" |
||||
else |
||||
cat "$kmp_override_filelist" |
||||
fi |
||||
} |
||||
|
||||
print_rpmtemplate () |
||||
{ |
||||
kmod_name="${1}" |
||||
shift |
||||
kver="${1}" |
||||
get_verrel "${1}" |
||||
shift |
||||
if [ -z "${kmod_name}" ] ; then |
||||
echo "Please provide the kmodule-name as first parameter." >&2 |
||||
exit 2 |
||||
elif [ -z "${kver}" ] ; then |
||||
echo "Please provide the kver as second parameter." >&2 |
||||
exit 2 |
||||
elif [ -z "${verrel}" ] ; then |
||||
echo "Couldn't find out the verrel." >&2 |
||||
exit 2 |
||||
fi |
||||
|
||||
for variant in "$@" ; do |
||||
if [ "default" == "$variant" ]; |
||||
then |
||||
get_rpmtemplate "" |
||||
else |
||||
get_rpmtemplate "${variant}" |
||||
fi |
||||
done |
||||
} |
||||
|
||||
usage () |
||||
{ |
||||
cat <<EOF |
||||
You called: ${invocation} |
||||
|
||||
Usage: ${myprog} <command> <option>+ |
||||
Commands: |
||||
verrel <uname> |
||||
- Get "base" version-release. |
||||
variant <uname> |
||||
- Get variant from uname. |
||||
rpmtemplate <mainpgkname> <uname> <variants> |
||||
- Return a template for use in a source RPM |
||||
rpmtemplate_kmp <mainpgkname> <uname> <variants> |
||||
- Return a template for use in a source RPM with KMP dependencies |
||||
version |
||||
- Output version number and exit. |
||||
EOF |
||||
} |
||||
|
||||
invocation="$(basename ${0}) $@" |
||||
while [ "${1}" ] ; do |
||||
case "${1}" in |
||||
verrel) |
||||
shift |
||||
print_verrel $@ |
||||
exit $? |
||||
;; |
||||
variant) |
||||
shift |
||||
print_variant $@ |
||||
exit $? |
||||
;; |
||||
rpmtemplate) |
||||
shift |
||||
print_rpmtemplate "$@" |
||||
exit $? |
||||
;; |
||||
rpmtemplate_kmp) |
||||
shift |
||||
kmp=1 |
||||
print_rpmtemplate "$@" |
||||
exit $? |
||||
;; |
||||
version) |
||||
echo "${myprog} ${myver}" |
||||
exit 0 |
||||
;; |
||||
*) |
||||
echo "Error: Unknown option '${1}'." >&2 |
||||
usage >&2 |
||||
exit 2 |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
# Local variables: |
||||
# mode: sh |
||||
# sh-indentation: 2 |
||||
# indent-tabs-mode: nil |
||||
# End: |
||||
# ex: ts=2 sw=2 et |
@ -0,0 +1,274 @@
@@ -0,0 +1,274 @@
|
||||
# Per-platform rpm configuration file. |
||||
|
||||
#============================================================================== |
||||
# ---- per-platform macros. |
||||
# |
||||
%_vendor powerel |
||||
%_os linux |
||||
%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu} |
||||
|
||||
#============================================================================== |
||||
# ---- configure macros. note that most of these are inherited |
||||
# from the defaults. |
||||
# |
||||
%_prefix /usr |
||||
%_sysconfdir /etc |
||||
%_localstatedir /var |
||||
%_infodir /usr/share/info |
||||
%_mandir /usr/share/man |
||||
|
||||
%_defaultdocdir %{_usr}/share/doc |
||||
|
||||
%_fmoddir %{_libdir}/gfortran/modules |
||||
|
||||
%_enable_debug_packages 1 |
||||
|
||||
#============================================================================== |
||||
# ---- configure and makeinstall. |
||||
# |
||||
%_configure ./configure |
||||
%configure \ |
||||
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \ |
||||
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \ |
||||
FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \ |
||||
%{_configure} --build=%{_build} --host=%{_host} \\\ |
||||
--program-prefix=%{?_program_prefix} \\\ |
||||
--disable-dependency-tracking \\\ |
||||
--prefix=%{_prefix} \\\ |
||||
--exec-prefix=%{_exec_prefix} \\\ |
||||
--bindir=%{_bindir} \\\ |
||||
--sbindir=%{_sbindir} \\\ |
||||
--sysconfdir=%{_sysconfdir} \\\ |
||||
--datadir=%{_datadir} \\\ |
||||
--includedir=%{_includedir} \\\ |
||||
--libdir=%{_libdir} \\\ |
||||
--libexecdir=%{_libexecdir} \\\ |
||||
--localstatedir=%{_localstatedir} \\\ |
||||
--sharedstatedir=%{_sharedstatedir} \\\ |
||||
--mandir=%{_mandir} \\\ |
||||
--infodir=%{_infodir} |
||||
|
||||
%makeinstall \ |
||||
%{__make} \\\ |
||||
prefix=%{?buildroot:%{buildroot}}%{_prefix} \\\ |
||||
exec_prefix=%{?buildroot:%{buildroot}}%{_exec_prefix} \\\ |
||||
bindir=%{?buildroot:%{buildroot}}%{_bindir} \\\ |
||||
sbindir=%{?buildroot:%{buildroot}}%{_sbindir} \\\ |
||||
sysconfdir=%{?buildroot:%{buildroot}}%{_sysconfdir} \\\ |
||||
datadir=%{?buildroot:%{buildroot}}%{_datadir} \\\ |
||||
includedir=%{?buildroot:%{buildroot}}%{_includedir} \\\ |
||||
libdir=%{?buildroot:%{buildroot}}%{_libdir} \\\ |
||||
libexecdir=%{?buildroot:%{buildroot}}%{_libexecdir} \\\ |
||||
localstatedir=%{?buildroot:%{buildroot}}%{_localstatedir} \\\ |
||||
sharedstatedir=%{?buildroot:%{buildroot}}%{_sharedstatedir} \\\ |
||||
mandir=%{?buildroot:%{buildroot}}%{_mandir} \\\ |
||||
infodir=%{?buildroot:%{buildroot}}%{_infodir} \\\ |
||||
install |
||||
|
||||
%_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\ |
||||
&& RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\ |
||||
if [ "$RPM_BUILD_NCPUS" -gt 16 ]; then echo "-j16"; \\\ |
||||
elif [ "$RPM_BUILD_NCPUS" -gt 1 ]; then echo "-j$RPM_BUILD_NCPUS"; fi) |
||||
|
||||
#============================================================================== |
||||
# ---- Build policy macros. |
||||
# |
||||
# |
||||
#--------------------------------------------------------------------- |
||||
# Expanded at beginning of %install scriptlet. |
||||
# |
||||
|
||||
%__spec_install_pre %{___build_pre}\ |
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ |
||||
mkdir -p `dirname "$RPM_BUILD_ROOT"`\ |
||||
mkdir "$RPM_BUILD_ROOT"\ |
||||
%{nil} |
||||
|
||||
#--------------------------------------------------------------------- |
||||
# Expanded at end of %install scriptlet. |
||||
# |
||||
|
||||
%__arch_install_post /usr/lib/rpm/check-buildroot |
||||
|
||||
%__os_install_post \ |
||||
/usr/lib/rpm/redhat/brp-compress \ |
||||
%{!?__debug_package:/usr/lib/rpm/redhat/brp-strip %{__strip}} \ |
||||
/usr/lib/rpm/redhat/brp-strip-static-archive %{__strip} \ |
||||
/usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} \ |
||||
/usr/lib/rpm/brp-python-bytecompile %{__python} \ |
||||
/usr/lib/rpm/redhat/brp-python-hardlink \ |
||||
%{!?__jar_repack:/usr/lib/rpm/redhat/brp-java-repack-jars} \ |
||||
%{nil} |
||||
|
||||
# /usr/lib/rpm/redhat/brp-implant-ident-static |
||||
|
||||
%__spec_install_post\ |
||||
%{?__debug_package:%{__debug_install_post}}\ |
||||
%{__arch_install_post}\ |
||||
%{__os_install_post}\ |
||||
%{nil} |
||||
|
||||
|
||||
# Template for debug information sub-package. |
||||
# NOTE: This is a copy from rpm to get the ifnarch noarch fix, it can be removed later |
||||
%debug_package \ |
||||
%ifnarch noarch\ |
||||
%global __debug_package 1\ |
||||
%package debuginfo \ |
||||
Summary: Debug information for package %{name}\ |
||||
Group: Development/Debug\ |
||||
AutoReqProv: 0\ |
||||
%description debuginfo\ |
||||
This package provides debug information for package %{name}.\ |
||||
Debug information is useful when developing applications that use this\ |
||||
package or when debugging this package.\ |
||||
%files debuginfo -f debugfiles.list\ |
||||
%defattr(-,root,root)\ |
||||
%endif\ |
||||
%{nil} |
||||
|
||||
# Bad hack to set $LANG to C during all RPM builds |
||||
%prep \ |
||||
%%prep\ |
||||
LANG=C\ |
||||
export LANG\ |
||||
unset DISPLAY\ |
||||
%{nil} |
||||
|
||||
%build %%build\ |
||||
LANG=C\ |
||||
export LANG\ |
||||
unset DISPLAY\ |
||||
%{nil} |
||||
|
||||
%install %{?_enable_debug_packages:%{?buildsubdir:%{debug_package}}}\ |
||||
%%install\ |
||||
LANG=C\ |
||||
export LANG\ |
||||
unset DISPLAY\ |
||||
%{nil} |
||||
|
||||
%check %%check\ |
||||
unset DISPLAY\ |
||||
%{nil} |
||||
|
||||
# |
||||
# use internal dep generator? |
||||
%_use_internal_dependency_generator 1 |
||||
|
||||
# |
||||
# Should missing %doc files terminate a build? |
||||
%_missing_doc_files_terminate_build 1 |
||||
# |
||||
# Should missing buildids terminate a build? |
||||
%_missing_build_ids_terminate_build 1 |
||||
|
||||
# |
||||
# Should unpackaged files in a build root terminate a build? |
||||
%_unpackaged_files_terminate_build 1 |
||||
|
||||
# Use SHA-256 for FILEDIGESTS instead of default MD5 |
||||
%_source_filedigest_algorithm 8 |
||||
%_binary_filedigest_algorithm 8 |
||||
|
||||
# Use XZ compression for binary payloads |
||||
%_binary_payload w2.xzdio |
||||
|
||||
%__find_provides /usr/lib/rpm/redhat/find-provides |
||||
%__find_requires /usr/lib/rpm/redhat/find-requires |
||||
|
||||
%__global_cflags -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 |
||||
|
||||
# Use these macros to differentiate between RH and other KMP implementation(s). |
||||
redhat_kernel_module_package 1 |
||||
kernel_module_package_release 1 |
||||
|
||||
#kernel_module_package [ -n name ] [ -v version ] [ -r release ] [ -s script ] |
||||
# [ -f filelist] [ -x ] [ -p preamble ] flavor flavor ... |
||||
|
||||
%kernel_module_package_buildreqs %global kmodtool_generate_buildreqs 1 \ |
||||
kernel-devel |
||||
|
||||
%kernel_module_package(n:v:r:s:f:xp:) %{expand:%( \ |
||||
%define kmodtool %{-s*}%{!-s:/usr/lib/rpm/redhat/kmodtool} \ |
||||
%define kmp_version %{-v*}%{!-v:%{version}} \ |
||||
%define kmp_release %{-r*}%{!-r:%{release}} \ |
||||
%define latest_kernel %(rpm -q --qf '%{VERSION}-%{RELEASE}\\\\n' `rpm -q kernel-devel | /usr/lib/rpm/redhat/rpmsort -r | head -n 1` | head -n 1) \ |
||||
%{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \ |
||||
%global kverrel %(%{kmodtool} verrel %{?kernel_version} 2>/dev/null) \ |
||||
flavors="default" \ |
||||
if [ "i686" == "%{_target_cpu}" ] || [ "x86_64" == "%{_target_cpu}" ] \ |
||||
then \ |
||||
xenver=$(rpm -q kernel-xen-devel-%{kverrel}|head -n 1)\ |
||||
kdver=$(rpm -q kernel-kdump-devel-%{kverrel}|head -n 1)\ |
||||
if [ "kernel-xen-devel-%{kverrel}" == "$xenver" ] \ |
||||
then \ |
||||
flavors="$flavors xen" \ |
||||
fi \ |
||||
if [ "kernel-kdump-devel-%{kverrel}" == "$kdver" ] \ |
||||
then \ |
||||
flavors="$flavors kdump" \ |
||||
fi \ |
||||
fi \ |
||||
if [ -z "%*" ]; then \ |
||||
flavors_to_build=$flavors \ |
||||
elif [ -z "%{-x}" ]; then \ |
||||
flavors_to_build="%*" \ |
||||
else \ |
||||
flavors_to_build=" $flavors "\ |
||||
echo "[$flavors_to_build]" >/tmp/tmp.txt |
||||
for i in %* \ |
||||
do \ |
||||
flavors_to_build=${flavors_to_build//$i /} |
||||
done \ |
||||
fi \ |
||||
echo "%%global flavors_to_build ${flavors_to_build:-%%nil}" \ |
||||
echo "%%global kernel_source() /usr/src/kernels/%kverrel-\\\$([ %%%%{1} = default ] || echo "%%%%{1}-")%_target_cpu" \ |
||||
if [ ! -z "%{-f*}" ] \ |
||||
then \ |
||||
filelist="%{-f*}" \ |
||||
fi \ |
||||
if [ ! -z "%{-p*}" ] \ |
||||
then \ |
||||
preamble="%{-p*}" \ |
||||
fi \ |
||||
if [ -z "%{kmodtool_generate_buildreqs}" ] \ |
||||
then \ |
||||
nobuildreqs="yes" \ |
||||
fi \ |
||||
kmp_override_filelist="$filelist" kmp_override_preamble="$preamble" kmp_nobuildreqs="$buildreqs" %{kmodtool} rpmtemplate_kmp %{-n*}%{!-n:%name} %{kverrel} $flavors_to_build 2>/dev/null \ |
||||
)} |
||||
|
||||
#============================================================================== |
||||
# ---- Generic auto req/prov filtering macros |
||||
# |
||||
# http://fedoraproject.org/wiki/PackagingDrafts/AutoProvidesAndRequiresFiltering |
||||
|
||||
# prevent anything matching from being scanned for provides |
||||
%filter_provides_in(P) %{expand: \ |
||||
%global __filter_prov_cmd %{?__filter_prov_cmd} %{__grep} -v %{-P} '%*' | \ |
||||
} |
||||
|
||||
# prevent anything matching from being scanned for requires |
||||
%filter_requires_in(P) %{expand: \ |
||||
%global __filter_req_cmd %{?__filter_req_cmd} %{__grep} -v %{-P} '%*' | \ |
||||
} |
||||
|
||||
# filter anything matching out of the provides stream |
||||
%filter_from_provides() %{expand: \ |
||||
%global __filter_from_prov %{?__filter_from_prov} | %{__sed} -e '%*' \ |
||||
} |
||||
|
||||
# filter anything matching out of the requires stream |
||||
%filter_from_requires() %{expand: \ |
||||
%global __filter_from_req %{?__filter_from_req} | %{__sed} -e '%*' \ |
||||
} |
||||
|
||||
# actually set up the filtering bits |
||||
%filter_setup %{expand: \ |
||||
%global _use_internal_dependency_generator 0 \ |
||||
%global __deploop() while read FILE; do /usr/lib/rpm/rpmdeps -%{1} ${FILE}; done | /bin/sort -u \ |
||||
%global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \ |
||||
%global __find_requires /bin/sh -c "%{?__filter_req_cmd} %{__deploop R} %{?__filter_from_req}" \ |
||||
} |
||||
|
@ -0,0 +1,80 @@
@@ -0,0 +1,80 @@
|
||||
include: /usr/lib/rpm/rpmrc |
||||
|
||||
optflags: i386 %{__global_cflags} -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables |
||||
optflags: i486 %{__global_cflags} -m32 -march=i486 -fasynchronous-unwind-tables |
||||
optflags: i586 %{__global_cflags} -m32 -march=i586 -mtune=generic -fasynchronous-unwind-tables |
||||
optflags: i686 %{__global_cflags} -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables |
||||
optflags: athlon %{__global_cflags} -m32 -march=athlon -fasynchronous-unwind-tables |
||||
optflags: ia64 %{__global_cflags} |
||||
optflags: x86_64 %{__global_cflags} -m64 -mtune=generic |
||||
|
||||
optflags: alpha %{__global_cflags} -mieee |
||||
optflags: alphaev5 %{__global_cflags} -mieee -mcpu=ev5 |
||||
optflags: alphaev56 %{__global_cflags} -mieee -mcpu=ev56 |
||||
optflags: alphapca56 %{__global_cflags} -mieee -mcpu=pca56 |
||||
optflags: alphaev6 %{__global_cflags} -mieee -mcpu=ev6 |
||||
optflags: alphaev67 %{__global_cflags} -mieee -mcpu=ev67 |
||||
|
||||
optflags: sparc %{__global_cflags} -m32 -mcpu=v7 -mtune=ultrasparc |
||||
optflags: sparcv8 %{__global_cflags} -m32 -mcpu=v8 |
||||
optflags: sparcv9 %{__global_cflags} -m32 -mcpu=ultrasparc |
||||
optflags: sparcv9v %{__global_cflags} -m32 -mcpu=niagara |
||||
optflags: sparc64 %{__global_cflags} -m64 -mcpu=ultrasparc |
||||
optflags: sparc64v %{__global_cflags} -m64 -mcpu=niagara |
||||
|
||||
optflags: m68k %{__global_cflags} |
||||
|
||||
optflags: ppc %{__global_cflags} -m32 |
||||
optflags: ppciseries %{__global_cflags} -m32 |
||||
optflags: ppcpseries %{__global_cflags} -m32 |
||||
optflags: ppc64 %{__global_cflags} -m64 -mminimal-toc |
||||
optflags: ppc64iseries %{__global_cflags} -m64 -mminimal-toc |
||||
optflags: ppc64pseries %{__global_cflags} -m64 -mminimal-toc |
||||
optflags: ppc8260 %{__global_cflags} -m32 |
||||
optflags: ppc8560 %{__global_cflags} -m32 |
||||
|
||||
optflags: parisc %{__global_cflags} -mpa-risc-1-0 |
||||
optflags: hppa1.0 %{__global_cflags} -mpa-risc-1-0 |
||||
optflags: hppa1.1 %{__global_cflags} -mpa-risc-1-0 |
||||
optflags: hppa1.2 %{__global_cflags} -mpa-risc-1-0 |
||||
optflags: hppa2.0 %{__global_cflags} -mpa-risc-1-0 |
||||
|
||||
optflags: mips %{__global_cflags} |
||||
optflags: mipsel %{__global_cflags} |
||||
|
||||
optflags: armv3l %{__global_cflags} -fsigned-char -march=armv3 |
||||
optflags: armv4b %{__global_cflags} -fsigned-char -march=armv4 |
||||
optflags: armv4l %{__global_cflags} -fsigned-char -march=armv4 |
||||
optflags: armv4tl %{__global_cflags} -march=armv4t |
||||
optflags: armv5tel %{__global_cflags} -march=armv5te |
||||
optflags: armv5tejl %{__global_cflags} -march=armv5te |
||||
optflags: armv6l %{__global_cflags} -march=armv6 |
||||
optflags: armv7l %{__global_cflags} -march=armv7 |
||||
|
||||
optflags: atarist %{__global_cflags} |
||||
optflags: atariste %{__global_cflags} |
||||
optflags: ataritt %{__global_cflags} |
||||
optflags: falcon %{__global_cflags} |
||||
optflags: atariclone %{__global_cflags} |
||||
optflags: milan %{__global_cflags} |
||||
optflags: hades %{__global_cflags} |
||||
|
||||
optflags: s390 %{__global_cflags} -m31 -march=z9-109 -mtune=z10 |
||||
optflags: s390x %{__global_cflags} -m64 -march=z9-109 -mtune=z10 |
||||
|
||||
# set build arch to fedora buildarches on hardware capable of running it |
||||
# saves having to do rpmbuild --target= |
||||
buildarchtranslate: athlon: i686 |
||||
buildarchtranslate: geode: i686 |
||||
buildarchtranslate: pentium4: i686 |
||||
buildarchtranslate: pentium3: i686 |
||||
buildarchtranslate: i686: i686 |
||||
buildarchtranslate: i586: i586 |
||||
|
||||
buildarchtranslate: sparcv9: sparcv9 |
||||
buildarchtranslate: sparcv9v: sparcv9 |
||||
|
||||
buildarchtranslate: armv5tejl: armv5tel |
||||
buildarchtranslate: armv6l: armv5tel |
||||
buildarchtranslate: armv7l: armv5tel |
||||
|
@ -0,0 +1,76 @@
@@ -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); |
||||
} |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
#! /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 /usr/src/kernels/*/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