Ver código fonte

HDFS-7774. Unresolved symbols error while compiling HDFS on Windows 7/32 bit. Contributed by Kiran Kumar M R.

(cherry picked from commit c6d5b37a1c4c3acc190f5f4e27109594efb7be8c)
cnauroth 10 anos atrás
pai
commit
5dfb793b05

+ 3 - 0
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

@@ -741,6 +741,9 @@ Release 2.7.0 - UNRELEASED
     HDFS-7843. A truncated file is corrupted after rollback from a rolling
     upgrade.  (szetszwo)
 
+    HDFS-7774. Unresolved symbols error while compiling HDFS on Windows 7/32 bit.
+    (Kiran Kumar M R via cnauroth)
+
     BREAKDOWN OF HDFS-7584 SUBTASKS AND RELATED JIRAS
 
       HDFS-7720. Quota by Storage Type API, tools and ClientNameNode

+ 4 - 1
hadoop-hdfs-project/hadoop-hdfs/pom.xml

@@ -438,10 +438,13 @@ http://maven.apache.org/xsd/maven-4.0.0.xsd">
                 </goals>
                 <configuration>
                   <target>
+                    <condition property="generator" value="Visual Studio 10" else="Visual Studio 10 Win64">
+                      <equals arg1="Win32" arg2="${env.PLATFORM}" />
+                    </condition>
                     <mkdir dir="${project.build.directory}/native"/>
                     <exec executable="cmake" dir="${project.build.directory}/native"
                         failonerror="true">
-                      <arg line="${basedir}/src/ -DGENERATED_JAVAH=${project.build.directory}/native/javah -DJVM_ARCH_DATA_MODEL=${sun.arch.data.model} -DREQUIRE_LIBWEBHDFS=${require.libwebhdfs} -DREQUIRE_FUSE=${require.fuse} -G 'Visual Studio 10 Win64'"/>
+                      <arg line="${basedir}/src/ -DGENERATED_JAVAH=${project.build.directory}/native/javah -DJVM_ARCH_DATA_MODEL=${sun.arch.data.model} -DREQUIRE_LIBWEBHDFS=${require.libwebhdfs} -DREQUIRE_FUSE=${require.fuse} -G '${generator}'"/>
                     </exec>
                     <exec executable="msbuild" dir="${project.build.directory}/native"
                         failonerror="true">

+ 1 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/os/windows/thread.c

@@ -28,7 +28,7 @@
  * @param toRun thread to run
  * @return DWORD result of running thread (always 0)
  */
-static DWORD runThread(LPVOID toRun) {
+static DWORD WINAPI runThread(LPVOID toRun) {
   const thread *t = toRun;
   t->start(t->arg);
   return 0;

+ 8 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/native/libhdfs/os/windows/thread_local_storage.c

@@ -96,13 +96,21 @@ static void NTAPI tlsCallback(PVOID h, DWORD reason, PVOID pv)
  * reference _tls_used, we guarantee that the binary retains the TLS directory.
  * See Microsoft Visual Studio 10.0/VC/crt/src/tlssup.c .
  */
+#ifdef _WIN64
 #pragma comment(linker, "/INCLUDE:_tls_used")
+#else
+#pragma comment(linker, "/INCLUDE:__tls_used")
+#endif
 
 /*
  * We must retain a pointer to the callback function.  Force the linker to keep
  * this symbol, even though it appears that nothing in our source code uses it.
  */
+#ifdef _WIN64
 #pragma comment(linker, "/INCLUDE:pTlsCallback")
+#else
+#pragma comment(linker, "/INCLUDE:_pTlsCallback")
+#endif
 
 /*
  * Define constant pointer to our callback, and tell the linker to pin it into