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 ji...@apache.org on 2015/05/06 01:20:52 UTC

[12/17] hadoop git commit: HADOOP-11917. test-patch.sh should work with ${BASEDIR}/patchprocess setups (aw)

HADOOP-11917. test-patch.sh should work with ${BASEDIR}/patchprocess setups (aw)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d33419ae
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d33419ae
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d33419ae

Branch: refs/heads/HDFS-7240
Commit: d33419ae01c528073f9f00ef1aadf153fed41222
Parents: 24d3a2d
Author: Allen Wittenauer <aw...@apache.org>
Authored: Tue May 5 11:26:31 2015 -0700
Committer: Allen Wittenauer <aw...@apache.org>
Committed: Tue May 5 11:26:31 2015 -0700

----------------------------------------------------------------------
 .gitignore                                      |  1 +
 dev-support/test-patch.sh                       | 78 +++++++++++++++++---
 hadoop-common-project/hadoop-common/CHANGES.txt |  3 +
 pom.xml                                         | 23 +++---
 4 files changed, 84 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/d33419ae/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index a49ad4b..779f507 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,4 @@ hadoop-tools/hadoop-openstack/src/test/resources/contract-test-options.xml
 hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/tla/yarnregistry.toolbox
 yarnregistry.pdf
 hadoop-tools/hadoop-aws/src/test/resources/contract-test-options.xml
+patchprocess/

http://git-wip-us.apache.org/repos/asf/hadoop/blob/d33419ae/dev-support/test-patch.sh
----------------------------------------------------------------------
diff --git a/dev-support/test-patch.sh b/dev-support/test-patch.sh
index 9f48c64..3759e9f 100755
--- a/dev-support/test-patch.sh
+++ b/dev-support/test-patch.sh
@@ -535,6 +535,26 @@ function echo_and_redirect
   "${@}" > "${logfile}" 2>&1
 }
 
