debcargo-conf/dev/link-patches.sh
Ian Jackson 87c0930c70 Make scripts all be #!/bin/bash
sh is rather inconvenient.  I am about to introduce a bashism in
vars.sh.frag and various others.
2021-09-03 11:47:40 +01:00

51 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Symlink {build => src}/$pkg/debian/patches for easier editing.
#
# If you give a second argument $2, will create this patch, add Cargo.toml to
# it, open it for editing, refresh the patch, and call cargo build for you.
#
# If the build succeeds, exits with success, and you can re-rerun update.sh
# If the build fails, will "quilt add" everything so you can begin editing the
# files without forgetting to add them.
set -e
pkg="$1"
if ! test -d "src/$pkg/debian"; then
echo >&2 "not a directory: src/$pkg/debian"
exit 1
fi
test -d "src/$pkg/debian/patches" || mkdir "src/$pkg/debian/patches"
rm -rf "build/$pkg/debian/patches"
rm -rf "build/$pkg/.pc"
mkdir -p "build/$pkg/debian"
ln -sfT "$PWD/src/$pkg/debian/patches" "build/$pkg/debian/patches"
if [ -z "$2" ]; then exit 0; fi
cd "build/$pkg"
export QUILT_PATCHES=debian/patches
patchname="${2%.patch}.patch"
quilt new "$patchname"
quilt add Cargo.toml
sensible-editor Cargo.toml
quilt refresh
find src -type f -execdir quilt add '{}' +
while ! cargo build --all-features; do
cat <<-eof
Spawning a sub-shell. Please try to fix the build failure by editing files in
src/, which have been already quilt-added for you to $patchname. Afterwards,
don't forgot to run "quilt refresh". To exit this loop without having fixed the
problem, press Ctrl-D then quickly Ctrl-C.
eof
$SHELL
quilt refresh
done
echo "patching was a success!"