scripts to check capi stuff against a kernel.

This commit is contained in:
Carsten Paeth 2000-11-01 14:02:37 +00:00
parent cc3077b26e
commit 974aabdb12
2 changed files with 419 additions and 0 deletions

249
capi2kern Executable file
View File

@ -0,0 +1,249 @@
#!/bin/sh
KERNELDIR=/usr/src/Linux-Kernel/v2.2.18-pre9
KERNELDIR=/usr/src/Linux-Kernel/v2.2.17-pre5
KERNELDIR=/usr/src/Linux-Kernel/v2.2.15
KERNELDIR=/usr/src/linux
DOCP=docpd
PREPARSER="./preparser"
UNIQUE=false
VERBOSE=false
NOTEST=true
docpd() {
if ! cmp -s $1 $2 ; then
if $NOTEST ; then
echo Copying $1 ...
mkdir -p `dirname $2`
cp $1 $2
else
echo $1 was changed
fi
else
if $VERBOSE ; then
echo $2 is up to date, NOT converted
fi
fi
}
docp() {
if [ $1 -nt $2 -o ! -f $2 ] ; then
if $NOTEST ; then
echo Copying $1 ...
mkdir -p `dirname $2`
cp $1 $2
else
echo $1 was changed
fi
else
if $VERBOSE ; then
echo $2 is up to date, NOT converted
fi
fi
}
docpuni() {
if $VERBOSE ; then
echo -n "Processing $1 ... "
fi
TMPNAME=/tmp/`basename $1`.$$
$PREPARSER -c $CTRLNAME $1 $TMPNAME
RES=$?
if [ "$RES" -eq "0" ] ; then
if ! cmp -s $1 $2 ; then
if $NOTEST ; then
if $VERBOSE ; then
echo copying original
else
echo "Processing $1 ... copying original"
fi
mkdir -p `dirname $2`
cp $1 $2
else
if $VERBOSE ; then
echo original was changed
else
echo "Processing $1 ... original was changed"
fi
fi
else
if $VERBOSE ; then
echo original file is up to date
fi
fi
rm $TMPNAME
return 0
fi
if [ "$RES" -eq "2" ] ; then
if ! cmp -s $TMPNAME $2 ; then
if $NOTEST ; then
if $VERBOSE ; then
echo copying modified
else
echo "Processing $1 ... copying modified"
fi
mkdir -p `dirname $2`
cp $TMPNAME $2
else
if $VERBOSE ; then
echo modified was changed
else
echo "Processing $1 ... modified was changed"
fi
fi
else
if $VERBOSE ; then
echo modified file is up to date
fi
fi
rm $TMPNAME
return 0
fi
echo
echo "problem with $PREPARSER retcode $RES"
exit 1
}
#
# Print usage and exit
#
usage() {
cat<<EOM
std2kern is used for updating your kernel-tree from within
this directory.
std2kern [-d] [-h] [-k DIR] [-v] [-u] [-c FILE] [files ...]
Options:
-h This Text.
-d Copy depends on modification date instead of file-compare.
-k DIR Kerneltree is in DIR instead of /usr/src/linux
-v More mesages about processing
-u Make a diff for a unique kernel-tree
(preprocessing with $PREPARSER)
-c FILE Use FILE as control file for $PREPARSER (only with -u)
-t Test, don't really copy files
Without any files given, within the whole tree, the "right"
files are copied. When any files are given in the commandline,
only those are copied.
EOM
exit
}
#
# Check, if argument is a linux kernel dir
#
checkkernel() {
if [ -f $1/Makefile ] ; then
if [ "`grep ^vmlinux: $1/Makefile | grep vmlinux`" != "" ] ; then
return 0
fi
fi
echo "The given argument does not look like a kernel dir"
exit 1
}
#
# Determine a control file name
#
calc_ctrl_file() {
eval `sed -n 's/^\([A-Z]*\) = \([0-9]*\)$/\1=\2/p' $KERNELDIR/Makefile`
echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL"
if [ -z "$CTRLNAME" ] ; then
CTRLNAME=v$VERSION.$PATCHLEVEL.$SUBLEVEL.ctrl
if [ -f $CTRLNAME ] ; then
return 0
fi
CTRLNAME=v$VERSION.$PATCHLEVEL.ctrl
if [ -f $CTRLNAME ] ; then
return 0
fi
CTRLNAME=default.ctrl
fi
if [ -f $CTRLNAME ] ; then
return 0
fi
echo "No control file found"
exit 1
}
while getopts :dhk:uc:vt a ; do
case $a in
\?) case $OPTARG in
k) echo "-k requires Kernel directory parameter"
;;
*) echo "Unknown option: -$OPTARG"
echo "Try std2kern -h"
;;
esac
exit 1
;;
k) checkkernel $OPTARG
KERNELDIR=$OPTARG
;;
c) CTRLNAME=$OPTARG
;;
u) UNIQUE=true
;;
v) VERBOSE=true
;;
t) NOTEST=false
;;
d) DOCP=docp
;;
h) usage
;;
esac
done
shift `expr $OPTIND - 1`
if $UNIQUE ; then
DOCP=docpuni
calc_ctrl_file
fi
echo -n "Using $DOCP"
if $UNIQUE ; then
echo " with controlfile $CTRLNAME"
else
echo
fi
if [ $# != 0 ]; then
for i in $* ; do
$DOCP $i $KERNELDIR/$i
done
else
for i in drivers/isdn/avmb1/*.[ch] ; do
$DOCP $i $KERNELDIR/$i
done
for i in \
include/linux/kernelcapi.h \
include/linux/capi.h \
include/linux/b1lli.h \
include/linux/b1pcmcia.h \
; do
$DOCP $i $KERNELDIR/$i
done
for i in drivers/isdn/avmb1/Makefile; do
if [ -f $i.kernel ] ; then
if $UNIQUE ; then
docpd $i.kernel $KERNELDIR/$i
else
$DOCP $i.kernel $KERNELDIR/$i
fi
else
if $UNIQUE ; then
docpd $i $KERNELDIR/$i
else
$DOCP $i $KERNELDIR/$i
fi
fi
done
fi

170
capidiff Executable file
View File

@ -0,0 +1,170 @@
#!/bin/sh
KERNELDIR=/usr/src/linux
KERNFIRST=false
PREPARSER="./preparser"
DODIFF=dodiff
UNIQUE=false
dodiff() {
if $KERNFIRST ; then
diff -u -bB $EXTRAOPT $2 $1
else
diff -u -bB $EXTRAOPT $1 $2
fi
}
dodiffuni() {
echo -n "Processing $1 ... "
TMPNAME=/tmp/`basename $1`.$$
$PREPARSER -c $CTRLNAME $1 $TMPNAME
RES=$?
if [ "$RES" -eq "0" ] ; then
echo diff original
dodiff $1 $2
rm $TMPNAME
return 0
fi
if [ "$RES" -eq "2" ] ; then
echo diff modified
dodiff $TMPNAME $2
rm $TMPNAME
return 0
fi
echo "problem with $PREPARSER retcode $RES"
exit 1
}
#
# Print usage and exit
#
usage() {
cat<<EOM
stddiff is used for generating diffs of the cvs-tree
versus the kernel-tree.
stddiff [-r] [-h] [-k DIR] [-u] [-c FILE] [-w] [files ...]
Options:
-h This Text.
-r Reverse direction (kernel versus cvs).
-k DIR Kerneltree is in DIR instead of /usr/src/linux
-u Make a diff for a unique kernel-tree
(preprocessing with $PREPARSER)
-c FILE Use FILE as control file for $PREPARSER (only with -u)
-w Ignore white space when comparing lines
Without any files given, within the whole tree, the "right"
files are diffed. When any files are given in the commandline,
only those are diffed.
EOM
exit
}
#
# Check, if argument is a linux kernel dir
#
checkkernel() {
if [ -f $1/Makefile ] ; then
if [ "`grep ^vmlinux: $1/Makefile | grep vmlinux`" != "" ] ; then
return 0
fi
fi
echo "The given argument does not look like a kernel dir"
exit 1
}
#
# Determine a control file name
#
calc_ctrl_file() {
eval `sed -n 's/^\([A-Z]*\) = \([0-9]*\)$/\1=\2/p' $KERNELDIR/Makefile`
echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL"
if [ -z "$CTRLNAME" ] ; then
CTRLNAME=v$VERSION.$PATCHLEVEL.$SUBLEVEL.ctrl
if [ -f $CTRLNAME ] ; then
return 0
fi
CTRLNAME=v$VERSION.$PATCHLEVEL.ctrl
if [ -f $CTRLNAME ] ; then
return 0
fi
CTRLNAME=default.ctrl
fi
if [ -f $CTRLNAME ] ; then
return 0
fi
echo "No control file found"
exit 1
}
while getopts :rhk:uc:w a ; do
case $a in
\?) case $OPTARG in
k) echo "-k requires Kernel directory parameter"
;;
*) echo "Unknown option: -$OPTARG"
echo "Try stddiff -h"
;;
esac
exit 1
;;
k) checkkernel $OPTARG
KERNELDIR=$OPTARG
;;
c) CTRLNAME=$OPTARG
;;
u) UNIQUE=true
;;
r) KERNFIRST=true
;;
w) EXTRAOPT=-w
;;
h) usage
;;
esac
done
shift `expr $OPTIND - 1`
if $UNIQUE ; then
DODIFF=dodiffuni
calc_ctrl_file
fi
echo -n "Using $DODIFF $EXTRAOPT"
if $UNIQUE ; then
echo " with controlfile $CTRLNAME"
else
echo
fi
if [ $# != 0 ]; then
for i in $* ; do
$DODIFF $i $KERNELDIR/$i
done
else
for i in drivers/isdn/avmb1/*.[ch] ; do
$DODIFF $i $KERNELDIR/$i
done
for i in \
include/linux/kernelcapi.h \
include/linux/capi.h \
include/linux/b1lli.h \
include/linux/b1pcmcia.h \
; do
$DODIFF $i $KERNELDIR/$i
done
for i in drivers/isdn/avmb1/Makefile ; do
if [ -f $i.kernel ] ; then
dodiff $i.kernel $KERNELDIR/$i
else
dodiff $i $KERNELDIR/$i
fi
done
fi