build.xml 27 KB

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