linux-firmware/debian-firmware/debian/scripts/create-quilt-series
2023-03-03 23:53:16 +03:00

72 lines
1.5 KiB
Bash
Executable File

#!/bin/bash -eu
#
# Create quilt patch series and include-binaries file
#
function out()
{
local rc=${?}
trap - EXIT INT TERM HUP
if [ ${rc} -ne 0 ] ; then
echo "Error: Script failed" >&2
fi
exit "${rc}"
}
function add_file()
{
local added=${1} name=${2}
if [ -z "${name}" ] || [ "${name#debian/}" != "${name}" ] ; then
# Empty name or debian/* file
return
fi
if [ -h "${name}" ] ; then
# Symlink
BINARIES+=("${name}")
PATCHABLES+=("${name}")
elif [ "${added}" = "-" ] ; then
# Binary file
BINARIES+=("${name}")
else
# Patchable file
PATCHABLES+=("${name}")
fi
}
trap out EXIT INT TERM HUP
# Current upstream commit
version=$(dpkg-parsechangelog -Sversion)
upstream=${version#*.git}
upstream=${upstream%%-*}
BINARIES=()
PATCHABLES=()
# Walk through all touched files and separate them into binaries that need to
# be included and patchable files
while IFS=" " read -r added name new_name ; do
add_file "${added}" "${name}"
add_file "${added}" "${new_name}"
done < <(git diff --numstat "${upstream}" | awk '{ print $1 " " $3 " " $5 }')
if [ ${#BINARIES[@]} -gt 0 ] ; then
echo "Create debian/source/include-binaries ..."
printf "%s\n" "${BINARIES[@]}" > debian/source/include-binaries
fi
rm -rf debian/patches
install -d debian/patches
if [ ${#PATCHABLES[@]} -gt 0 ] ; then
echo "Create debian/patches/ubuntu.patch ..."
for patchable in "${PATCHABLES[@]}" ; do
git diff "${upstream}" -- "${patchable}"
done > debian/patches/ubuntu.patch
echo ubuntu.patch > debian/patches/series
fi