initial commit
imported from https://salsa.debian.org/kernel-team/linux.git commit 9d5cc9d9d6501d7f1dd7e194d4b245bd0b6c6a22 version 6.11.4-1
This commit is contained in:
140
debian/bin/test-patches
vendored
Executable file
140
debian/bin/test-patches
vendored
Executable file
@@ -0,0 +1,140 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
shopt -s extglob
|
||||
|
||||
# Set defaults from the running kernel
|
||||
arch="$(dpkg --print-architecture)"
|
||||
kernelabi="$(uname -r)"
|
||||
ff="${kernelabi##+([^-])-?(@(trunk|?(rc)+([0-9])|0.@(bpo|deb+([0-9])).+([0-9]))-)}"
|
||||
if [ "x$ff" != "x$kernelabi" ]; then
|
||||
flavour="${ff#rt-}"
|
||||
if [ "x$flavour" != "x$ff" ]; then
|
||||
featureset="${ff%-$flavour}"
|
||||
else
|
||||
featureset=none
|
||||
fi
|
||||
else
|
||||
flavour=
|
||||
featureset=none
|
||||
fi
|
||||
|
||||
dbginfo=
|
||||
fuzz=0
|
||||
jobs=$(nproc)
|
||||
|
||||
eval "set -- $(getopt -n "$0" -o "f:gj:s:" -l "fuzz:" -- "$@")"
|
||||
while true; do
|
||||
case "$1" in
|
||||
-f) flavour="$2"; shift 2 ;;
|
||||
-g) dbginfo=y; shift 1 ;;
|
||||
-j) jobs="$2"; shift 2 ;;
|
||||
-s) featureset="$2"; shift 2 ;;
|
||||
--fuzz) fuzz="$2"; shift 2;;
|
||||
--) shift 1; break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo >&2 "Usage: $0 [<options>] <patch>..."
|
||||
cat >&2 <<EOF
|
||||
Options:
|
||||
-f <flavour> specify the 'flavour' of kernel to build, e.g. 686-pae
|
||||
-g enable debug info
|
||||
-j <jobs> specify number of compiler jobs to run in parallel
|
||||
(default: number of available processors)
|
||||
-s <featureset> specify an optional featureset to apply, e.g. rt
|
||||
--fuzz <num> set the maximum patch fuzz factor (default: 0)
|
||||
EOF
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ -z "$flavour" ]; then
|
||||
echo >&2 "You must specify a flavour to build with the -f option"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
profiles=nodoc,noudeb,pkg.linux.nosource,pkg.linux.mintools
|
||||
if [ -z "$dbginfo" ]; then
|
||||
profiles="$profiles,pkg.linux.nokerneldbg,pkg.linux.nokerneldbginfo"
|
||||
fi
|
||||
|
||||
# Check build-dependencies early if possible
|
||||
if [ -f debian/control ]; then
|
||||
dpkg-checkbuilddeps -P"$profiles"
|
||||
fi
|
||||
|
||||
# Append 'a~test' to Debian version; this should be less than any official
|
||||
# successor and easily recognisable
|
||||
version="$(dpkg-parsechangelog | sed 's/^Version: //; t; d')"
|
||||
if [ "${version%a~test}" = "$version" ]; then
|
||||
version="$version"a~test
|
||||
dch -v "$version" --distribution UNRELEASED "Testing patches $*"
|
||||
fi
|
||||
|
||||
# Ignore user's .quiltrc
|
||||
alias quilt='quilt --quiltrc -'
|
||||
|
||||
# Try to clean up any previous test patches
|
||||
if [ "$featureset" = none ]; then
|
||||
patchdir=debian/patches
|
||||
while patch="$(quilt top 2>/dev/null)" && \
|
||||
[ "${patch#test/}" != "$patch" ]; do
|
||||
quilt pop -f
|
||||
done
|
||||
while patch="$(quilt next 2>/dev/null)" && \
|
||||
[ "${patch#test/}" != "$patch" ]; do
|
||||
quilt delete -r "$patch"
|
||||
done
|
||||
else
|
||||
patchdir=debian/patches-${featureset}
|
||||
sed -i '/^test\//d' $patchdir/series
|
||||
fi
|
||||
|
||||
# Prepare a new directory for the patches
|
||||
rm -rf $patchdir/test/
|
||||
mkdir $patchdir/test
|
||||
|
||||
# Prepare a new directory for the config; override ABI name, featuresets, flavours
|
||||
rm -rf debian/config.local
|
||||
mkdir debian/config.local debian/config.local/"$arch"
|
||||
for other_fs in none rt; do
|
||||
if [ "$other_fs" != "$featureset" ]; then
|
||||
cat >debian/config.local/defines.toml <<EOF
|
||||
[[featureset]]
|
||||
name = '$other_fs'
|
||||
enable = false
|
||||
EOF
|
||||
fi
|
||||
done
|
||||
cat >debian/config.local/"$arch"/defines.toml <<EOF
|
||||
[[featureset]]
|
||||
name = '$featureset'
|
||||
|
||||
[[featureset.flavour]]
|
||||
name = '$flavour'
|
||||
EOF
|
||||
|
||||
# Regenerate control and included rules
|
||||
rm -f debian/control debian/rules.gen
|
||||
debian/rules debian/control-real && exit 1 || true
|
||||
test -f debian/control
|
||||
test -f debian/rules.gen
|
||||
|
||||
# Check build-dependencies now that we know debian/control exists
|
||||
dpkg-checkbuilddeps -P"$profiles"
|
||||
|
||||
# Clean up old build; apply existing patches for featureset
|
||||
debian/rules clean
|
||||
debian/rules source
|
||||
|
||||
# Apply the additional patches
|
||||
for patch in "$@"; do
|
||||
patch_abs="$(readlink -f "$patch")"
|
||||
(cd "debian/build/source_${featureset}" && \
|
||||
quilt import -P "test/$(basename "$patch")" "$patch_abs" && \
|
||||
quilt push --fuzz="$fuzz")
|
||||
done
|
||||
|
||||
# Build selected binaries
|
||||
dpkg-buildpackage -b -P"$profiles" -j"$jobs" -nc -uc
|
Reference in New Issue
Block a user