Fix LASTCHANGE in merge_from_chromium.py when merging a release.

The previous changes to merge_from_chromium caused the script to
crash when generating LASTCHANGE for a release.
This fixes the crash by using the SHA1 of the upstream merge
parent to generate LASTCHANGE.

Change-Id: I34ff309400135bb09a91e7e32a9eb1aea1e8c310
(cherry picked from commit f2e9853ae82a5b792ddf1af7c7d8924e9cb8c9b4)
diff --git a/chromium/tools/merge_from_chromium.py b/chromium/tools/merge_from_chromium.py
index 027b909..bf1ce13 100755
--- a/chromium/tools/merge_from_chromium.py
+++ b/chromium/tools/merge_from_chromium.py
@@ -140,6 +140,9 @@
     target: The target branch to merge to.
     unattended: Run in unattended mode.
     buildspec_url: URL for buildspec repository, when merging a branch.
+  Returns:
+    The abbrev sha1 merged. It will be either |root_sha1| itself (when merging
+    chromium trunk) or the upstream sha1 of the release.
   Raises:
     TemporaryMergeError: If incompatibly licensed code is left after pruning.
   """
@@ -205,15 +208,17 @@
   if not root_sha1:
     merge_info = _GetProjectMergeInfo([''], deps_vars)
     url = merge_info['']['url']
-    root_sha1 = merge_info['']['sha1']
-    merge_common.GetCommandStdout(['git', 'fetch', url, root_sha1])
-    merge_msg_version = '%s (%s)' % (version, root_sha1)
+    merged_sha1 = merge_info['']['sha1']
+    merge_common.GetCommandStdout(['git', 'fetch', url, merged_sha1])
+    merged_sha1 = merge_common.Abbrev(merged_sha1)
+    merge_msg_version = '%s (%s)' % (version, merged_sha1)
   else:
     merge_msg_version = root_sha1
+    merged_sha1 = root_sha1
 
-  logging.debug('Merging Chromium at %s ...', root_sha1)
+  logging.debug('Merging Chromium at %s ...', merged_sha1)
   # Merge conflicts make git merge return 1, so ignore errors
-  merge_common.GetCommandStdout(['git', 'merge', '--no-commit', root_sha1],
+  merge_common.GetCommandStdout(['git', 'merge', '--no-commit', merged_sha1],
                                 ignore_errors=True)
   merge_common.CheckNoConflictsAndCommitMerge(
       'Merge Chromium at %s\n\n%s'
@@ -241,6 +246,8 @@
       merge_common.GetCommandStdout(['git', 'commit', '-m',
                                      'Exclude unwanted directories'],
                                     cwd=dest_dir)
+  assert(root_sha1 is None or root_sha1 == merged_sha1)
+  return merged_sha1
 
 
 def _CheckLicenses():
@@ -439,7 +446,8 @@
   logging.info('Snapshotting Chromium at %s (%s)', version, root_sha1)
 
   # 1. Merge, accounting for excluded directories
-  _MergeProjects(version, root_sha1, target, unattended, buildspec_url)
+  merged_sha1 = _MergeProjects(version, root_sha1, target, unattended,
+                               buildspec_url)
 
   # 2. Generate Android makefiles
   _GenerateMakefiles(version, unattended)
@@ -451,7 +459,7 @@
   _GenerateNoticeFile(version)
 
   # 5. Generate LASTCHANGE file
-  _GenerateLastChange(version, root_sha1)
+  _GenerateLastChange(version, merged_sha1)
 
   return True