kernel/scripts/check-patchlist.sh

114 lines
3.0 KiB
Bash
Raw Normal View History

#! /bin/sh
# This script was created in a effort to make patch management a bit easier.
# It list all the patches in the current tree and identifies if they are
# present in the kernel.spec, PatchList.txt, both files or neither.
#
# eg. ./check-patchlist.sh [optional flag]
function usage(){
echo "List all the patches currently in the tree. It also helps identify"
echo "if the patch is present in kernel.spec or PatchList.txt. "
echo "-h, --help "
echo "-t, --tracked patches in both kernel.spec and PatchList.txt "
echo "-p, --patchlist patches added to PatchList.txt. "
echo "-s, --specfile patches added to kernel.spec. "
echo "-n, --not-tracked patches in the tree but not in PatchList.txt "
echo " or kernel.spec "
}
BASEDIR=$(dirname "$( cd $(dirname $BASH_SOURCE[0]) && pwd)")
pushd $BASEDIR > /dev/null
function list_all(){
echo "===========Legend==========================="
echo ". In kernel.spec "
echo "* In PatchList.txt "
echo "+ In PatchList.txt & Kernel.spec "
echo "- Neither in PatchList.txt nor kernel.spec"
echo "============================================"
for patch in $(ls *.patch); do
if [ ! -z "$(grep $patch PatchList.txt)" ] && [ ! -z "$(grep $patch kernel.spec)" ]
then
echo "+ ${patch}" # Patches in kernel.spec and PatchList.txt
elif [ ! -z "$(grep $patch PatchList.txt)" ] && [ -z "$(grep $patch kernel.spec)" ]
then
echo "* ${patch}" # Patches in PatchList.txt but not in kernel.spec
elif [ -z "$(grep $patch PatchList.txt)" ] && [ ! -z "$(grep $patch kernel.spec)" ]
then
echo ". ${patch}" # Patches in kernel.spec but not in PatchList.txt
else
echo "- ${patch}" # Neither in PatchList.txt nor kernel.spec
fi
done
}
function list_present_not_added(){
for patch in $(ls *.patch); do
if [ -z "$(grep $patch PatchList.txt)" ] && [ -z "$(grep $patch kernel.spec)" ]
then
echo $patch
fi
done
}
function list_present_added(){
for patch in $(ls *.patch); do
if [ ! -z "$(grep $patch PatchList.txt)" ] && [ ! -z "$(grep $patch kernel.spec)" ]
then
echo $patch
fi
done
}
function list_patchList(){
for patch in $(ls *.patch); do
if [ ! -z "$(grep $patch PatchList.txt)" ] && [ -z "$(grep $patch kernel.spec)" ]
then
echo $patch
fi
done
}
function list_specfile(){
for patch in $(ls *.patch); do
if [ -z "$(grep $patch PatchList.txt)" ] && [ ! -z "$(grep $patch kernel.spec)" ]
then
echo $patch
fi
done
}
if [ -z "$@" ]; then
list_all
else
for opt in "$@"; do
case $opt in
-t|--tracked)
list_present_added
;;
-s|--specfile)
list_specfile
;;
-h|--help)
usage
;;
-n|--not-added)
list_present_not_added
;;
-p|--patchlist)
list_patchList
;;
*)
usage
;;
esac
done
fi
popd > /dev/null