Merge pull request #5766 from TeBoring/3.7.x-fix

Update version number to 3.7.0rc3
diff --git a/Protobuf.podspec b/Protobuf.podspec
index bfaa460..47381bf 100644
--- a/Protobuf.podspec
+++ b/Protobuf.podspec
@@ -5,7 +5,7 @@
 # dependent projects use the :git notation to refer to the library.
 Pod::Spec.new do |s|
   s.name     = 'Protobuf'
-  s.version  = '3.7.0'
+  s.version  = '3.7.0-rc.3'
   s.summary  = 'Protocol Buffers v.3 runtime library for Objective-C.'
   s.homepage = 'https://github.com/protocolbuffers/protobuf'
   s.license  = '3-Clause BSD License'
diff --git a/configure.ac b/configure.ac
index cae7697..cf1dca0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@
 # In the SVN trunk, the version should always be the next anticipated release
 # version with the "-pre" suffix.  (We used to use "-SNAPSHOT" but this pushed
 # the size of one file name in the dist tarfile over the 99-char limit.)
-AC_INIT([Protocol Buffers],[3.7.0],[protobuf@googlegroups.com],[protobuf])
+AC_INIT([Protocol Buffers],[3.7.0-rc-3],[protobuf@googlegroups.com],[protobuf])
 
 AM_MAINTAINER_MODE([enable])
 
diff --git a/csharp/Google.Protobuf.Tools.nuspec b/csharp/Google.Protobuf.Tools.nuspec
index 396fdf9..b98cdff 100644
--- a/csharp/Google.Protobuf.Tools.nuspec
+++ b/csharp/Google.Protobuf.Tools.nuspec
@@ -5,7 +5,7 @@
     <title>Google Protocol Buffers tools</title>
     <summary>Tools for Protocol Buffers - Google's data interchange format.</summary>
     <description>See project site for more info.</description>
-    <version>3.7.0</version>
+    <version>3.7.0-rc.3</version>
     <authors>Google Inc.</authors>
     <owners>protobuf-packages</owners>
     <licenseUrl>https://github.com/protocolbuffers/protobuf/blob/master/LICENSE</licenseUrl>
diff --git a/csharp/src/Google.Protobuf/Google.Protobuf.csproj b/csharp/src/Google.Protobuf/Google.Protobuf.csproj
index 4b4131c..2240220 100644
--- a/csharp/src/Google.Protobuf/Google.Protobuf.csproj
+++ b/csharp/src/Google.Protobuf/Google.Protobuf.csproj
@@ -4,7 +4,7 @@
     <Description>C# runtime library for Protocol Buffers - Google's data interchange format.</Description>
     <Copyright>Copyright 2015, Google Inc.</Copyright>
     <AssemblyTitle>Google Protocol Buffers</AssemblyTitle>
-    <VersionPrefix>3.7.0</VersionPrefix>
+    <VersionPrefix>3.7.0-rc.3</VersionPrefix>
     <LangVersion>6</LangVersion>
     <Authors>Google Inc.</Authors>
     <TargetFrameworks>netstandard1.0;net45</TargetFrameworks>
diff --git a/java/bom/pom.xml b/java/bom/pom.xml
index 5846d4b..f2989d7 100644
--- a/java/bom/pom.xml
+++ b/java/bom/pom.xml
@@ -1,13 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
-                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                              http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>com.google.protobuf</groupId>
   <artifactId>protobuf-bom</artifactId>
-  <version>3.7.0</version>
+  <version>3.7.0-rc-3</version>
   <packaging>pom</packaging>
 
   <name>Protocol Buffers [BOM]</name>
diff --git a/java/core/pom.xml b/java/core/pom.xml
index 57226c4..51e8a0e 100644
--- a/java/core/pom.xml
+++ b/java/core/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.7.0</version>
+    <version>3.7.0-rc-3</version>
   </parent>
 
   <artifactId>protobuf-java</artifactId>
