blob: 2bacc9617efeaa3c5fcfa5344b2be8d924e2e2fe [file] [log] [blame]
#!/bin/bash
# Parses Kconfig lines like
# CONFIG_DEBUG=y >=6.1
# # CONFIG_DEBUG is not set <6.1
# and only adds them to the build if the kernel is 6.1 or greater
# Regular lines are unchanged
version="$1"
shift
for file in "$@"; do
echo "Trimming $file to $version" >&2
exec {nfile}<>"$file.tmp"
while read -r line; do
larr=($line)
if [[ ${larr[0]} == '#' ]]; then
key="${larr[1]}"
val='n'
larr=("${larr[@]:5}")
else
key="${larr[0]%%=*}"
val="${larr[0]#*=}"
larr=("${larr[@]:1}")
fi
skip=
for const in "${larr[@]}"; do
if [[ "${const:0:1}" == '#' ]]; then
break
elif [[ ${const:0:2} == '>=' ]]; then
expected="${const:2}"$'\n'"$version"
if [[ $expected != $(echo "$expected" | sort -V) ]]; then
skip=1
break
fi
elif [[ ${const:0:1} == '>' ]]; then
expected="${const:1}"$'\n'"$version"
if [[ ${const:1} == $version || $expected != $(echo "$expected" | sort -V) ]]; then
skip=1
break
fi
elif [[ ${const:0:2} == '<=' ]]; then
expected="$version"$'\n'"${const:2}"
if [[ $expected != $(echo "$expected" | sort -V) ]]; then
skip=1
break
fi
elif [[ ${const:0:1} == '<' ]]; then
expected="$version"$'\n'"${const:1}"
if [[ ${const:1} == $version || $expected != $(echo "$expected" | sort -V) ]]; then
skip=1
break
fi
else
echo "Unexpected version comparison '$const' at line: $line" >&2
exit 1
fi
done
if [[ -z $skip ]]; then
echo "$key=$val" >&$nfile
fi
done < <(grep '^\(# \)\?CONFIG_' "$file")
exec {nfile}>&-
mv "$file.tmp" "$file"
done