You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by to...@apache.org on 2011/06/14 17:05:39 UTC
svn commit: r1135633 - in /hadoop/common/trunk/common: CHANGES.txt
src/test/bin/smart-apply-patch.sh src/test/bin/test-patch.sh
Author: todd
Date: Tue Jun 14 15:05:39 2011
New Revision: 1135633
URL: http://svn.apache.org/viewvc?rev=1135633&view=rev
Log:
HADOOP-7384. Allow test-patch to be more flexible about patch format. Contributed by Todd Lipcon.
Added:
hadoop/common/trunk/common/src/test/bin/smart-apply-patch.sh
Modified:
hadoop/common/trunk/common/CHANGES.txt
hadoop/common/trunk/common/src/test/bin/test-patch.sh
Modified: hadoop/common/trunk/common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/common/CHANGES.txt?rev=1135633&r1=1135632&r2=1135633&view=diff
==============================================================================
--- hadoop/common/trunk/common/CHANGES.txt (original)
+++ hadoop/common/trunk/common/CHANGES.txt Tue Jun 14 15:05:39 2011
@@ -217,6 +217,8 @@ Trunk (unreleased changes)
HADOOP-6605. Add JAVA_HOME detection to hadoop-config. (eli)
+ HADOOP-7384. Allow test-patch to be more flexible about patch format. (todd)
+
OPTIMIZATIONS
HADOOP-7333. Performance improvement in PureJavaCrc32. (Eric Caspole
Added: hadoop/common/trunk/common/src/test/bin/smart-apply-patch.sh
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/common/src/test/bin/smart-apply-patch.sh?rev=1135633&view=auto
==============================================================================
--- hadoop/common/trunk/common/src/test/bin/smart-apply-patch.sh (added)
+++ hadoop/common/trunk/common/src/test/bin/smart-apply-patch.sh Tue Jun 14 15:05:39 2011
@@ -0,0 +1,72 @@
+#!/usr/bin/env bash
+# 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.
+
+set -e
+
+PATCH_FILE=$1
+if [ -z "$PATCH_FILE" ]; then
+ echo usage: $0 patch-file
+ exit 1
+fi
+
+PATCH=${PATCH:-patch} # allow overriding patch binary
+
+# Cleanup handler for temporary files
+TOCLEAN=""
+cleanup() {
+ rm $TOCLEAN
+ exit $1
+}
+trap "cleanup 1" HUP INT QUIT TERM
+
+# Allow passing "-" for stdin patches
+if [ "$PATCH_FILE" == "-" ]; then
+ PATCH_FILE=/tmp/tmp.in.$$
+ cat /dev/fd/0 > $PATCH_FILE
+ TOCLEAN="$TOCLEAN $PATCH_FILE"
+fi
+
+# Come up with a list of changed files into $TMP
+TMP=/tmp/tmp.paths.$$
+TOCLEAN="$TOCLEAN $TMP"
+grep '^+++\|^---' $PATCH_FILE | cut -c '5-' | grep -v /dev/null | sort | uniq > $TMP
+
+# Assume p0 to start
+PLEVEL=0
+
+# if all of the lines start with a/ or b/, then this is a git patch that
+# was generated without --no-prefix
+if ! grep -qv '^a/\|^b/' $TMP ; then
+ echo Looks like this is a git patch. Stripping a/ and b/ prefixes
+ echo and incrementing PLEVEL
+ PLEVEL=$[$PLEVEL + 1]
+ sed -i -e 's,^[ab]/,,' $TMP
+fi
+
+# if all of the lines start with common/, hdfs/, or mapreduce/, this is
+# relative to the hadoop root instead of the subproject root, so we need
+# to chop off another layer
+PREFIX_DIRS=$(cut -d '/' -f 1 $TMP | sort | uniq)
+if [[ "$PREFIX_DIRS" =~ ^(hdfs|common|mapreduce)$ ]]; then
+
+ echo Looks like this is relative to project root. Increasing PLEVEL
+ PLEVEL=$[$PLEVEL + 1]
+elif ! echo "$PREFIX_DIRS" | grep -vxq 'common\|hdfs\|mapreduce' ; then
+ echo Looks like this is a cross-subproject patch. Not supported!
+ exit 1
+fi
+
+echo Going to apply patch with: $PATCH -p$PLEVEL
+$PATCH -p$PLEVEL -E < $PATCH_FILE
+
+cleanup 0
Modified: hadoop/common/trunk/common/src/test/bin/test-patch.sh
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/common/src/test/bin/test-patch.sh?rev=1135633&r1=1135632&r2=1135633&view=diff
==============================================================================
--- hadoop/common/trunk/common/src/test/bin/test-patch.sh (original)
+++ hadoop/common/trunk/common/src/test/bin/test-patch.sh Tue Jun 14 15:05:39 2011
@@ -18,7 +18,8 @@ ulimit -n 1024
### Setup some variables.
### SVN_REVISION and BUILD_URL are set by Hudson if it is run by patch process
### Read variables from properties file
-. `dirname $0`/../test-patch.properties
+bindir=$(dirname $0)
+. $bindir/../test-patch.properties
###############################################################################
parseArgs() {
@@ -270,7 +271,8 @@ applyPatch () {
echo "======================================================================"
echo ""
echo ""
- $PATCH -E -p0 < $PATCH_DIR/patch
+ export PATCH
+ $bindir/smart-apply-patch.sh $PATCH_DIR/patch
if [[ $? != 0 ]] ; then
echo "PATCH APPLICATION FAILED"
JIRA_COMMENT="$JIRA_COMMENT