You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by to...@apache.org on 2009/12/17 19:24:11 UTC
svn commit: r891823 - in /hadoop/mapreduce/trunk: CHANGES.txt
src/contrib/sqoop/build.xml
src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/orm/CompilationManager.java
Author: tomwhite
Date: Thu Dec 17 18:24:10 2009
New Revision: 891823
URL: http://svn.apache.org/viewvc?rev=891823&view=rev
Log:
MAPREDUCE-1146. Sqoop dependencies break Eclipse build on Linux. Contributed by Aaron Kimball.
Modified:
hadoop/mapreduce/trunk/CHANGES.txt
hadoop/mapreduce/trunk/src/contrib/sqoop/build.xml
hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/orm/CompilationManager.java
Modified: hadoop/mapreduce/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/CHANGES.txt?rev=891823&r1=891822&r2=891823&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/CHANGES.txt (original)
+++ hadoop/mapreduce/trunk/CHANGES.txt Thu Dec 17 18:24:10 2009
@@ -150,6 +150,9 @@
MAPREDUCE-1213. TaskTrackers restart is faster because it deletes
distributed cache directory asynchronously. (Zheng Shao via dhruba)
+ MAPREDUCE-1146. Sqoop dependencies break Eclipse build on Linux.
+ (Aaron Kimball via tomwhite)
+
Release 0.21.0 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/mapreduce/trunk/src/contrib/sqoop/build.xml
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/src/contrib/sqoop/build.xml?rev=891823&r1=891822&r2=891823&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/src/contrib/sqoop/build.xml (original)
+++ hadoop/mapreduce/trunk/src/contrib/sqoop/build.xml Thu Dec 17 18:24:10 2009
@@ -132,8 +132,6 @@
<classpath>
<path refid="test.classpath"/>
<path refid="contrib-classpath"/>
- <!-- tools.jar from Sun JDK also required to invoke javac. -->
- <pathelement path="${env.JAVA_HOME}/lib/tools.jar" />
<!-- need thirdparty JDBC drivers for thirdparty tests -->
<fileset dir="${sqoop.thirdparty.lib.dir}"
includes="*.jar" />
Modified: hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/orm/CompilationManager.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/orm/CompilationManager.java?rev=891823&r1=891822&r2=891823&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/orm/CompilationManager.java (original)
+++ hadoop/mapreduce/trunk/src/contrib/sqoop/src/java/org/apache/hadoop/sqoop/orm/CompilationManager.java Thu Dec 17 18:24:10 2009
@@ -31,6 +31,11 @@
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.io.IOUtils;
@@ -109,9 +114,14 @@
// ensure that the jar output dir exists.
String jarOutDir = options.getJarOutputDir();
- boolean mkdirSuccess = new File(jarOutDir).mkdirs();
- if (!mkdirSuccess) {
- LOG.debug("Warning: Could not make directories for " + jarOutDir);
+ File jarOutDirObj = new File(jarOutDir);
+ if (!jarOutDirObj.exists()) {
+ boolean mkdirSuccess = jarOutDirObj.mkdirs();
+ if (!mkdirSuccess) {
+ LOG.debug("Warning: Could not make directories for " + jarOutDir);
+ }
+ } else if (LOG.isDebugEnabled()) {
+ LOG.debug("Found existing " + jarOutDir);
}
// find hadoop-*-core.jar for classpath.
@@ -141,8 +151,12 @@
String curClasspath = System.getProperty("java.class.path");
+ String srcOutDir = new File(options.getCodeOutputDir()).getAbsolutePath();
+ if (!srcOutDir.endsWith(File.separator)) {
+ srcOutDir = srcOutDir + File.separator;
+ }
+
args.add("-sourcepath");
- String srcOutDir = options.getCodeOutputDir();
args.add(srcOutDir);
args.add("-d");
@@ -151,21 +165,36 @@
args.add("-classpath");
args.add(curClasspath + File.pathSeparator + coreJar + sqoopJar);
- // add all the source files
+ JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+ StandardJavaFileManager fileManager =
+ compiler.getStandardFileManager(null, null, null);
+
+ ArrayList<String> srcFileNames = new ArrayList<String>();
for (String srcfile : sources) {
- args.add(srcOutDir + srcfile);
+ srcFileNames.add(srcOutDir + srcfile);
+ LOG.debug("Adding source file: " + srcOutDir + srcfile);
}
- StringBuilder sb = new StringBuilder();
- for (String arg : args) {
- sb.append(arg + " ");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Invoking javac with args:");
+ for (String arg : args) {
+ LOG.debug(" " + arg);
+ }
}
- // NOTE(aaron): Usage is at http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/javac.html
- LOG.debug("Invoking javac with args: " + sb.toString());
- int javacRet = com.sun.tools.javac.Main.compile(args.toArray(new String[0]));
- if (javacRet != 0) {
- throw new IOException("javac exited with status " + javacRet);
+ Iterable<? extends JavaFileObject> srcFileObjs =
+ fileManager.getJavaFileObjectsFromStrings(srcFileNames);
+ JavaCompiler.CompilationTask task = compiler.getTask(
+ null, // Write to stderr
+ fileManager,
+ null, // No special diagnostic handling
+ args,
+ null, // Compile all classes in the source compilation units
+ srcFileObjs);
+
+ boolean result = task.call();
+ if (!result) {
+ throw new IOException("Error returned by javac");
}
}