+## @description is PATCH_DIR relative to BASEDIR?
+## @audience    public
+## @stability   stable
+## @replaceable yes
+## @returns     1 - no, PATCH_DIR
+## @returns     0 - yes, PATCH_DIR - BASEDIR
+function relative_patchdir
+{
+  local p=${PATCH_DIR#${BASEDIR}}
+
+  if [[ ${#p} -eq ${#PATCH_DIR} ]]; then
+    echo ${p}
+    return 1
+  fi
+  p=${p#/}
+  echo ${p}
+  return 0
+}
+
+
 ## @description  Print the usage information
 ## @audience     public
 ## @stability    stable
@@ -697,7 +717,8 @@ function parse_args
     esac
   done
 
-  # if we get a relative path, turn it absolute
+  # we need absolute dir for ${BASEDIR}
+  cd "${CWD}"
   BASEDIR=$(cd -P -- "${BASEDIR}" >/dev/null && pwd -P)
 
   if [[ ${BUILD_NATIVE} == "true" ]] ; then
@@ -723,6 +744,7 @@ function parse_args
     JENKINS=false
   fi
 
+  cd "${CWD}"
   if [[ ! -d ${PATCH_DIR} ]]; then
     mkdir -p "${PATCH_DIR}"
     if [[ $? == 0 ]] ; then
@@ -733,6 +755,9 @@ function parse_args
     fi
   fi
 
+  # we need absolute dir for PATCH_DIR
+  PATCH_DIR=$(cd -P -- "${PATCH_DIR}" >/dev/null && pwd -P)
+
   GITDIFFLINES=${PATCH_DIR}/gitdifflines.txt
 }
 
@@ -821,17 +846,36 @@ function find_changed_modules
 function git_checkout
 {
   local currentbranch
+  local exemptdir
 
   big_console_header "Confirming git environment"
 
+  cd "${BASEDIR}"
+  if [[ ! -d .git ]]; then
+    hadoop_error "ERROR: ${BASEDIR} is not a git repo."
+    cleanup_and_exit 1
+  fi
+
   if [[ ${RESETREPO} == "true" ]] ; then
-    cd "${BASEDIR}"
     ${GIT} reset --hard
     if [[ $? != 0 ]]; then
       hadoop_error "ERROR: git reset is failing"
       cleanup_and_exit 1
     fi
-    ${GIT} clean -xdf
+
+    # if PATCH_DIR is in BASEDIR, then we don't want
+    # git wiping it out.
+    exemptdir=$(relative_patchdir)
+    if [[ $? == 1 ]]; then
+      ${GIT} clean -xdf
+    else
+      # we do, however, want it emptied of all _files_.
+      # we need to leave _directories_ in case we are in
+      # re-exec mode (which places a directory full of stuff in it)
+      hadoop_debug "Exempting ${exemptdir} from clean"
+      rm "${PATCH_DIR}/*" 2>/dev/null
+      ${GIT} clean -xdf -e "${exemptdir}"
+    fi
     if [[ $? != 0 ]]; then
       hadoop_error "ERROR: git clean is failing"
       cleanup_and_exit 1
@@ -875,11 +919,6 @@ function git_checkout
     fi
 
   else
-    cd "${BASEDIR}"
-    if [[ ! -d .git ]]; then
-      hadoop_error "ERROR: ${BASEDIR} is not a git repo."
-      cleanup_and_exit 1
-    fi
 
     status=$(${GIT} status --porcelain)
     if [[ "${status}" != "" && -z ${DIRTY_WORKSPACE} ]] ; then
@@ -1000,6 +1039,16 @@ function verify_valid_branch
   local check=$2
   local i
 
+  # shortcut some common
+  # non-resolvable names
+  if [[ -z ${check} ]]; then
+    return 1
+  fi
+
+  if [[ ${check} == patch ]]; then
+    return 1
+  fi
+
   if [[ ${check} =~ ^git ]]; then
     ref=$(echo "${check}" | cut -f2 -dt)
     count=$(echo "${ref}" | wc -c | tr -d ' ')
@@ -2207,9 +2256,16 @@ function cleanup_and_exit
 
   if [[ ${JENKINS} == "true" ]] ; then
     if [[ -e "${PATCH_DIR}" ]] ; then
-      hadoop_debug "mv ${PATCH_DIR} ${BASEDIR} "
       if [[ -d "${PATCH_DIR}" ]]; then
-        mv "${PATCH_DIR}" "${BASEDIR}"
+        # if PATCH_DIR is already inside BASEDIR, then
+        # there is no need to move it since we assume that
+        # Jenkins or whatever already knows where it is at
+        # since it told us to put it there!
+        relative_patchdir >/dev/null
+        if [[ $? == 0 ]]; then
+          hadoop_debug "mv ${PATCH_DIR} ${BASEDIR}"
+          mv "${PATCH_DIR}" "${BASEDIR}"
+        fi
       fi
     fi
   fi
@@ -2442,6 +2498,8 @@ find_changed_files
 
 determine_needed_tests
 
+# from here on out, we'll be in ${BASEDIR} for cwd
+# routines need to pushd/popd if they change.
 git_checkout
 RESULT=$?
 if [[ ${JENKINS} == "true" ]] ; then

http://git-wip-us.apache.org/repos/asf/hadoop/blob/d33419ae/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index 5b2654a..1b33b37 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -533,6 +533,9 @@ Release 2.8.0 - UNRELEASED
     HADOOP-11911. test-patch should allow configuration of default branch
     (Sean Busbey via aw)
 
+    HADOOP-11917. test-patch.sh should work with ${BASEDIR}/patchprocess
+    setups (aw)
+
   OPTIMIZATIONS
 
     HADOOP-11785. Reduce the number of listStatus operation in distcp

http://git-wip-us.apache.org/repos/asf/hadoop/blob/d33419ae/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1ea52eb..8394324f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -178,7 +178,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
             </dependency>
           </dependencies>
         </plugin>
-        <!--This plugin's configuration is used to store Eclipse m2e settings only. 
+        <!--This plugin's configuration is used to store Eclipse m2e settings only.
         It has no influence on the Maven build itself.-->
         <plugin>
           <groupId>org.eclipse.m2e</groupId>
@@ -361,6 +361,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
             <exclude>.git/**</exclude>
             <exclude>.idea/**</exclude>
 	    <exclude>**/build/**</exclude>
+            <exclude>**/patchprocess/**</exclude>
          </excludes>
        </configuration>
       </plugin>
@@ -391,7 +392,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
       </plugin>
     </plugins>
   </build>
-  
+
   <reporting>
     <excludeDefaults>true</excludeDefaults>
     <plugins>
@@ -441,15 +442,15 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
                 </docletArtifact>
               </docletArtifacts>
               <useStandardDocletOptions>true</useStandardDocletOptions>
-    
+
               <!-- switch on dependency-driven aggregation -->
               <includeDependencySources>false</includeDependencySources>
-    
+
               <dependencySourceIncludes>
                 <!-- include ONLY dependencies I control -->
                 <dependencySourceInclude>org.apache.hadoop:hadoop-annotations</dependencySourceInclude>
               </dependencySourceIncludes>
-    
+
             </configuration>
             <reports>
               <report>aggregate</report>
@@ -472,7 +473,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
       </plugin>
     </plugins>
   </reporting>
-  
+
   <profiles>
     <profile>
       <id>src</id>
@@ -587,12 +588,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
       <properties>
         <cloverLicenseLocation>${user.home}/.clover.license</cloverLicenseLocation>
         <cloverDatabase>${project.build.directory}/clover/hadoop-coverage.db</cloverDatabase>
-        <!-- NB: This additional parametrization is made in order 
+        <!-- NB: This additional parametrization is made in order
              to be able to re-define these properties with "-Dk=v" maven options.
-             By some reason the expressions declared in clover 
-             docs like "${maven.clover.generateHtml}" do not work in that way. 
-             However, the below properties are confirmed to work: e.g. 
-             -DcloverGenHtml=false switches off the Html generation.  
+             By some reason the expressions declared in clover
+             docs like "${maven.clover.generateHtml}" do not work in that way.
+             However, the below properties are confirmed to work: e.g.
+             -DcloverGenHtml=false switches off the Html generation.
              The default values provided here exactly correspond to Clover defaults, so
              the behavior is 100% backwards compatible. -->
         <cloverAlwaysReport>true</cloverAlwaysReport>