diff options
Diffstat (limited to 'linaropy/rn/rngen.py')
-rw-r--r-- | linaropy/rn/rngen.py | 129 |
1 files changed, 82 insertions, 47 deletions
diff --git a/linaropy/rn/rngen.py b/linaropy/rn/rngen.py index 47d63f8..7daae9e 100644 --- a/linaropy/rn/rngen.py +++ b/linaropy/rn/rngen.py @@ -4,8 +4,6 @@ import csv import sys import getopt -reload(sys) -sys.setdefaultencoding('utf8') # For fileIO import os.path @@ -20,27 +18,30 @@ from bs4 import BeautifulSoup # Jinja2 is the templating engine. from jinja2 import Template, FileSystemLoader, Environment -from custom_wordwrap import do_customwordwrap +from .custom_wordwrap import do_customwordwrap -from cStringIO import StringIO +from io import StringIO from datetime import datetime from shutil import copyfile # To test if a remote file exists. -import urllib2 +import urllib.request +import urllib.error +import urllib.parse from ..series import Series -from linaroseries import LinaroSeries -from rnseries import RNSeries -from gccclone import GCCClone +from .linaroseries import LinaroSeries +from .rnseries import RNSeries +from .gccclone import GCCClone from ..rninput import finput # Terminal color codes. from linaropy.colors import * + def get_gcc_version(gccclone): dct = {} (dct["major"], dct["minor"], dct["revision"] @@ -52,15 +53,15 @@ def rngen(rn_series, gccclone, history): trackseries = rn_series.track_series nextseries = rn_series.next_series - print "toNext: " + nextseries.branchname() - print "toNext: " + format(nextseries, '%N/%d') + print("toNext: " + nextseries.branchname()) + print("toNext: " + format(nextseries, '%N/%d')) # TODO: What if 'track' is not a snapshot branch? To do this right we'd # probably have to preserve basedon information in the release notes # repository as a yaml file. basedon = 'http://snapshots.linaro.org/components/toolchain/gcc-linaro/' basedon = basedon + trackseries.get_dir() - print "basedon: " + basedon + print("basedon: " + basedon) basis_url = basedon # print 'gccbaseversion is ' + gccclone.get_base_version() @@ -68,8 +69,8 @@ def rngen(rn_series, gccclone, history): # (dct["major"],dct["minor"],dct["revision"]) = gccclone.get_base_version().split(".") # print 'fsf revision is ' + gccclone.get_fsf_revision() ver = get_gcc_version(gccclone) - print 'gcc major ' + ver['major'] - print 'gcc minor ' + ver['minor'] + print('gcc major ' + ver['major']) + print('gcc minor ' + ver['minor']) fsf = gccclone.get_fsf_revision() @@ -78,22 +79,22 @@ def rngen(rn_series, gccclone, history): # incremented per-release. # TODO: read stable and maintenance information from a config file. if int(ver['major']) <= 4: - gcc_version_path = u'' + ver['major'] + '.' + ver['minor'] + gcc_version_path = '' + ver['major'] + '.' + ver['minor'] stab_maint = 'Maintenance' else: gcc_version_path = ver['major'] stab_maint = 'Stable' - print "This is a %s RNSeries for GCC version %s" % (stab_maint, - gcc_version_path) + print("This is a %s RNSeries for GCC version %s" % (stab_maint, + gcc_version_path)) - print "Using the following .csv file: " + history + print("Using the following .csv file: " + history) #month_year=format(nextseries, '%D') month_year = nextseries.date - outfile = u'GCC-' + ver['major'] + u'.' + \ - ver['minor'] + u'-' + month_year.strftime("%Y.%m") + outfile = 'GCC-' + ver['major'] + '.' + \ + ver['minor'] + '-' + month_year.strftime("%Y.%m") # if spin != "": # outfile=outfile + u'-' + spin @@ -101,7 +102,7 @@ def rngen(rn_series, gccclone, history): # if rc != "": # outfile=outfile + u'-rc' + rc outfile = outfile + str(nextseries.spin) + str(nextseries.rc) - print "outfile: " + outfile + print("outfile: " + outfile) with open(history, mode='r') as backports: backports.seek(0) @@ -136,13 +137,13 @@ def rngen(rn_series, gccclone, history): # will contain erroneous information. url = urllib2 try: - ret = urllib2.urlopen(basis_url) + ret = urllib.request.urlopen(basis_url) except url.URLError as e: - print "%s does not exist!" % basis_url + print("%s does not exist!" % basis_url) exit(1) # TODO verify that the basis_url is a valid url and warn if not. - basis = u'' + basis = '' basis_ver = basis_url.strip("/") basis_ver = basis_ver.rsplit("/", 1)[1] if basis_url.find("releases") == 1: @@ -155,14 +156,16 @@ def rngen(rn_series, gccclone, history): release_string = "Linaro GCC %s.%s-%s.%s %s" % (ver['major'], ver[ 'minor'], month_year.strftime("%Y"), month_year.strftime("%m"), release_type) - print "The release notes for this %s will be generated based on: %s" % (release_string, basis) + print( + "The release notes for this %s will be generated based on: %s" % + (release_string, basis)) # Get ready to do the rendering of the jinja2 templates into .textile # format. # relative path to the README.textile templates. - src_readme_path = u'/components/toolchain/gcc-linaro/%s/README.textile' % gcc_version_path - bin_readme_path = u'/components/toolchain/binaries/README.textile' + src_readme_path = '/components/toolchain/gcc-linaro/%s/README.textile' % gcc_version_path + bin_readme_path = '/components/toolchain/binaries/README.textile' # absolute path to README.textile templates. template_src_readme = template_dir + src_readme_path @@ -170,8 +173,8 @@ def rngen(rn_series, gccclone, history): # relative path to the README.textile.series templates. # Note, the src templates don't have an extends (.series) file. - src_extends_path = u'/components/toolchain/gcc-linaro/%s/README.textile' % gcc_version_path - bin_extends_path = u'/components/toolchain/binaries/README.textile.series' + src_extends_path = '/components/toolchain/gcc-linaro/%s/README.textile' % gcc_version_path + bin_extends_path = '/components/toolchain/binaries/README.textile.series' # absolute path to README.textile.series template overrides. These are # what are passed to the jinja2 rendering engine because they might @@ -208,8 +211,8 @@ def rngen(rn_series, gccclone, history): # Generate the toolchain GCC source archive release notes. source_textile_rendering = source_archive_template.render( backports=backportsDict, - GCC_base_version=ver['major'] + u'.' + - ver['minor'] + u'.' + ver['revision'], + GCC_base_version=ver['major'] + '.' + + ver['minor'] + '.' + ver['revision'], FSF_rev=fsf, basis=basis, basis_url=basis_url, @@ -225,22 +228,32 @@ def rngen(rn_series, gccclone, history): source_textile_rendering = source_textile_rendering.encode('utf-8') - out_source = u'' + outfile - out_binary = u'Linaro-' + outfile + out_source = '' + outfile + out_binary = 'Linaro-' + outfile try: - with open(out_source + u'.textile', 'w') as f: + with open(out_source + '.textile', 'w') as f: f.write(source_textile_rendering) - print 'Wrote textile rendering to file %s' % os.getcwd() + u'/' + out_source + u'.textile' + print( + 'Wrote textile rendering to file %s' % + os.getcwd() + + '/' + + out_source + + '.textile') except IOError as e: sys.exit('Error rendering textile source archive release notes.') source_html_rendering = textile.textile(source_textile_rendering) try: - with open(out_source + u'.html', 'w') as f: + with open(out_source + '.html', 'w') as f: f.write(source_html_rendering) - print 'Wrote html rendering to file %s' % os.getcwd() + u'/' + out_source + u'.html' + print( + 'Wrote html rendering to file %s' % + os.getcwd() + + '/' + + out_source + + '.html') except IOError as e: sys.exit('Error rendering html release notes.') @@ -258,18 +271,28 @@ def rngen(rn_series, gccclone, history): binary_textile_rendering = binary_textile_rendering.encode('utf-8') try: - with open(out_binary + u'.textile', 'w') as f: + with open(out_binary + '.textile', 'w') as f: f.write(binary_textile_rendering) - print 'Wrote textile rendering to file %s' % os.getcwd() + u'/' + out_binary + u'.textile' + print( + 'Wrote textile rendering to file %s' % + os.getcwd() + + '/' + + out_binary + + '.textile') except IOError as e: sys.exit('Error rendering textile binary archive release notes.') binary_html_rendering = textile.textile(binary_textile_rendering) try: - with open(out_binary + u'.html', 'w') as f: + with open(out_binary + '.html', 'w') as f: f.write(binary_html_rendering) - print 'Wrote html rendering to file %s' % os.getcwd() + u'/' + out_binary + u'.html' + print( + 'Wrote html rendering to file %s' % + os.getcwd() + + '/' + + out_binary + + '.html') except IOError as e: sys.exit('Error rendering html release notes.') @@ -286,11 +309,13 @@ def rngen(rn_series, gccclone, history): snap_rc_release=release_type) announce_rendering = announce_rendering.encode('utf-8') - announce_file = u'announce-' + out_binary + u'.txt' + announce_file = 'announce-' + out_binary + '.txt' try: with open(announce_file, 'w') as f: f.write(announce_rendering) - print 'Wrote text rendering to file %s' % os.getcwd() + u'/' + announce_file + print( + 'Wrote text rendering to file %s' % + os.getcwd() + '/' + announce_file) except IOError as e: sys.exit('Error rendering text announce message.') @@ -299,18 +324,28 @@ def rngen(rn_series, gccclone, history): # WARNING: This must be done AFTER you generate the announce message # because it uses the same README.textile template as the textile rendered # release notes. - copyfile(out_binary + u'.textile', bin_readme) - print 'Wrote generated file ' + out_binary + u'.textile' + " to " + bin_readme + copyfile(out_binary + '.textile', bin_readme) + print( + 'Wrote generated file ' + + out_binary + + '.textile' + + " to " + + bin_readme) # Copy the generated .textile file over the # readme_series_dir/README.textile template file. - copyfile(out_source + u'.textile', src_readme) - print 'Wrote generated file ' + out_source + u'.textile' + " to " + src_readme + copyfile(out_source + '.textile', src_readme) + print( + 'Wrote generated file ' + + out_source + + '.textile' + + " to " + + src_readme) rn_series.rn_series.add(bin_readme) rn_series.rn_series.add(src_readme) print_info("Generated release notes for %s. Please add a commit message." - % nextseries.label()) + % nextseries.label()) rn_series.rn_series.commit( "Generated Release Notes for %s." % nextseries.label()) rn_series.rn_series.print_log(1) |