Pārlūkot izejas kodu

Merge -r 1214789:1214790 from trunk to branch. FIXES: HADOOP-7917

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1214792 13f79535-47bb-0310-9956-ffa450edef68
Alejandro Abdelnur 13 gadi atpakaļ
vecāks
revīzija
1a231a0b22

+ 2 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -91,6 +91,8 @@ Release 0.23.1 - Unreleased
 
    HADOOP-7810 move hadoop archive to core from tools. (tucu)
 
+   HADOOP_7917. compilation of protobuf files fails in windows/cygwin. (tucu)
+
 Release 0.23.0 - 2011-11-01 
 
   INCOMPATIBLE CHANGES

+ 70 - 0
hadoop-common-project/hadoop-common/pom.xml

@@ -294,6 +294,76 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
+          <execution>
+            <id>compile-proto</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <target>
+                <echo file="target/compile-proto.sh">
+                    PROTO_DIR=src/main/proto
+                    JAVA_DIR=target/generated-sources/java
+                    which cygpath 2> /dev/null
+                    if [ $? = 1 ]; then
+                      IS_WIN=false
+                    else
+                      IS_WIN=true
+                      WIN_PROTO_DIR=`cygpath --windows $PROTO_DIR`
+                      WIN_JAVA_DIR=`cygpath --windows $JAVA_DIR`
+                    fi
+                    mkdir -p $JAVA_DIR 2> /dev/null
+                    for PROTO_FILE in `ls $PROTO_DIR/*.proto 2> /dev/null`
+                    do
+                        if [ "$IS_WIN" = "true" ]; then
+                          protoc -I$WIN_PROTO_DIR --java_out=$WIN_JAVA_DIR $PROTO_FILE
+                        else
+                          protoc -I$PROTO_DIR --java_out=$JAVA_DIR $PROTO_FILE
+                        fi
+                    done
+                </echo>
+                <exec executable="sh" dir="${basedir}" failonerror="true">
+                  <arg line="target/compile-proto.sh"/>
+                </exec>
+              </target>
+            </configuration>
+          </execution>
+          <execution>
+            <id>compile-test-proto</id>
+            <phase>generate-test-sources</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <target>
+                <echo file="target/compile-test-proto.sh">
+                    PROTO_DIR=src/test/proto
+                    JAVA_DIR=target/generated-test-sources/java
+                    which cygpath 2> /dev/null
+                    if [ $? = 1 ]; then
+                      IS_WIN=false
+                    else
+                      IS_WIN=true
+                      WIN_PROTO_DIR=`cygpath --windows $PROTO_DIR`
+                      WIN_JAVA_DIR=`cygpath --windows $JAVA_DIR`
+                    fi
+                    mkdir -p $JAVA_DIR 2> /dev/null
+                    for PROTO_FILE in `ls $PROTO_DIR/*.proto 2> /dev/null`
+                    do
+                        if [ "$IS_WIN" = "true" ]; then
+                          protoc -I$WIN_PROTO_DIR --java_out=$WIN_JAVA_DIR $PROTO_FILE
+                        else
+                          protoc -I$PROTO_DIR --java_out=$JAVA_DIR $PROTO_FILE
+                        fi
+                    done
+                </echo>
+                <exec executable="sh" dir="${basedir}" failonerror="true">
+                  <arg line="target/compile-test-proto.sh"/>
+                </exec>
+              </target>
+            </configuration>
+          </execution>
           <execution>
             <id>save-version</id>
             <phase>generate-sources</phase>

+ 22 - 10
hadoop-hdfs-project/hadoop-hdfs/pom.xml

@@ -224,17 +224,29 @@
             </goals>
             <configuration>
               <target>
-                <echo file="${project.build.directory}/compile-proto.sh">
-                  PROTO_DIR=${basedir}/src/main/proto
-                  ls $PROTO_DIR &amp;> /dev/null
-                  if [ $? = 0 ]; then
-                    JAVA_DIR=${project.build.directory}/generated-sources/java
-                    mkdir -p $JAVA_DIR
-                    ls $PROTO_DIR/*.proto | xargs -n 1 protoc -I$PROTO_DIR --java_out=$JAVA_DIR
-                  fi
+                <echo file="target/compile-proto.sh">
+                    PROTO_DIR=src/main/proto
+                    JAVA_DIR=target/generated-sources/java
+                    which cygpath 2> /dev/null
+                    if [ $? = 1 ]; then
+                      IS_WIN=false
+                    else
+                      IS_WIN=true
+                      WIN_PROTO_DIR=`cygpath --windows $PROTO_DIR`
+                      WIN_JAVA_DIR=`cygpath --windows $JAVA_DIR`
+                    fi
+                    mkdir -p $JAVA_DIR 2> /dev/null
+                    for PROTO_FILE in `ls $PROTO_DIR/*.proto 2> /dev/null`
+                    do
+                        if [ "$IS_WIN" = "true" ]; then
+                          protoc -I$WIN_PROTO_DIR --java_out=$WIN_JAVA_DIR $PROTO_FILE
+                        else
+                          protoc -I$PROTO_DIR --java_out=$JAVA_DIR $PROTO_FILE
+                        fi
+                    done
                 </echo>
-                <exec executable="sh" dir="${project.build.directory}" failonerror="true">
-                  <arg line="./compile-proto.sh"/>
+                <exec executable="sh" dir="${basedir}" failonerror="true">
+                  <arg line="target/compile-proto.sh"/>
                 </exec>
               </target>
             </configuration>