diff --git a/java/pom.xml b/java/pom.xml
index 54b6dc7..87f06c6 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -4,7 +4,7 @@
 
   <groupId>com.google.protobuf</groupId>
   <artifactId>protobuf-parent</artifactId>
-  <version>3.7.0</version>
+  <version>3.7.0-rc-3</version>
   <packaging>pom</packaging>
 
   <name>Protocol Buffers [Parent]</name>
diff --git a/java/util/pom.xml b/java/util/pom.xml
index c2eab47..3736cfd 100644
--- a/java/util/pom.xml
+++ b/java/util/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.7.0</version>
+    <version>3.7.0-rc-3</version>
   </parent>
 
   <artifactId>protobuf-java-util</artifactId>
diff --git a/js/package.json b/js/package.json
index 2dc3cdb..1b49f24 100644
--- a/js/package.json
+++ b/js/package.json
@@ -1,6 +1,6 @@
 {
   "name": "google-protobuf",
-  "version": "3.7.0",
+  "version": "3.7.0-rc.3",
   "description": "Protocol Buffers for JavaScript",
   "main": "google-protobuf.js",
   "files": [
diff --git a/php/ext/google/protobuf/package.xml b/php/ext/google/protobuf/package.xml
index a33625e..76e0290 100644
--- a/php/ext/google/protobuf/package.xml
+++ b/php/ext/google/protobuf/package.xml
@@ -10,16 +10,16 @@
   <email>protobuf-opensource@google.com</email>
   <active>yes</active>
  </lead>
- <date>2019-02-19</date>
- <time>11:02:29</time>
  <version>
-  <release>3.7.0</release>
+  <release>3.7.0RC3</release>
   <api>3.7.0</api>
  </version>
  <stability>
-  <release>stable</release>
-  <api>stable</api>
+  <release>beta</release>
+  <api>beta</api>
  </stability>
+ <date>2019-02-22</date>
+ <time>11:31:21</time>
  <license uri="https://opensource.org/licenses/BSD-3-Clause">3-Clause BSD License</license>
  <notes>GA release.</notes>
  <contents>
@@ -278,15 +278,15 @@
   </release>
   <release>
    <version>
-    <release>3.7.0</release>
+    <release>3.7.0RC3</release>
     <api>3.7.0</api>
    </version>
    <stability>
-    <release>stable</release>
-    <api>stable</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2019-02-19</date>
-   <time>11:02:29</time>
+   <date>2019-02-22</date>
+   <time>11:31:21</time>
    <license uri="https://opensource.org/licenses/BSD-3-Clause">3-Clause BSD License</license>
    <notes>GA release.</notes>
   </release>
diff --git a/php/ext/google/protobuf/protobuf.h b/php/ext/google/protobuf/protobuf.h
index 908e3ba..7903c71 100644
--- a/php/ext/google/protobuf/protobuf.h
+++ b/php/ext/google/protobuf/protobuf.h
@@ -37,7 +37,7 @@
 #include "upb.h"
 
 #define PHP_PROTOBUF_EXTNAME "protobuf"
-#define PHP_PROTOBUF_VERSION "3.7.0"
+#define PHP_PROTOBUF_VERSION "3.7.0RC3"
 
 #define MAX_LENGTH_OF_INT64 20
 #define SIZEOF_INT64 8
diff --git a/protoc-artifacts/pom.xml b/protoc-artifacts/pom.xml
index 4ef2bf8..797a0e1 100644
--- a/protoc-artifacts/pom.xml
+++ b/protoc-artifacts/pom.xml
@@ -8,7 +8,7 @@
   </parent>
   <groupId>com.google.protobuf</groupId>
   <artifactId>protoc</artifactId>
-  <version>3.7.0</version>
+  <version>3.7.0-rc-3</version>
   <packaging>pom</packaging>
   <name>Protobuf Compiler</name>
   <description>
diff --git a/python/google/protobuf/__init__.py b/python/google/protobuf/__init__.py
index 8cc7440..92c629a 100755
--- a/python/google/protobuf/__init__.py
+++ b/python/google/protobuf/__init__.py
@@ -30,7 +30,7 @@
 
 # Copyright 2007 Google Inc. All Rights Reserved.
 
-__version__ = '3.7.0'
+__version__ = '3.7.0rc3'
 
 if __name__ != '__main__':
   try:
diff --git a/ruby/google-protobuf.gemspec b/ruby/google-protobuf.gemspec
index b646e12..74c1352 100644
--- a/ruby/google-protobuf.gemspec
+++ b/ruby/google-protobuf.gemspec
@@ -1,6 +1,6 @@
 Gem::Specification.new do |s|
   s.name        = "google-protobuf"
-  s.version     = "3.7.0"
+  s.version     = "3.7.0.rc.3"
   s.licenses    = ["BSD-3-Clause"]
   s.summary     = "Protocol Buffers"
   s.description = "Protocol Buffers are Google's data interchange format."
diff --git a/update_version.py b/update_version.py
index 3985ece..42e632d 100755
--- a/update_version.py
+++ b/update_version.py
@@ -1,16 +1,25 @@
 #!/usr/bin/env python
+# Usage: ./update_version.py <MAJOR>.<MINOR>.<MICRO> [<RC version>]
+#
+# Example:
+# ./update_version.py 3.7.1 2
+#   => Version will become 3.7.1-rc-2 (beta)
+# ./update_version.py 3.7.1
+#   => Version will become 3.7.1 (stable)
 
 import datetime
 import re
 import sys
 from xml.dom import minidom
 
-if len(sys.argv) < 2:
+if len(sys.argv) < 2 or len(sys.argv) > 3:
   print """
 [ERROR] Please specify a version.
 
+./update_version.py <MAJOR>.<MINOR>.<MICRO> [<RC version>]
+
 Example:
-./update_version.py 2.1.3
+./update_version.py 3.7.1 2
 """
   exit(1)
 
@@ -21,10 +30,14 @@
 [ERROR] Version must be in the format <MAJOR>.<MINOR>.<MICRO>
 
 Example:
-./update_version.py 2.1.3
+./update_version.py 3.7.3
 """
   exit(1)
 
+RC_VERSION = 0
+if len(sys.argv) > 2:
+  RC_VERSION = int(sys.argv[2])
+
 
 def Find(elem, tagname):
   for child in elem.childNodes:
@@ -41,6 +54,13 @@
   elem.firstChild.replaceWholeText(text)
 
 
+def GetFullVersion(rc_suffix = '-rc-'):
+  if RC_VERSION == 0:
+    return NEW_VERSION
+  else:
+    return '%s%s%s' % (NEW_VERSION, rc_suffix, RC_VERSION)
+
+
 def RewriteXml(filename, rewriter, add_xml_prefix=True):
   document = minidom.parse(filename)
   rewriter(document)
@@ -74,7 +94,7 @@
     lambda line : re.sub(
       r'^AC_INIT\(\[Protocol Buffers\],\[.*\],\[protobuf@googlegroups.com\],\[protobuf\]\)$',
       ('AC_INIT([Protocol Buffers],[%s],[protobuf@googlegroups.com],[protobuf])'
-        % NEW_VERSION),
+        % GetFullVersion()),
       line))
 
 
@@ -111,44 +131,44 @@
   RewriteXml('csharp/src/Google.Protobuf/Google.Protobuf.csproj',
     lambda document : ReplaceText(
       Find(Find(document.documentElement, 'PropertyGroup'), 'VersionPrefix'),
-      NEW_VERSION),
+      GetFullVersion(rc_suffix = '-rc.')),
     add_xml_prefix=False)
 
   RewriteXml('csharp/Google.Protobuf.Tools.nuspec',
     lambda document : ReplaceText(
       Find(Find(document.documentElement, 'metadata'), 'version'),
-      NEW_VERSION))
+      GetFullVersion(rc_suffix = '-rc.')))
 
 
 def UpdateJava():
   RewriteXml('java/pom.xml',
     lambda document : ReplaceText(
-      Find(document.documentElement, 'version'), NEW_VERSION))
+      Find(document.documentElement, 'version'), GetFullVersion()))
 
   RewriteXml('java/bom/pom.xml',
     lambda document : ReplaceText(
-      Find(document.documentElement, 'version'), NEW_VERSION))
+      Find(document.documentElement, 'version'), GetFullVersion()))
 
   RewriteXml('java/core/pom.xml',
     lambda document : ReplaceText(
       Find(Find(document.documentElement, 'parent'), 'version'),
-      NEW_VERSION))
+      GetFullVersion()))
 
   RewriteXml('java/util/pom.xml',
     lambda document : ReplaceText(
       Find(Find(document.documentElement, 'parent'), 'version'),
-      NEW_VERSION))
+      GetFullVersion()))
 
   RewriteXml('protoc-artifacts/pom.xml',
     lambda document : ReplaceText(
-      Find(document.documentElement, 'version'), NEW_VERSION))
+      Find(document.documentElement, 'version'), GetFullVersion()))
 
 
 def UpdateJavaScript():
   RewriteTextFile('js/package.json',
     lambda line : re.sub(
       r'^  "version": ".*",$',
-      '  "version": "%s",' % NEW_VERSION,
+      '  "version": "%s",' % GetFullVersion(rc_suffix = '-rc.'),
       line))
 
 
@@ -176,7 +196,7 @@
   RewriteTextFile('Protobuf.podspec',
     lambda line : re.sub(
       r"^  s.version  = '.*'$",
-      "  s.version  = '%s'" % NEW_VERSION,
+      "  s.version  = '%s'" % GetFullVersion(rc_suffix = '-rc.'),
       line))
 
 
@@ -194,8 +214,12 @@
 
     root = document.documentElement
     version = Find(root, 'version')
-    ReplaceText(Find(version, 'release'), NEW_VERSION)
+    ReplaceText(Find(version, 'release'), GetFullVersion(rc_suffix = 'RC'))
     ReplaceText(Find(version, 'api'), NEW_VERSION)
+    stability = Find(root, 'stability')
+    ReplaceText(Find(stability, 'release'),
+        'stable' if RC_VERSION == 0 else 'beta')
+    ReplaceText(Find(stability, 'api'), 'stable' if RC_VERSION == 0 else 'beta')
     now = datetime.datetime.now()
     ReplaceText(Find(root, 'date'), now.strftime('%Y-%m-%d'))
     ReplaceText(Find(root, 'time'), now.strftime('%H:%M:%S'))
@@ -206,7 +230,6 @@
           % NEW_VERSION)
         return
     changelog.appendChild(document.createTextNode(' '))
-    stability = Find(root, 'stability')
     release = CreateNode('release', 2, [
         CreateNode('version', 3, [
           FindAndClone(version, 'release'),
@@ -230,18 +253,24 @@
       'PHP_PROTOBUF_VERSION "%s"' % NEW_VERSION,
       line))
 
+  RewriteTextFile('php/ext/google/protobuf/protobuf.h',
+    lambda line : re.sub(
+      r"^#define PHP_PROTOBUF_VERSION .*$",
+      "#define PHP_PROTOBUF_VERSION \"%s\"" % GetFullVersion(rc_suffix = 'RC'),
+      line))
+
 def UpdatePython():
   RewriteTextFile('python/google/protobuf/__init__.py',
     lambda line : re.sub(
       r"^__version__ = '.*'$",
-      "__version__ = '%s'" % NEW_VERSION,
+      "__version__ = '%s'" % GetFullVersion(rc_suffix = 'rc'),
       line))
 
 def UpdateRuby():
   RewriteTextFile('ruby/google-protobuf.gemspec',
     lambda line : re.sub(
       r'^  s.version     = ".*"$',
-      '  s.version     = "%s"' % NEW_VERSION,
+      '  s.version     = "%s"' % GetFullVersion(rc_suffix = '.rc.'),
       line))