Files
libguestfs/update-bugs.sh
Richard W.M. Jones 2424022aec Enhance BUGS script.
Since RHBZ was updated, the old python-bugzilla program broke.  When
it was fixed, I found the (undocumented) ordering of the results from
the old tool was no longer true.

This commit adds a small Perl script to sort the output predictably.
Now bugs are sorted by both bug state and bug number, so the output
should be more stable than before.

Re-enable creation of the BUGS file in 'make dist'
(this reverts commit 91f3456244).

Also the BUGS file has been updated.

Cherry picked from commit f90c01a5dc
and backported to libguestfs 1.16 branch.  Note the BUGS file has
been deleted, and will be updated at the next release.
2012-06-21 13:00:44 +01:00

121 lines
4.0 KiB
Bash
Executable File

#!/bin/bash -
# update-bugs.sh
# Copyright (C) 2009-2012 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# In 'make dist' this is used to update the top level 'BUGS' file with
# the current bug list from Red Hat Bugzilla (bugzilla.redhat.com).
# First of all fetch the bugs from the database. This might fail,
# eg. if there is no net access or no 'bugzilla' program, but if that
# happens just exit and leave the BUGS file alone.
bugzilla query -c libguestfs \
--outputformat='%{bug_id} %{bug_status} %{short_desc}' |
perl -e '
sub bugclass {
local $_ = shift;
return 1 if /NEW/;
return 2 if /ASSIGNED/;
return 3 if /ON_DEV/;
return 4 if /POST/;
return 5 if /MODIFIED/;
return 6 if /ON_QA/;
return 7 if /VERIFIED/;
return 8 if /RELEASE_PENDING/;
return 9 #if /CLOSED/;
}
sub compare {
$a->[0] <=> $b->[0] || $a->[1] <=> $b->[1]
}
while (<>) {
/^(\d+) (\w+) (.*)/; push @bugs, [bugclass($2), $1, $2, $3];
}
foreach (sort compare @bugs) {
print $_->[1], " ", $_->[2], " ", $_->[3], "\n";
}
' \
> .bugs.tmp || exit 0
# Any errors from now on are fatal.
set -e
# Print prologue.
echo 'NOTE: This file is automatically generated from "update-bugs.sh".'
echo -n 'Last updated: ' ; date +'%Y-%m-%d'
echo '
This contains a local list of the bugs that are open against
libguestfs. Bugs are tracked in the Red Hat Bugzilla database
at https://bugzilla.redhat.com/ and to report a new bug you
should follow this link:
https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
When reporting a new bug, please check:
- That the bug has not been reported already.
- That you are testing a recent version.
- Describe the bug accurately, and give a way to reproduce it.
- Include the version of libguestfs, distro version and any other
relevant information.
- Attach the complete output of "libguestfs-test-tool".
'
lastclass=X
while read bugno status summary; do
# Ignore CLOSED bugs in this list.
if [ "$status" = "CLOSED" ]; then continue; fi
# Treat ASSIGNED the same as NEW.
# Treat MODIFIED, POST and ON_QA as the same.
case "$status" in
ASSIGNED) bugclass=NEW ;;
POST|ON_QA) bugclass=MODIFIED ;;
*) bugclass=$status ;;
esac
# perl sort returns the bugs sorted by status, NEW, ASSIGNED,
# MODIFIED, ..., CLOSED. Therefore start a new section when the
# status field changes.
if [ "$bugclass" != "$lastclass" ]; then
echo '--------------------------------------------------'
case "$bugclass" in
NEW)
echo 'Bugs in NEW or ASSIGNED state are open and waiting for someone to fix.' ;;
NEEDINFO)
echo 'Bugs in NEEDINFO state require additional information.' ;;
MODIFIED)
echo 'Bugs in MODIFIED, POST or ON_QA state are fixed.'
echo 'You can help by testing the fixes.'
;;
*)
echo "These bugs are in the $status state." ;;
esac
echo
fi
lastclass=$bugclass
# Display the bug.
echo "$bugno $status https://bugzilla.redhat.com/show_bug.cgi?id=$bugno"
echo " $summary"
echo
done < .bugs.tmp
echo "End of BUGS file."
# Clean up temporary file.
rm .bugs.tmp