From 816b5020257ade2a4644df2723ccffaac9650112 Mon Sep 17 00:00:00 2001 From: Steve Rowe Date: Mon, 13 Jun 2016 20:13:14 -0400 Subject: [PATCH] Address Solr Changes.html problems: 1) In solr/CHANGES.txt, add a 'Versions of Major Components' section to the 6.2.0 and 6.1.0 releases; 2) In addVersion.py: when adding a new version to solr/CHANGES.txt, add a line referring to LUCENE_CHANGES.txt, and add a 'Versions of Major Components' section with versions interpolated from ivy-versions.properties; and 3) In changes2html.pl: allow section names to have up to 6 words (to handle 'Upgrading from Solr any prior release') --- dev-tools/scripts/addVersion.py | 34 +++++++++++++++++++++++++---- lucene/site/changes/changes2html.pl | 4 ++-- solr/CHANGES.txt | 22 ++++++++++++++++--- 3 files changed, 51 insertions(+), 9 deletions(-) diff --git a/dev-tools/scripts/addVersion.py b/dev-tools/scripts/addVersion.py index 630e86f6cb3..cc411162c64 100644 --- a/dev-tools/scripts/addVersion.py +++ b/dev-tools/scripts/addVersion.py @@ -20,8 +20,10 @@ from scriptutil import * import argparse import re +from configparser import ConfigParser, ExtendedInterpolation +from textwrap import dedent -def update_changes(filename, new_version): +def update_changes(filename, new_version, init_changes = '(No Changes)\n\n'): print(' adding new section to %s...' % filename, end='', flush=True) matcher = re.compile(r'\d+\.\d+\.\d+\s+===') def edit(buffer, match, line): @@ -30,7 +32,7 @@ def update_changes(filename, new_version): match = new_version.previous_dot_matcher.search(line) if match is not None: buffer.append(line.replace(match.group(0), new_version.dot)) - buffer.append('(No Changes)\n\n') + buffer.append(init_changes) buffer.append(line) return match is not None @@ -184,14 +186,38 @@ def read_config(): print ("branch_type is %s " % c.branch_type) return c + +# Hack ConfigParser, designed to parse INI files, to parse & interpolate Java .properties files +def parse_properties_file(filename): + contents = open(filename, encoding='ISO-8859-1').read().replace('%', '%%') # Escape interpolation metachar + parser = ConfigParser(interpolation=ExtendedInterpolation()) # Handle ${property-name} interpolation + parser.read_string("[DUMMY_SECTION]\n" + contents) # Add required section + return dict(parser.items('DUMMY_SECTION')) + +def get_solr_init_changes(): + return dedent(''' + Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release. + + Versions of Major Components + --------------------- + Apache Tika %(org.apache.tika.version)s + Carrot2 %(/org.carrot2/carrot2-mini)s + Velocity %(/org.apache.velocity/velocity)s and Velocity Tools %(/org.apache.velocity/velocity-tools)s + Apache UIMA %(org.apache.uima.version)s + Apache ZooKeeper %(/org.apache.zookeeper/zookeeper)s + Jetty %(org.eclipse.jetty.version)s + + + (No Changes)\n\n + ''' % parse_properties_file('lucene/ivy-versions.properties')) def main(): c = read_config() print('\nAdding new version %s' % c.version) update_changes('lucene/CHANGES.txt', c.version) - update_changes('solr/CHANGES.txt', c.version) - add_constant(c.version, not c.matching_branch) + update_changes('solr/CHANGES.txt', c.version, get_solr_init_changes()) + add_constant(c.version, not c.matching_branch) if c.matching_branch: print('\nUpdating latest version') diff --git a/lucene/site/changes/changes2html.pl b/lucene/site/changes/changes2html.pl index 5399930d657..d71f2962655 100755 --- a/lucene/site/changes/changes2html.pl +++ b/lucene/site/changes/changes2html.pl @@ -117,10 +117,10 @@ for (my $line_num = 0 ; $line_num <= $#lines ; ++$line_num) { } # Section heading: no leading whitespace, initial word capitalized, - # five words or less, and no trailing punctuation, + # six words or less, and no trailing punctuation, # except colons - don't match the one otherwise matching # non-section-name by excluding "StandardTokenizer" - if ( /^(?!.*StandardTokenizer)([A-Z]\S*(?:\s+\S+){0,4})(?