build.xml 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759
  1. <?xml version="1.0"?>
  2. <project name="Hadoop" default="compile">
  3. <!-- Load all the default properties, and any the user wants -->
  4. <!-- to contribute (without having to type -D or edit this file -->
  5. <property file="${user.home}/build.properties" />
  6. <property file="${basedir}/build.properties" />
  7. <property name="Name" value="Hadoop"/>
  8. <property name="name" value="hadoop"/>
  9. <property name="version" value="0.12.4-dev"/>
  10. <property name="final.name" value="${name}-${version}"/>
  11. <property name="year" value="2006"/>
  12. <property name="libhdfs.version" value="1"/>
  13. <property name="src.dir" value="${basedir}/src/java"/>
  14. <property name="native.src.dir" value="${basedir}/src/native"/>
  15. <property name="examples.dir" value="${basedir}/src/examples"/>
  16. <property name="lib.dir" value="${basedir}/lib"/>
  17. <property name="conf.dir" value="${basedir}/conf"/>
  18. <property name="docs.dir" value="${basedir}/docs"/>
  19. <property name="contrib.dir" value="${basedir}/src/contrib"/>
  20. <property name="docs.src" value="${basedir}/src/web"/>
  21. <property name="libhdfs.src" value="${basedir}/src/c++/libhdfs"/>
  22. <property name="build.dir" value="${basedir}/build"/>
  23. <property name="build.classes" value="${build.dir}/classes"/>
  24. <property name="build.src" value="${build.dir}/src"/>
  25. <property name="build.webapps" value="${build.dir}/webapps"/>
  26. <property name="build.examples" value="${build.dir}/examples"/>
  27. <property name="build.libhdfs" value="${build.dir}/libhdfs"/>
  28. <property name="build.platform" value="${os.name}-${os.arch}-${sun.arch.data.model}"/>
  29. <property name="build.native" value="${build.dir}/native/${build.platform}"/>
  30. <property name="build.docs" value="${build.dir}/docs"/>
  31. <property name="build.javadoc" value="${build.docs}/api"/>
  32. <property name="build.encoding" value="ISO-8859-1"/>
  33. <property name="test.src.dir" value="${basedir}/src/test"/>
  34. <property name="test.build.dir" value="${build.dir}/test"/>
  35. <property name="test.generated.dir" value="${test.build.dir}/src"/>
  36. <property name="test.build.data" value="${test.build.dir}/data"/>
  37. <property name="test.cache.data" value="${test.build.dir}/cache"/>
  38. <property name="test.log.dir" value="${test.build.dir}/logs"/>
  39. <property name="test.build.classes" value="${test.build.dir}/classes"/>
  40. <property name="test.build.testjar" value="${test.build.dir}/testjar"/>
  41. <property name="test.build.javadoc" value="${test.build.dir}/docs/api"/>
  42. <property name="test.include" value="Test*"/>
  43. <property name="test.classpath.id" value="test.classpath"/>
  44. <property name="test.output" value="no"/>
  45. <property name="test.timeout" value="900000"/>
  46. <property name="test.junit.output.format" value="plain"/>
  47. <property name="libhdfs.test.conf.dir" value="${libhdfs.src}/tests/conf"/>
  48. <property name="libhdfs.test.dir" value="${test.build.dir}/libhdfs"/>
  49. <property name="web.src.dir" value="${basedir}/src/web"/>
  50. <property name="src.webapps" value="${basedir}/src/webapps"/>
  51. <property name="javadoc.link.java"
  52. value="http://java.sun.com/j2se/1.5/docs/api/"/>
  53. <property name="javadoc.packages" value="org.apache.hadoop.*"/>
  54. <property name="dist.dir" value="${build.dir}/${final.name}"/>
  55. <property name="javac.debug" value="on"/>
  56. <property name="javac.optimize" value="on"/>
  57. <property name="javac.deprecation" value="off"/>
  58. <property name="javac.version" value="1.5"/>
  59. <property name="javac.args" value=""/>
  60. <property name="javac.args.warnings" value="-Xlint:unchecked"/>
  61. <!-- the normal classpath -->
  62. <path id="classpath">
  63. <pathelement location="${build.classes}"/>
  64. <fileset dir="${lib.dir}">
  65. <include name="**/*.jar" />
  66. <exclude name="**/excluded/" />
  67. </fileset>
  68. <pathelement location="${conf.dir}"/>
  69. </path>
  70. <!-- the unit test classpath: uses test.src.dir for configuration -->
  71. <path id="test.classpath">
  72. <pathelement location="${test.build.classes}" />
  73. <pathelement location="${test.src.dir}"/>
  74. <pathelement location="${build.dir}"/>
  75. <pathelement location="${build.examples}"/>
  76. <path refid="classpath"/>
  77. </path>
  78. <!-- the cluster test classpath: uses conf.dir for configuration -->
  79. <path id="test.cluster.classpath">
  80. <path refid="classpath"/>
  81. <pathelement location="${test.build.classes}" />
  82. <pathelement location="${test.src.dir}"/>
  83. <pathelement location="${build.dir}"/>
  84. </path>
  85. <!-- ====================================================== -->
  86. <!-- Stuff needed by all targets -->
  87. <!-- ====================================================== -->
  88. <target name="init">
  89. <mkdir dir="${build.dir}"/>
  90. <mkdir dir="${build.classes}"/>
  91. <mkdir dir="${build.src}"/>
  92. <mkdir dir="${build.webapps}/task/WEB-INF"/>
  93. <mkdir dir="${build.webapps}/job/WEB-INF"/>
  94. <mkdir dir="${build.webapps}/dfs/WEB-INF"/>
  95. <mkdir dir="${build.webapps}/datanode/WEB-INF"/>
  96. <mkdir dir="${build.examples}"/>
  97. <mkdir dir="${test.build.dir}"/>
  98. <mkdir dir="${test.build.classes}"/>
  99. <mkdir dir="${test.build.testjar}"/>
  100. <touch datetime="01/25/1971 2:00 pm">
  101. <fileset dir="${conf.dir}" includes="**/*.template"/>
  102. <fileset dir="${contrib.dir}" includes="**/*.template"/>
  103. </touch>
  104. <!-- copy all of the jsp and static files -->
  105. <copy todir="${build.webapps}">
  106. <fileset dir="${src.webapps}">
  107. <exclude name="**/*.jsp" />
  108. </fileset>
  109. </copy>
  110. <copy todir="${conf.dir}" verbose="true">
  111. <fileset dir="${conf.dir}" includes="**/*.template"/>
  112. <mapper type="glob" from="*.template" to="*"/>
  113. </copy>
  114. <copy todir="${contrib.dir}" verbose="true">
  115. <fileset dir="${contrib.dir}" includes="**/*.template"/>
  116. <mapper type="glob" from="*.template" to="*"/>
  117. </copy>
  118. <exec executable="sh">
  119. <arg line="src/saveVersion.sh ${version}"/>
  120. </exec>
  121. </target>
  122. <!-- ====================================================== -->
  123. <!-- Compile the Java files -->
  124. <!-- ====================================================== -->
  125. <taskdef classname="org.apache.jasper.JspC" name="jsp-compile" >
  126. <classpath refid="test.classpath"/>
  127. </taskdef>
  128. <target name="record-parser" depends="init" if="javacc.home">
  129. <javacc
  130. target="${src.dir}/org/apache/hadoop/record/compiler/generated/rcc.jj"
  131. outputdirectory="${src.dir}/org/apache/hadoop/record/compiler/generated"
  132. javacchome="${javacc.home}"
  133. />
  134. </target>
  135. <target name="compile-rcc-compiler" depends="init, record-parser">
  136. <javac
  137. encoding="${build.encoding}"
  138. srcdir="${src.dir}"
  139. includes="org/apache/hadoop/record/compiler/**/*.java"
  140. destdir="${build.classes}"
  141. debug="${javac.debug}"
  142. optimize="${javac.optimize}"
  143. target="${javac.version}"
  144. source="${javac.version}"
  145. deprecation="${javac.deprecation}">
  146. <compilerarg line="${javac.args}"/>
  147. <classpath refid="classpath"/>
  148. </javac>
  149. <taskdef name="recordcc" classname="org.apache.hadoop.record.compiler.ant.RccTask">
  150. <classpath refid="classpath" />
  151. </taskdef>
  152. </target>
  153. <target name="compile-core-classes" depends="init, compile-rcc-compiler">
  154. <jsp-compile
  155. uriroot="${src.webapps}/task"
  156. outputdir="${build.src}"
  157. package="org.apache.hadoop.mapred"
  158. webxml="${build.webapps}/task/WEB-INF/web.xml">
  159. </jsp-compile>
  160. <jsp-compile
  161. uriroot="${src.webapps}/job"
  162. outputdir="${build.src}"
  163. package="org.apache.hadoop.mapred"
  164. webxml="${build.webapps}/job/WEB-INF/web.xml">
  165. </jsp-compile>
  166. <jsp-compile
  167. uriroot="${src.webapps}/dfs"
  168. outputdir="${build.src}"
  169. package="org.apache.hadoop.dfs"
  170. webxml="${build.webapps}/dfs/WEB-INF/web.xml">
  171. </jsp-compile>
  172. <jsp-compile
  173. uriroot="${src.webapps}/datanode"
  174. outputdir="${build.src}"
  175. package="org.apache.hadoop.dfs"
  176. webxml="${build.webapps}/datanode/WEB-INF/web.xml">
  177. </jsp-compile>
  178. <!-- Compile Java files (excluding JSPs) checking warnings -->
  179. <javac
  180. encoding="${build.encoding}"
  181. srcdir="${src.dir};${build.src}"
  182. includes="org/apache/hadoop/**/*.java"
  183. excludes="org/apache/hadoop/**/*_jsp.java"
  184. destdir="${build.classes}"
  185. debug="${javac.debug}"
  186. optimize="${javac.optimize}"
  187. target="${javac.version}"
  188. source="${javac.version}"
  189. deprecation="${javac.deprecation}">
  190. <compilerarg line="${javac.args} ${javac.args.warnings}" />
  191. <classpath refid="classpath"/>
  192. </javac>
  193. <!-- Compile JSPs without checking warnings -->
  194. <javac
  195. encoding="${build.encoding}"
  196. srcdir="${src.dir};${build.src}"
  197. includes="org/apache/hadoop/**/*_jsp.java"
  198. destdir="${build.classes}"
  199. debug="${javac.debug}"
  200. optimize="${javac.optimize}"
  201. target="${javac.version}"
  202. source="${javac.version}"
  203. deprecation="${javac.deprecation}">
  204. <compilerarg line="${javac.args}" />
  205. <classpath refid="classpath"/>
  206. </javac>
  207. <copy todir="${build.classes}">
  208. <fileset
  209. dir="${src.dir}"
  210. includes="**/*.properties"
  211. />
  212. </copy>
  213. </target>
  214. <target name="compile-core-native" depends="compile-core-classes"
  215. if="compile.native">
  216. <mkdir dir="${build.native}/lib"/>
  217. <mkdir dir="${build.native}/src/org/apache/hadoop/io/compress/zlib"/>
  218. <mkdir dir="${build.native}/src/org/apache/hadoop/io/compress/lzo"/>
  219. <javah
  220. classpath="${build.classes}"
  221. destdir="${build.native}/src/org/apache/hadoop/io/compress/zlib"
  222. force="yes"
  223. verbose="yes"
  224. >
  225. <class name="org.apache.hadoop.io.compress.zlib.ZlibCompressor" />
  226. <class name="org.apache.hadoop.io.compress.zlib.ZlibDecompressor" />
  227. </javah>
  228. <javah
  229. classpath="${build.classes}"
  230. destdir="${build.native}/src/org/apache/hadoop/io/compress/lzo"
  231. force="yes"
  232. verbose="yes"
  233. >
  234. <class name="org.apache.hadoop.io.compress.lzo.LzoCompressor" />
  235. <class name="org.apache.hadoop.io.compress.lzo.LzoDecompressor" />
  236. </javah>
  237. <exec dir="${build.native}" executable="sh" failonerror="true">
  238. <env key="OS_NAME" value="${os.name}"/>
  239. <env key="OS_ARCH" value="${os.arch}"/>
  240. <env key="JVM_DATA_MODEL" value="${sun.arch.data.model}"/>
  241. <env key="HADOOP_NATIVE_SRCDIR" value="${native.src.dir}"/>
  242. <arg line="${native.src.dir}/configure"/>
  243. </exec>
  244. <exec dir="${build.native}" executable="make" failonerror="true">
  245. <env key="OS_NAME" value="${os.name}"/>
  246. <env key="OS_ARCH" value="${os.arch}"/>
  247. <env key="JVM_DATA_MODEL" value="${sun.arch.data.model}"/>
  248. <env key="HADOOP_NATIVE_SRCDIR" value="${native.src.dir}"/>
  249. </exec>
  250. <exec dir="${build.native}" executable="sh" failonerror="true">
  251. <arg line="${build.native}/libtool --mode=install cp ${build.native}/lib/libhadoop.la ${build.native}/lib"/>
  252. </exec>
  253. </target>
  254. <target name="compile-core" depends="compile-core-classes,compile-core-native">
  255. </target>
  256. <target name="compile-contrib" depends="compile-core">
  257. <subant target="deploy">
  258. <fileset file="${contrib.dir}/build.xml"/>
  259. </subant>
  260. </target>
  261. <target name="compile" depends="compile-core, compile-contrib">
  262. </target>
  263. <target name="compile-examples" depends="compile-core">
  264. <javac
  265. encoding="${build.encoding}"
  266. srcdir="${examples.dir}"
  267. includes="org/apache/hadoop/**/*.java"
  268. destdir="${build.examples}"
  269. debug="${javac.debug}"
  270. optimize="${javac.optimize}"
  271. target="${javac.version}"
  272. source="${javac.version}"
  273. deprecation="${javac.deprecation}">
  274. <compilerarg line="${javac.args} ${javac.args.warnings}" />
  275. <classpath refid="classpath"/>
  276. </javac>
  277. </target>
  278. <!-- ================================================================== -->
  279. <!-- Make hadoop.jar -->
  280. <!-- ================================================================== -->
  281. <!-- -->
  282. <!-- ================================================================== -->
  283. <target name="jar" depends="compile-core">
  284. <tar compression="gzip" destfile="${build.classes}/bin.tgz">
  285. <tarfileset dir="bin" mode="755"/>
  286. </tar>
  287. <jar jarfile="${build.dir}/${final.name}-core.jar"
  288. basedir="${build.classes}">
  289. <manifest>
  290. <section name="org/apache/hadoop">
  291. <attribute name="Implementation-Title" value="Hadoop"/>
  292. <attribute name="Implementation-Version" value="${version}"/>
  293. <attribute name="Implementation-Vendor" value="Apache"/>
  294. </section>
  295. </manifest>
  296. <fileset file="${conf.dir}/hadoop-default.xml"/>
  297. <fileset file="${conf.dir}/mapred-default.xml"/>
  298. <fileset file="${conf.dir}/commons-logging.properties"/>
  299. <fileset file="${conf.dir}/log4j.properties"/>
  300. <fileset file="${conf.dir}/hadoop-metrics.properties"/>
  301. <zipfileset dir="${build.webapps}" prefix="webapps"/>
  302. </jar>
  303. </target>
  304. <!-- ================================================================== -->
  305. <!-- Make the Hadoop examples jar. -->
  306. <!-- ================================================================== -->
  307. <!-- -->
  308. <!-- ================================================================== -->
  309. <target name="examples" depends="jar, compile-examples">
  310. <jar jarfile="${build.dir}/${final.name}-examples.jar"
  311. basedir="${build.examples}">
  312. <manifest>
  313. <attribute name="Main-Class"
  314. value="org/apache/hadoop/examples/ExampleDriver"/>
  315. </manifest>
  316. </jar>
  317. </target>
  318. <!-- ================================================================== -->
  319. <!-- Make the Hadoop metrics jar. (for use outside Hadoop) -->
  320. <!-- ================================================================== -->
  321. <!-- -->
  322. <!-- ================================================================== -->
  323. <target name="metrics.jar" depends="compile-core">
  324. <jar jarfile="${build.dir}/hadoop-metrics-${version}.jar"
  325. basedir="${build.classes}">
  326. <include name="**/metrics/**" />
  327. <exclude name="**/package.html" />
  328. </jar>
  329. </target>
  330. <target name="generate-test-records" depends="compile-rcc-compiler">
  331. <recordcc destdir="${test.generated.dir}">
  332. <fileset dir="${test.src.dir}"
  333. includes="**/*.jr" />
  334. </recordcc>
  335. </target>
  336. <!-- ================================================================== -->
  337. <!-- Compile test code -->
  338. <!-- ================================================================== -->
  339. <target name="compile-core-test" depends="compile-examples, generate-test-records">
  340. <javac
  341. encoding="${build.encoding}"
  342. srcdir="${test.generated.dir}"
  343. includes="org/apache/hadoop/**/*.java"
  344. destdir="${test.build.classes}"
  345. debug="${javac.debug}"
  346. optimize="${javac.optimize}"
  347. target="${javac.version}"
  348. source="${javac.version}"
  349. deprecation="${javac.deprecation}">
  350. <compilerarg line="${javac.args}" />
  351. <classpath refid="test.classpath"/>
  352. </javac>
  353. <javac
  354. encoding="${build.encoding}"
  355. srcdir="${test.src.dir}"
  356. includes="org/apache/hadoop/**/*.java"
  357. destdir="${test.build.classes}"
  358. debug="${javac.debug}"
  359. optimize="${javac.optimize}"
  360. target="${javac.version}"
  361. source="${javac.version}"
  362. deprecation="${javac.deprecation}">
  363. <compilerarg line="${javac.args} ${javac.args.warnings}" />
  364. <classpath refid="test.classpath"/>
  365. </javac>
  366. <javac
  367. encoding="${build.encoding}"
  368. srcdir="${test.src.dir}/testjar"
  369. includes="*.java"
  370. destdir="${test.build.testjar}"
  371. debug="${javac.debug}"
  372. optimize="${javac.optimize}"
  373. target="${javac.version}"
  374. source="${javac.version}"
  375. deprecation="${javac.deprecation}">
  376. <compilerarg line="${javac.args} ${javac.args.warnings}" />
  377. <classpath refid="test.classpath"/>
  378. </javac>
  379. <delete file="${test.build.testjar}/testjob.jar"/>
  380. <jar jarfile="${test.build.testjar}/testjob.jar"
  381. basedir="${test.build.testjar}">
  382. </jar>
  383. <jar jarfile="${build.dir}/${final.name}-test.jar"
  384. basedir="${test.build.classes}">
  385. <manifest>
  386. <attribute name="Main-Class"
  387. value="org/apache/hadoop/test/AllTestDriver"/>
  388. </manifest>
  389. </jar>
  390. <delete dir="${test.cache.data}"/>
  391. <mkdir dir="${test.cache.data}"/>
  392. <copy file="${test.src.dir}/org/apache/hadoop/mapred/test.txt" todir="${test.cache.data}"/>
  393. <copy file="${test.src.dir}/org/apache/hadoop/mapred/test.jar" todir="${test.cache.data}"/>
  394. <copy file="${test.src.dir}/org/apache/hadoop/mapred/test.zip" todir="${test.cache.data}"/>
  395. </target>
  396. <!-- ================================================================== -->
  397. <!-- Run unit tests -->
  398. <!-- ================================================================== -->
  399. <target name="test-core" depends="compile-core-test">
  400. <delete dir="${test.build.data}"/>
  401. <mkdir dir="${test.build.data}"/>
  402. <delete dir="${test.log.dir}"/>
  403. <mkdir dir="${test.log.dir}"/>
  404. <junit showoutput="${test.output}" printsummary="yes" haltonfailure="no"
  405. fork="yes" maxmemory="256m" dir="${basedir}" timeout="${test.timeout}"
  406. errorProperty="tests.failed" failureProperty="tests.failed">
  407. <sysproperty key="test.build.data" value="${test.build.data}"/>
  408. <sysproperty key="hadoop.log.dir" value="${test.log.dir}"/>
  409. <sysproperty key="test.src.dir" value="${test.src.dir}"/>
  410. <sysproperty key="java.library.path"
  411. value="${build.native}/lib:${lib.dir}/native/${build.platform}"/>
  412. <classpath refid="${test.classpath.id}"/>
  413. <formatter type="${test.junit.output.format}" />
  414. <batchtest todir="${test.build.dir}" unless="testcase">
  415. <fileset dir="${test.src.dir}"
  416. includes="**/${test.include}.java"
  417. excludes="**/${test.exclude}.java" />
  418. </batchtest>
  419. <batchtest todir="${test.build.dir}" if="testcase">
  420. <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/>
  421. </batchtest>
  422. </junit>
  423. <fail if="tests.failed">Tests failed!</fail>
  424. </target>
  425. <target name="test-contrib" depends="compile-core, compile-core-test">
  426. <subant target="test">
  427. <fileset file="${contrib.dir}/build.xml"/>
  428. </subant>
  429. </target>
  430. <target name="checkstyle" depends="check-for-checkstyle" if="checkstyle.present">
  431. <taskdef resource="checkstyletask.properties">
  432. <classpath>
  433. <fileset dir="${lib.dir}">
  434. <include name="excluded/checkstyle-all-*.jar"/>
  435. </fileset>
  436. </classpath>
  437. </taskdef>
  438. <mkdir dir="${test.build.dir}"/>
  439. <checkstyle config="${test.src.dir}/checkstyle.xml"
  440. failOnViolation="false">
  441. <fileset dir="${src.dir}" includes="**/*.java" excludes="**/generated/**"/>
  442. <formatter type="xml" toFile="${test.build.dir}/checkstyle-errors.xml"/>
  443. </checkstyle>
  444. <xslt style="${test.src.dir}/checkstyle-noframes-sorted.xsl"
  445. in="${test.build.dir}/checkstyle-errors.xml"
  446. out="${test.build.dir}/checkstyle-errors.html"/>
  447. </target>
  448. <target name="check-for-checkstyle">
  449. <available property="checkstyle.present" resource="checkstyletask.properties">
  450. <classpath>
  451. <fileset dir="${lib.dir}">
  452. <include name="excluded/checkstyle-all-*.jar"/>
  453. </fileset>
  454. </classpath>
  455. </available>
  456. </target>
  457. <target name="test" depends="test-core, test-contrib">
  458. </target>
  459. <!-- Run all unit tests, not just Test*, and use non-test configuration. -->
  460. <target name="test-cluster">
  461. <antcall target="test">
  462. <param name="test.include" value="*"/>
  463. <param name="test.classpath.id" value="test.cluster.classpath"/>
  464. </antcall>
  465. </target>
  466. <target name="nightly" depends="test, tar">
  467. </target>
  468. <!-- ================================================================== -->
  469. <!-- Documentation -->
  470. <!-- ================================================================== -->
  471. <target name="javadoc" depends="default-doc">
  472. <mkdir dir="${build.javadoc}"/>
  473. <javadoc
  474. overview="${src.dir}/overview.html"
  475. packagenames="org.apache.hadoop.*"
  476. destdir="${build.javadoc}"
  477. author="true"
  478. version="true"
  479. use="true"
  480. windowtitle="${Name} ${version} API"
  481. doctitle="${Name} ${version} API"
  482. bottom="Copyright &amp;copy; ${year} The Apache Software Foundation"
  483. >
  484. <packageset dir="${src.dir}"/>
  485. <packageset dir="${examples.dir}"/>
  486. <packageset dir="src/contrib/streaming/src/java"/>
  487. <packageset dir="src/contrib/abacus/src/java"/>
  488. <packageset dir="src/contrib/data_join/src/java"/>
  489. <link href="${javadoc.link.java}"/>
  490. <classpath refid="classpath"/>
  491. <group title="Core" packages="org.apache.*"/>
  492. <group title="Examples" packages="org.apache.hadoop.examples*"/>
  493. <group title="contrib: Streaming" packages="org.apache.hadoop.streaming*"/>
  494. <group title="contrib: Abacus" packages="org.apache.hadoop.abacus*"/>
  495. <group title="contrib: DataJoin" packages="org.apache.hadoop.contrib/join*"/>
  496. </javadoc>
  497. </target>
  498. <target name="default-doc">
  499. <style basedir="${conf.dir}" destdir="${build.docs}"
  500. includes="hadoop-default.xml" style="conf/configuration.xsl"/>
  501. <copy todir="${build.docs}">
  502. <fileset dir="${docs.dir}" />
  503. </copy>
  504. </target>
  505. <!-- ================================================================== -->
  506. <!-- D I S T R I B U T I O N -->
  507. <!-- ================================================================== -->
  508. <!-- -->
  509. <!-- ================================================================== -->
  510. <target name="package" depends="jar, javadoc, examples, compile-core-test, deploy-contrib">
  511. <mkdir dir="${dist.dir}"/>
  512. <mkdir dir="${dist.dir}/lib"/>
  513. <mkdir dir="${dist.dir}/contrib"/>
  514. <mkdir dir="${dist.dir}/bin"/>
  515. <mkdir dir="${dist.dir}/docs"/>
  516. <mkdir dir="${dist.dir}/docs/api"/>
  517. <copy todir="${dist.dir}/lib" includeEmptyDirs="false">
  518. <fileset dir="lib">
  519. <exclude name="**/native/**"/>
  520. </fileset>
  521. </copy>
  522. <exec dir="${dist.dir}" executable="sh" failonerror="true">
  523. <env key="BASE_NATIVE_LIB_DIR" value="${lib.dir}/native"/>
  524. <env key="BUILD_NATIVE_DIR" value="${build.dir}/native"/>
  525. <env key="DIST_LIB_DIR" value="${dist.dir}/lib/native"/>
  526. <arg line="${native.src.dir}/packageNativeHadoop.sh"/>
  527. </exec>
  528. <copy todir="${dist.dir}/contrib" includeEmptyDirs="false" flatten="true">
  529. <fileset dir="build/contrib">
  530. <include name="*/*.jar"/>
  531. </fileset>
  532. </copy>
  533. <copy todir="${dist.dir}/webapps">
  534. <fileset dir="${build.webapps}"/>
  535. </copy>
  536. <copy file="${build.dir}/${final.name}-core.jar" todir="${dist.dir}"/>
  537. <copy file="${build.dir}/${final.name}-examples.jar" todir="${dist.dir}"/>
  538. <copy file="${build.dir}/${final.name}-test.jar" todir="${dist.dir}"/>
  539. <copy todir="${dist.dir}/bin">
  540. <fileset dir="bin"/>
  541. </copy>
  542. <copy todir="${dist.dir}/conf">
  543. <fileset dir="${conf.dir}" excludes="**/*.template"/>
  544. </copy>
  545. <copy todir="${dist.dir}/docs">
  546. <fileset dir="${build.docs}"/>
  547. </copy>
  548. <copy todir="${dist.dir}">
  549. <fileset dir=".">
  550. <include name="*.txt" />
  551. </fileset>
  552. </copy>
  553. <copy todir="${dist.dir}/src" includeEmptyDirs="true">
  554. <fileset dir="src" excludes="**/*.template"/>
  555. </copy>
  556. <copy todir="${dist.dir}/" file="build.xml"/>
  557. <chmod perm="ugo+x" type="file">
  558. <fileset dir="${dist.dir}/bin"/>
  559. <fileset dir="${dist.dir}/src/contrib/ec2/bin"/>
  560. <fileset dir="${dist.dir}/src/contrib/ec2/bin/image"/>
  561. </chmod>
  562. </target>
  563. <!-- ================================================================== -->
  564. <!-- Make release tarball -->
  565. <!-- ================================================================== -->
  566. <target name="tar" depends="package">
  567. <tar compression="gzip" longfile="gnu"
  568. destfile="${build.dir}/${final.name}.tar.gz">
  569. <tarfileset dir="${build.dir}" mode="664">
  570. <exclude name="${final.name}/bin/*" />
  571. <exclude name="${final.name}/src/contrib/ec2/bin/*" />
  572. <exclude name="${final.name}/src/contrib/ec2/bin/image/*" />
  573. <include name="${final.name}/**" />
  574. </tarfileset>
  575. <tarfileset dir="${build.dir}" mode="755">
  576. <include name="${final.name}/bin/*" />
  577. <include name="${final.name}/src/contrib/ec2/bin/*" />
  578. <include name="${final.name}/src/contrib/ec2/bin/image/*" />
  579. </tarfileset>
  580. </tar>
  581. </target>
  582. <!-- ================================================================== -->
  583. <!-- Clean. Delete the build files, and their directories -->
  584. <!-- ================================================================== -->
  585. <target name="clean" depends="clean-contrib">
  586. <delete dir="${build.dir}"/>
  587. </target>
  588. <!-- ================================================================== -->
  589. <!-- Contrib targets. For now, they must be called explicitely -->
  590. <!-- Using subant instead of ant as a workaround for 30569 -->
  591. <!-- ================================================================== -->
  592. <target name="deploy-contrib" depends="compile-core">
  593. <subant target="deploy">
  594. <fileset file="src/contrib/build.xml"/>
  595. </subant>
  596. </target>
  597. <target name="clean-contrib">
  598. <subant target="clean">
  599. <fileset file="src/contrib/build.xml"/>
  600. </subant>
  601. </target>
  602. <!-- ================================================================== -->
  603. <!-- libhdfs targets. -->
  604. <!-- ================================================================== -->
  605. <target name="compile-libhdfs" depends="init">
  606. <mkdir dir="${build.libhdfs}"/>
  607. <exec dir="${libhdfs.src}" executable="make">
  608. <env key="OS_NAME" value="${os.name}"/>
  609. <env key="OS_ARCH" value="${os.arch}"/>
  610. <env key="SHLIB_VERSION" value="${libhdfs.version}"/>
  611. <env key="LIBHDFS_BUILD_DIR" value="${build.libhdfs}"/>
  612. </exec>
  613. </target>
  614. <target name="test-libhdfs" depends="compile-libhdfs, compile-core">
  615. <delete dir="${libhdfs.test.dir}"/>
  616. <mkdir dir="${libhdfs.test.dir}"/>
  617. <mkdir dir="${libhdfs.test.dir}/logs"/>
  618. <mkdir dir="${libhdfs.test.dir}/dfs/name"/>
  619. <exec dir="${libhdfs.src}" executable="make" failonerror="true">
  620. <env key="OS_NAME" value="${os.name}"/>
  621. <env key="OS_ARCH" value="${os.arch}"/>
  622. <env key="SHLIB_VERSION" value="${libhdfs.version}"/>
  623. <env key="LIBHDFS_BUILD_DIR" value="${build.libhdfs}"/>
  624. <env key="HADOOP_HOME" value="${basedir}"/>
  625. <env key="HADOOP_CONF_DIR" value="${libhdfs.test.conf.dir}"/>
  626. <env key="HADOOP_LOG_DIR" value="${libhdfs.test.dir}/logs"/>
  627. <arg value="test"/>
  628. </exec>
  629. </target>
  630. <target name="clean-libhdfs">
  631. <exec dir="${libhdfs.src}" executable="make">
  632. <env key="LIBHDFS_BUILD_DIR" value="${build.libhdfs}"/>
  633. <arg value="clean"/>
  634. </exec>
  635. </target>
  636. <target name="doc-libhdfs" depends="compile-libhdfs">
  637. <exec dir="${libhdfs.src}" executable="make">
  638. <arg value="doc"/>
  639. </exec>
  640. </target>
  641. <target name="package-libhdfs" depends="compile-libhdfs, doc-libhdfs, package">
  642. <mkdir dir="${dist.dir}/libhdfs"/>
  643. <copy todir="${dist.dir}/libhdfs">
  644. <fileset dir="${build.libhdfs}"
  645. casesensitive="yes"
  646. followsymlinks="false">
  647. <exclude name="**/tests/**"/>
  648. <exclude name="*.so"/>
  649. <exclude name="*.o"/>
  650. </fileset>
  651. </copy>
  652. <chmod perm="ugo+x" type="file">
  653. <fileset dir="${dist.dir}/libhdfs"/>
  654. </chmod>
  655. <exec dir="${dist.dir}/libhdfs" executable="ln">
  656. <arg line="-sf libhdfs.so.${libhdfs.version} libhdfs.so"/>
  657. </exec>
  658. </target>
  659. </project>