87 lines
2.3 KiB
Bash
Executable File
87 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
# Copyright 2011 Niko Tyni
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the same terms as Perl itself.
|
|
#
|
|
# Given a list of patches in debian/patches, write out one line
|
|
# per patch containing the patch description, bug pointers and
|
|
# upstream commit information where available.
|
|
#
|
|
# The output format is designed to be included into Perl's patchlevel.h,
|
|
# which eventually controls what 'perl -V' prints.
|
|
#
|
|
# When called with the '-d' option, outputs the timestamp of the newest
|
|
# patch, for the purposes of getting $patchlevel_date in perlbug right
|
|
|
|
prefix="DEBPKG:"
|
|
version=""
|
|
patchdir=debian/patches
|
|
showdate=false
|
|
|
|
while getopts p:v:d f
|
|
do
|
|
case $f in
|
|
p) prefix=$OPTARG;;
|
|
v) version=$OPTARG;;
|
|
d) showdate=true
|
|
esac
|
|
done
|
|
shift `expr $OPTIND - 1`
|
|
|
|
in=${1:-$patchdir/series}
|
|
|
|
if [ -n "$version" ]; then
|
|
version=" for $version"
|
|
fi
|
|
|
|
newest_mtime=0
|
|
while read patch strip
|
|
do
|
|
if $showdate; then
|
|
mtime=$(stat --format='%Y' $patchdir/$patch)
|
|
if [ "$mtime" -gt "$newest_mtime" ]; then
|
|
newest_mtime="$mtime"
|
|
fi
|
|
continue
|
|
fi
|
|
|
|
patchname=$(echo $patch | sed 's/\.diff$//')
|
|
< $patchdir/$patch sed -e '/^Subject:/ { N; s/\n / / }' | sed -n -e '
|
|
|
|
# massage the patch headers
|
|
s|^Bug: .*https\?://rt\.perl\.org/.*id=\(.*\).*|[perl #\1]|; tprepend;
|
|
s|^Bug: .*https\?://rt\.cpan\.org/.*id=\(.*\).*|[rt.cpan.org #\1]|; tprepend;
|
|
s|^Bug-Debian: [^0-9]*\([0-9]\{5,\}\)|https://bugs.debian.org/\1|; tprepend;
|
|
s/^\(Subject\|Description\): //; tappend;
|
|
s|^Origin: .*https\?://perl5\.git\.perl\.org/perl\.git/commit\(diff\)\?/\(.......\).*|[\2]|; tprepend;
|
|
|
|
# post-process at the end of input
|
|
$ { x;
|
|
# include the version number in the patchlevel.h description (if available)
|
|
s/List packaged patches/&'"${version}"'/;
|
|
|
|
# escape any backslashes and double quotes
|
|
s|\\|\\\\|g; s|"|\\"|g;
|
|
|
|
# add a prefix
|
|
s|^|\t,"'"$prefix$patchname"' - |;
|
|
# newlines away
|
|
s/\n/ /g; s/ */ /g;
|
|
# add a suffix
|
|
s/ *$/"/; p
|
|
};
|
|
# stop all processing
|
|
d;
|
|
# label: append to the hold space
|
|
:append H; d;
|
|
# label: prepend to the hold space
|
|
:prepend x; H; d;
|
|
'
|
|
done < $in
|
|
if $showdate; then
|
|
echo $newest_mtime
|
|
fi
|