aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Farrell <jamesfarrell@google.com>2023-08-22 18:46:06 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-08-22 18:46:06 +0000
commitb45e6f1d15a9da8385b9f848f1bbcbf3c6d814d6 (patch)
treed41df64e0a107756dd94b59fe7588289d3f43cc6
parent55f43e4231e903f2dbc2a38992a359afacc0c163 (diff)
parentdd62a25ff8b6a43ad2070cc71341808bc7e81169 (diff)
downloadcpython3-b45e6f1d15a9da8385b9f848f1bbcbf3c6d814d6.tar.gz
Merge "Script to update to a new major version." into main am: 2ffe8e2d04 am: dd62a25ff8
Original change: https://android-review.googlesource.com/c/platform/external/python/cpython3/+/2716433 Change-Id: I8b057e24a19e2896e819ec23e6f181b1a796940f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rwxr-xr-xandroid/update-major-version.sh57
1 files changed, 57 insertions, 0 deletions
diff --git a/android/update-major-version.sh b/android/update-major-version.sh
new file mode 100755
index 0000000000..4a11469f6c
--- /dev/null
+++ b/android/update-major-version.sh
@@ -0,0 +1,57 @@
+#!/bin/bash -ex
+#
+# Copyright 2023 Google Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Update between branches, to a new major version.
+
+cd `dirname ${BASH_SOURCE[0]}`/..
+
+if [ -z ${1+x} ]; then
+ echo "Usage: update-major-version.sh <upstream tag>"
+ exit 1
+fi
+NEW_VERSION=$1
+NEW_VERSION_SHORT=${NEW_VERSION#upstream-}
+CURRENT_VERSION=upstream-$(grep 'version:' METADATA | grep -E -o 'v[0-9][^"]+')
+CURRENT_HEAD=$(git rev-parse HEAD)
+echo "Updating from $CURRENT_VERSION to $NEW_VERSION"
+
+ADDED_FILES=$(git diff --name-only --diff-filter=A $CURRENT_VERSION HEAD | sort)
+CHANGED_FILES=$(git diff --name-only --diff-filter=a $CURRENT_VERSION HEAD | sort)
+
+PATCHFILE=$(mktemp --suffix=.patch)
+trap "rm -f $PATCHFILE" EXIT
+
+git diff --patch $CURRENT_VERSION HEAD -- $CHANGED_FILES > $PATCHFILE
+
+git merge --no-commit -s ours $NEW_VERSION
+git restore --staged --worktree --source=$NEW_VERSION -- .
+git restore --staged --worktree --source=$CURRENT_HEAD -- $ADDED_FILES
+patch -p1 < $PATCHFILE
+git add $CHANGED_FILES
+sed -i -e "s/\(version: \"\)v[0-9][^\"]*/\1$NEW_VERSION_SHORT/" METADATA
+git add METADATA
+
+NEW_ADDED_FILES=$(git diff --name-only --diff-filter=A --staged $NEW_VERSION | sort)
+if [ "$ADDED_FILES" != "$NEW_ADDED_FILES" ] ; then
+ echo "Added files don't match"
+ exit 1
+fi
+
+NEW_CHANGED_FILES=$(git diff --name-only --diff-filter=a --staged $NEW_VERSION | sort)
+if [ "$CHANGED_FILES" != "$NEW_CHANGED_FILES" ] ; then
+ echo "Changed files don't match"
+ exit 1
+fi