/usr/bin/cdbs-edit-patch is in cdbs 0.4.150.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | #!/bin/sh -e
# create or edit a cdbs simple-patchsys.mk patch
#
# (C) 2005 Martin Pitt <mpitt@debian.org>
#
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
# Stolen from quilt
patch_header()
{
awk '
$1 == "***" || $1 == "---" \
{ exit }
/^Index:[ \t]|^diff[ \t]|^==*$|^RCS file: |^retrieving revision [0-9]+(\.[0-9]+)*$/ \
{ eat = eat $0 "\n"
next }
{ print eat $0
eat = "" }
'
}
if [ -z "$1" ] || [ "$1" = "--help" ]; then
echo "Usage: $0 <patch name>"
exit 0
fi
dh_testdir
SRCDIR=$(pwd)
TMP=$(mktemp -t -d cdbs-new-patch.XXXXXX)
TMP2=$(mktemp -t cdbs-old-patch-header.XXXXXX)
trap "rm -rf $TMP $TMP2" 0 1 2 3 9 11 13 15
case $1 in
*.diff|*.patch) PATCHNAME=$1;;
*) PATCHNAME=$1.patch;;
esac
PATCHNAME=${PATCHNAME#debian/patches/}
ORIGDIR=$(basename $(pwd))
NEWDIR=$ORIGDIR.new
mkdir -p debian/patches
# create clean source package in temporary dir
cp -a . $TMP/$ORIGDIR
cd $TMP/$ORIGDIR
debclean
# create an empty patch if necessary so that the following loop stops at the
# lexicographic patch position
[ -e "debian/patches/$PATCHNAME" ] || touch "debian/patches/$PATCHNAME"
# remove all patches later than or equal to the one to edit
for p in $(find debian/patches -type f \( -name "*.diff" -o -name "*.patch" \) | LC_COLLATE=C sort -r); do
rm -f "$p"
pname=$(basename "$p")
[ "$pname" != "$PATCHNAME" ] || break
done
debian/rules apply-patches
deb_tar_srcdir=$(sed -nr 's/^[[:space:]]*DEB_TAR_SRCDIR[[:space:]]*:?=[[:space:]]*//p' debian/rules)
if [ -n "$deb_tar_srcdir" ]; then
deb_srcdir=build-tree/$deb_tar_srcdir
fi
# create new source dir
cp -a . $TMP/$NEWDIR
cd $TMP/$NEWDIR/$deb_srcdir
# if we edit a patch, apply the already existing one to the new directory
if [ -e "$SRCDIR/debian/patches/$PATCHNAME" ]; then
echo -n "Applying already existing patch to edit directory at level"
for level in 1 0 2; do
echo -n " $level"
if patch --dry-run -E -p$level < "$SRCDIR/debian/patches/$PATCHNAME" > /dev/null 2>&1; then
if patch --no-backup-if-mismatch -V never -p$level < "$SRCDIR/debian/patches/$PATCHNAME" > /dev/null 2>&1; then
echo " success"
success=1
break;
fi
fi
done
[ "$success" ] || {
echo " failure"
echo
echo "Forcefully applying patch at level 1. You have to fix the"
echo "rejections manually."
patch -p1 < "$SRCDIR/debian/patches/$PATCHNAME" || [ $? -eq 1 ]
}
fi
echo "
You are now in a subshell in a cleaned copy of your source package.
Please make the changes necessary for the patch $PATCHNAME
in this directory and exit with status 0 to create/update the patch.
Exiting with a non-zero value will cancel the patch modification."
SH=$(getent passwd $USER | cut -f 7 -d:)
[ "$SH" ] || SH=/bin/sh
if $SH; then
if [ -f $SRCDIR/debian/patches/$PATCHNAME ]; then
cat $SRCDIR/debian/patches/$PATCHNAME | patch_header > $TMP2
cat $TMP2 > $SRCDIR/debian/patches/$PATCHNAME
fi
cd $TMP
diff -Nur -x '*.orig' -x '*~' $ORIGDIR/$deb_srcdir $NEWDIR/$deb_srcdir >> $SRCDIR/debian/patches/$PATCHNAME || [ $? -eq 1 ]
# adjust paths in patches with build tree
if [ -n "$deb_srcdir" ]; then
sed -i "s_^\(---\|+++\) [^/]*/build-tree/_\1 _" $SRCDIR/debian/patches/$PATCHNAME
fi
fi
|