summaryrefslogtreecommitdiff
path: root/linaropy/rn/rngen.py
diff options
context:
space:
mode:
Diffstat (limited to 'linaropy/rn/rngen.py')
-rw-r--r--linaropy/rn/rngen.py129
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)