File makespec.sh of Package kernel-firmware

#!/bin/sh
#
# makespec.sh VERSION < kernel-firmware.spec.in > kernel-firmware.spec
#

version="$1"

topics=$(awk '{print $1}' topicdefs)

define_subpackage () {
    local topic="$1"
    local desc=$(grep '^'"$topic"'[[:space:]]' topicdefs | sed -e's/^[a-zA-Z0-9-]*[[:space:]]*//')
    echo "%package $topic"
    echo "Summary:        Kernel firmware files for $desc"
    echo "Group:          System/Kernel"
    echo "Requires(post): coreutils"
    echo "Requires(postun): coreutils"
    echo "Requires(post): dracut >= 049"
    echo "Conflicts:      kernel < 5.3"
    grep "^${topic}:" topicprovs | sed -e's/^[^ \t]*:[[:space:]]*//g'
    sh ./get_supplements.sh $topic
    echo
    echo "%description $topic"
    echo "This package contains compressed kernel firmware files for"
    echo "$desc."
    echo
}

define_post () {
    local l="$*"
    test -n "$l" && l=" $l"
    echo "%post$l"
    echo "%{?regenerate_initrd_post}"
    echo "%postun$l"
    echo "%{?regenerate_initrd_post}"
    echo "%posttrans$l"
    echo "%{?regenerate_initrd_posttrans}"
}

sed -e"s/@@VERSION@@/$version/g" | while read line; do
    if [ "$line" = "@@ALLPROVS@@" ]; then
	sed -e's/^[^ \t]*:[[:space:]]*//g' topicprovs
	continue
    fi
    if [ "$line" = "@@SUBPKGLIST@@" ]; then
	for t in $topics; do
	    echo "Requires:       %{name}-$t = %{version}"
	done
	continue
    fi
    if [ "$line" = "@@SUBPACKAGES@@" ]; then
	for t in $topics; do
	    define_subpackage $t
	done
	continue
    fi
    case "$line" in
	@@POST@@*)
	    define_post $(echo "$line" | sed -e's/^@@POST@@ *//')
	    continue;;
    esac
    if [ "$line" = "@@SUBPKGPOSTS@@" ]; then
	for t in $topics; do
	    define_post $t
	done
	continue
    fi
    if [ "$line" = "@@SUBPKGFILES@@" ]; then
	for t in $topics; do
	    echo "%files -f files-$t $t"
	done
	continue
    fi
    echo "$line"
done

exit 0