1
0
This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
2024-07-22 01:58:46 -03:00

105 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
TMP=${TMPDIR:-/usr/tmp}
ARCH=/home/almesber/l/arch
KPATH=/usr/src:/home/almesber/k
del_new=true
if [ "$1" = -keep -o "$1" = --keep ]; then
del_new=false
shift
fi
if [ -z "$*" ]; then
if [ ! -r VERSION ]; then
echo "need ./VERSION for fully automated procedure" 1>&2
exit 1
fi
read version <VERSION || exit 1
second=$ARCH/atm-$version.tar.gz
first=$ARCH/`cd $ARCH; ls -t1 atm-*.tar.gz |
sed "/atm-$version\.tar\.gz/{n;q;};d" | tail -1`
if [ ! -r $first -o ! -r $second ]; then
echo "automatic detection didn't work" 1>&2
exit 1
fi
else
if [ -r "$1" ] && echo $1 | grep ^/ >/dev/null 2>&1; then
first=$1
else
first=$ARCH/$1
if [ ! -r $first ]; then
echo "$1: not found (also tried $first)" 1>&2
exit 1
fi
fi
if [ -r "$2" ] && echo $2 | grep ^/ >/dev/null 2>&1; then
second=$2
else
second=`dirname $first`/$2
if [ ! -r $second ]; then
echo "$2: not found (also tried $second)" 1>&2
exit 1
fi
fi
fi
echo $first '->' $second
cd $TMP || exit 1
mkdir old new || exit 1
cd old
tar xfz $first || exit 1
cd ../new
tar xfz $second || exit 1
cd ..
for n in old new; do
cd $n
{
read version
read version
read preversion || true
} <atm/.kernel || exit 1
if [ -z "$preversion" ]; then
kernel=linux-$version.tar
else
kernel=linux-$version.tar
patch=$preversion
fi
for m in `echo $KPATH | tr : ' '`; do
if [ -r $m/$kernel.gz -o -r $m/$kernel.bz2 ]; then
break
fi
done
if [ -r $m/$kernel.gz ]; then
tar xfz $m/$kernel.gz || exit 1
elif [ -r $m/$kernel.bz2 ]; then
bunzip2 < $m/$kernel.bz2 | tar xf - || exit 1
else
echo "no kernel $kernel ($version) found in $KPATH" 1>&2
exit 1
fi
if [ ! -z "$patch" ]; then
for m in `echo $KPATH | tr : ' '`; do
if [ -r $m/$patch.gz -o -r $m/$patch.bz2 ]; then
break
fi
done
if [ -r $m/$patch.gz ]; then
zcat $m/$patch.gz | patch -p0 -s || exit 1
elif [ -r $m/$patch.bz2 ]; then
bunzip2 < $m/$patch.bz2 | patch -p0 -s || exit 1
else
echo "no patch $patch ($version) found in $KPATH" 1>&2
exit 1
fi
fi
cd linux
patch -s -p1 <../atm/atm*.patch || exit 1
find . -name \*.orig -exec rm {} \;
cd ../..
done
base=`basename $second .tar.gz`
diff -ur --new-file old/linux new/linux >$base.kernel-diff
diff -ur --new-file old/atm new/atm >$base.dist-diff
gzip -9 -f $base.kernel-diff || exit 1
gzip -9 -f $base.dist-diff || exit 1
rm -rf old
if $del_new; then rm -rf new; fi