| #!/usr/bin/python3 |
| # Copyright (C) 2015-2018 Free Software Foundation, Inc. |
| # This file is part of the GNU C Library. |
| # |
| # The GNU C Library is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU Lesser General Public |
| # License as published by the Free Software Foundation; either |
| # version 2.1 of the License, or (at your option) any later version. |
| # |
| # The GNU C Library 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 |
| # Lesser General Public License for more details. |
| # |
| # You should have received a copy of the GNU Lesser General Public |
| # License along with the GNU C Library; if not, see |
| # <http://www.gnu.org/licenses/>. |
| |
| """List fixed bugs for the NEWS file. |
| |
| This script takes a version number as input and generates a list of |
| bugs marked as FIXED with that milestone, to be added to the NEWS file |
| just before release. The output is in UTF-8. |
| """ |
| |
| import argparse |
| import json |
| import sys |
| import textwrap |
| import urllib.request |
| |
| |
| def get_parser(): |
| """Return an argument parser for this module.""" |
| parser = argparse.ArgumentParser(description=__doc__) |
| parser.add_argument('version', |
| help='Release version to look up') |
| return parser |
| |
| |
| def list_fixed_bugs(version): |
| """List the bugs fixed in a given version.""" |
| url = ('https://sourceware.org/bugzilla/rest.cgi/bug?product=glibc' |
| '&resolution=FIXED&target_milestone=%s' |
| '&include_fields=id,component,summary' % version) |
| response = urllib.request.urlopen(url) |
| json_data = response.read().decode('utf-8') |
| data = json.loads(json_data) |
| for bug in data['bugs']: |
| desc = '[%d] %s: %s' % (bug['id'], bug['component'], bug['summary']) |
| desc = textwrap.fill(desc, width=76, initial_indent=' ', |
| subsequent_indent=' ') + '\n' |
| sys.stdout.buffer.write(desc.encode('utf-8')) |
| |
| |
| def main(argv): |
| """The main entry point.""" |
| parser = get_parser() |
| opts = parser.parse_args(argv) |
| list_fixed_bugs(opts.version) |
| |
| |
| if __name__ == '__main__': |
| main(sys.argv[1:]) |