~ubuntu-branches/ubuntu/oneiric/weka/oneiric

« back to all changes in this revision

Viewing changes to .pc/jar.patch/build.xml

  • Committer: Bazaar Package Importer
  • Author(s): Soeren Sonnenburg
  • Date: 2010-04-23 22:33:11 UTC
  • Revision ID: james.westby@ubuntu.com-20100423223311-ctmj7n1pqeppqy2a
Tags: 3.6.0-3
* Bump Standards-Version to 3.8.4 (no changes required).
* Switch to dpkg-source 3.0 (quilt) format.
* Track only stable releases in watch file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<project name="weka" default="compile" basedir=".">
 
2
<!-- 
 
3
  ===========================================================================
 
4
   Ant build file for weka. Tested with ant 1.6.5 and Junit 3.8.2. Requires
 
5
   JavaMail and the java activation framework for mailing unit test results.
 
6
 
 
7
   Type ant -projecthelp for targets and descriptions.
 
8
   Assumes weka and tests (if unit testing) are in the same directory.
 
9
   Build file can reside and be executed from either inside weka or the
 
10
   directory containing weka.
 
11
 
 
12
   $Revision: 4877 $
 
13
  ===========================================================================
 
14
-->
 
15
 
 
16
  <!-- set global properties for this build -->
 
17
  <property name="src" value="src/main/java"/>
 
18
  <property name="src-test" value="src/test/java"/>
 
19
  <property name="lib" value="lib" />
 
20
  <property name="regression_tests_root" value="src/test/resources/wekarefs"/>
 
21
  <property name="build" value="build"/>
 
22
  <property name="dist"  value="dist"/>
 
23
  <property name="doc"  value="doc"/>
 
24
  <property name="reports"  value="reports"/>
 
25
  <property name="javac_max_memory" value="256m"/>
 
26
  <property name="run_tests_fail" value="true"/>
 
27
  <property name="headless" value="false"/>
 
28
  <property name="macdistrib" value="osx-distrib"/>
 
29
 
 
30
  <target name="init_all">
 
31
    <!-- Create the time stamp -->
 
32
    <tstamp/>
 
33
  </target>
 
34
 
 
35
   <!-- general classpath definition, incl. CLASSPATH env. variable,
 
36
   // but jars in lib directory have precedence over the CLASSPATH variable -->
 
37
  <path id="project.class.path">
 
38
    <fileset dir="${lib}">
 
39
      <include name="*.jar"/>
 
40
      <include name="*.zip"/>
 
41
    </fileset>
 
42
    <pathelement location="${build}/classes"/>
 
43
    <pathelement location="${build}/testcases"/>
 
44
    <pathelement path="${java.class.path}" />
 
45
  </path>
 
46
 
 
47
<!-- 
 
48
 ============================================================================
 
49
 Compilation and documentation making stuff
 
50
 ============================================================================
 
51
-->
 
52
 
 
53
  <target name="init_compile" depends="init_all">
 
54
    <!-- Create the build directory structure used by compile -->
 
55
    <mkdir dir="${build}/classes"/>
 
56
  </target>
 
57
 
 
58
  <!-- Compile the java code from ${src}/weka into ${build}/classes -->
 
59
  <target name="compile" depends="init_compile" 
 
60
   description="Compile weka and deposit class files in build/classes">
 
61
    <javac srcdir="${src}" 
 
62
      fork="yes" memoryMaximumSize="${javac_max_memory}"
 
63
      destdir="${build}/classes"
 
64
      optimize="${optimization}"
 
65
      debug="${debug}"
 
66
      deprecation="${deprecation}"
 
67
      source="1.5" target="1.5">
 
68
 
 
69
      <classpath refid="project.class.path" /> 
 
70
    </javac>
 
71
    <copy todir="${build}/classes" >
 
72
       <fileset dir="${src}">
 
73
         <include name="weka/**/*.excludes"/>
 
74
         <include name="weka/**/*.gif"/>
 
75
         <include name="weka/**/*.png"/>
 
76
         <include name="weka/**/*.jpeg"/>
 
77
         <include name="weka/**/*.jpg"/>
 
78
         <include name="weka/**/*.props"/>
 
79
         <include name="weka/**/*.txt"/>
 
80
         <include name="weka/**/*.xml"/>
 
81
         <include name="weka/**/DatabaseUtils.props.*"/>
 
82
         <include name="weka/gui/beans/README*"/>
 
83
         <include name="**/*.cup"/>
 
84
         <include name="**/*.flex"/>
 
85
         <include name="**/*.jflex"/>
 
86
         <include name="**/*.properties"/>
 
87
         <include name="**/*.default"/>
 
88
       </fileset>
 
89
    </copy>
 
90
    <rmic base="${build}/classes"
 
91
       classname="weka.experiment.RemoteEngine"/>
 
92
  </target>
 
93
 
 
94
  <!-- Make the javadocs -->
 
95
  <target name="docs" 
 
96
          depends="init_all" 
 
97
          description="Make javadocs into ./doc">
 
98
    <mkdir dir="${doc}"/>
 
99
    <javadoc sourcepath="${src}" 
 
100
             destdir="${doc}" 
 
101
             packagenames="weka.*"
 
102
             Author="yes" 
 
103
             Public="yes" 
 
104
             maxmemory="128m"/>
 
105
    
 
106
    <!-- insert the links to our homepage and documentation.html -->
 
107
    <replace dir="${doc}" 
 
108
             token="&#34;help-doc.html&#34;" 
 
109
             value="&#34;../documentation.html&#34; target=&#34;_blank&#34;">
 
110
      <include name="**/*.html"/>
 
111
    </replace>
 
112
      
 
113
    <replace dir="${doc}" 
 
114
             token="Help&lt;/B&gt;&lt;/FONT&gt;&lt;/A&gt;&#38;nbsp;&lt;/TD&gt;" 
 
115
             value="Help&lt;/B&gt;&lt;/FONT&gt;&lt;/A&gt;&#38;nbsp;&lt;/TD&gt; &lt;TD BGCOLOR=&#34;&#35;EEEEFF&#34; CLASS=&#34;NavBarCell1&#34;&gt; &lt;A HREF=&#34;http://www.cs.waikato.ac.nz/ml/weka/&#34; target=&#34;_blank&#34;&gt;&lt;FONT CLASS=&#34;NavBarFont1&#34;&gt;&lt;B&gt;Weka's home&lt;/B&gt;&lt;/FONT&gt;&lt;/A&gt;&#38;nbsp;&lt;/TD&gt;">
 
116
      <include name="**/*.html"/>
 
117
    </replace>
 
118
  </target> 
 
119
 
 
120
 
 
121
<!--
 
122
  ===========================================================================
 
123
  Unit testing stuff
 
124
  ===========================================================================
 
125
-->
 
126
<!-- Junit testing initialization -->
 
127
  <target name="init_tests" depends="init_all">
 
128
    <available property="junit.present" classname="junit.framework.TestCase"/>
 
129
    <!-- Create the build directory structure used by compile -->
 
130
    <mkdir dir="${build}/testcases"/>
 
131
    <mkdir dir="${reports}"/>
 
132
  </target>
 
133
 
 
134
  <!-- compile the testcases -->
 
135
  <target name="compile_tests" depends="init_tests, compile" 
 
136
   description="Compile unit tests into build/testcases">
 
137
     <javac srcdir="${src-test}" 
 
138
       fork="yes" memoryMaximumSize="${javac_max_memory}"
 
139
            destdir="${build}/testcases"
 
140
            optimize="${optimization}"
 
141
            debug="${debug}"
 
142
            deprecation="${deprecation}"
 
143
            source="1.5" target="1.5">
 
144
       <classpath refid="project.class.path" /> 
 
145
     </javac>
 
146
     <copy todir="${build}/testcases" >
 
147
       <fileset dir="${src-test}">
 
148
          <include name="**/*.arff"/>
 
149
          <include name="**/*.cost"/>
 
150
          <include name="**/*.xml"/>
 
151
          <include name="**/*.matrix"/>
 
152
       </fileset>
 
153
     </copy>
 
154
  </target>
 
155
 
 
156
  <!-- Run the test cases via junit's testrunner class.
 
157
   This is a faster, simpler option than running the junit task -->
 
158
  <target name="run_tests" depends="compile_tests" 
 
159
   description="Execute unit tests (fast)">
 
160
     <java fork="yes" dir="."
 
161
      classname="junit.textui.TestRunner"
 
162
      taskname="junit" failonerror="${run_tests_fail}">
 
163
         <arg value="weka.AllTests"/>
 
164
         <classpath refid="project.class.path" /> 
 
165
         <jvmarg value="-Djava.awt.headless=${headless}"/> 
 
166
         <jvmarg value="-Dweka.test.Regression.root=${regression_tests_root}"/>
 
167
     </java>
 
168
  </target>
 
169
 
 
170
<!-- Run the test cases and produce an html summary (in ${reports}-->
 
171
  <target name="junit" depends="compile_tests" 
 
172
   description="Execute unit tests and produce html summary (in ./reports)">
 
173
     <junit fork="yes" dir=".">
 
174
       <jvmarg value="-Djava.awt.headless=${headless}"/> 
 
175
       <jvmarg value="-Dweka.test.Regression.root=${regression_tests_root}"/>
 
176
        <formatter type="xml"/>
 
177
        <classpath refid="project.class.path" /> 
 
178
         <batchtest todir="${reports}">
 
179
            <fileset dir="${build}/testcases">
 
180
               <include name="**/*Test.class"/>
 
181
               <exclude name="**/AllTests.class"/>
 
182
            </fileset>
 
183
         </batchtest>
 
184
     </junit>
 
185
 
 
186
     <junitreport todir="${reports}">
 
187
        <fileset dir="${reports}">
 
188
           <include name="TEST-*.xml"/>
 
189
        </fileset>
 
190
        <report format="noframes" todir="${reports}"/>
 
191
     </junitreport>
 
192
  </target>
 
193
 
 
194
 
 
195
<!--
 
196
  ===========================================================================
 
197
  Release making stuff
 
198
  ===========================================================================
 
199
-->
 
200
 
 
201
  <target name = "init_dist" depends="init_all">
 
202
    <!-- Create the distribution directory -->
 
203
    <mkdir dir="${dist}"/>
 
204
  </target>
 
205
 
 
206
  <!-- Put everything in ${build}/classes into the weka.jar file -->
 
207
  <target name="exejar" depends="compile, init_dist"
 
208
   description="Create an executable jar file in ./dist">
 
209
    <jar jarfile="${dist}/weka.jar" 
 
210
      basedir="${build}/classes">
 
211
     <manifest>
 
212
       <attribute name="Main-Class" value="weka.gui.GUIChooser"/>
 
213
     </manifest>
 
214
    </jar>
 
215
  </target>
 
216
 
 
217
  <!-- Put all .java, and .props files into ${dist}/weka-src.jar-->
 
218
  <target name="srcjar" depends="init_dist, init_all"
 
219
   description="Create a jar file containing weka source in ./dist">  
 
220
    <!-- jar up the source -->
 
221
    <jar jarfile="${dist}/weka-src.jar" 
 
222
      basedir=".">
 
223
      <include name="*.xml"/>
 
224
      <include name="src/**/*.excludes"/>
 
225
      <include name="src/**/*.gif"/>
 
226
      <include name="src/**/*.java"/>
 
227
      <include name="src/**/*.jpeg"/>
 
228
      <include name="src/**/*.jpg"/>
 
229
      <include name="src/**/*.props"/>
 
230
      <include name="src/**/*.txt"/>
 
231
      <include name="src/**/*.xml"/>
 
232
      <include name="src/**/DatabaseUtils.props.*"/>
 
233
      <include name="src/**/weka/gui/beans/README*"/>
 
234
      <include name="src/**/*.cup"/>
 
235
      <include name="src/**/*.flex"/>
 
236
      <include name="src/**/*.jflex"/>
 
237
      <include name="src/**/*.properties"/>
 
238
      <include name="src/**/*.default"/>
 
239
    </jar>
 
240
  </target>
 
241
 
 
242
  <!-- make a jar file containing just the stuff needed for running a remote experiment server -->
 
243
  <target name="remotejar" depends="compile, init_dist"
 
244
   description="Create a jar file containing classes for remote experiments in ./dist">
 
245
     <jar jarfile="${dist}/remoteEngine.jar"
 
246
      basedir="${build}/classes"
 
247
      includes="weka/experiment/*_*.class,weka/experiment/RemoteEngine*.class,weka/experiment/Compute.class,weka/experiment/Task.class,weka/experiment/TaskStatusInfo.class,weka/core/Queue*.class,weka/core/RevisionHandler.class,weka/core/Utils.class,weka/core/RevisionUtils.class"/>
 
248
     <copy todir="${dist}" >
 
249
       <fileset dir="${src}/weka/experiment">
 
250
          <include name="remote.policy"/>
 
251
          <include name="remote.policy.example"/>
 
252
       </fileset>
 
253
    </copy>
 
254
    <jar jarfile="${dist}/remoteExperimentServer.jar"
 
255
     basedir="${dist}"
 
256
     includes="remoteEngine.jar,remote.policy,remote.policy.example"/>
 
257
     <delete file="${dist}/remoteEngine.jar"/>
 
258
     <delete file="${dist}/remote.policy"/>
 
259
     <delete file="${dist}/remote.policy.example"/>
 
260
   </target>
 
261
 
 
262
  <!-- Writes $release version number to weka/core/version.txt -->    
 
263
  <target name="set_version">
 
264
    <echo message="${release}" file="${src}/weka/core/version.txt"/>
 
265
    <echo message="${release}" file="${build}/classes/weka/core/version.txt"/>
 
266
  </target>
 
267
 
 
268
  <!-- Make a release -->
 
269
  <target name="release" depends="run_tests, release_sub_tasks"
 
270
   description="Make a release in ${release}. Run with -Drelease=&lt;number of release (eg. 3-4-1)&gt;.">
 
271
  </target>
 
272
 
 
273
  <target name="release_no_junit" depends="compile, release_sub_tasks"
 
274
   description="Make a release in ${release} without running junit tests. Run with -Drelease=&lt;number of release (eg. 3-4-1)&gt;.">
 
275
  </target>
 
276
 
 
277
  <target name="release_sub_tasks" depends="set_version, exejar, remotejar, srcjar, docs, changelog">
 
278
    <!-- copy the docs to dist/docs -->
 
279
 
 
280
    <copy todir="weka-${release}/weka-${release}/doc" >
 
281
       <fileset dir="${doc}"/>
 
282
    </copy>
 
283
    <copy todir="weka-${release}/weka-${release}">
 
284
       <fileset dir="${dist}"/>
 
285
    </copy>
 
286
    <copy todir="weka-${release}/weka-${release}/changelogs">
 
287
       <fileset dir="../wekadocs/changelogs"/>
 
288
    </copy>
 
289
    <copy todir="weka-${release}/weka-${release}/data">
 
290
       <fileset dir="../wekadocs/data"/>
 
291
    </copy>
 
292
    <copy todir="weka-${release}/weka-${release}">
 
293
      <fileset dir="../wekadocs">
 
294
        <include name="*.pdf"/>
 
295
      </fileset>
 
296
    </copy>
 
297
    <copy todir="weka-${release}/weka-${release}">
 
298
       <fileset dir="../wekadocs">
 
299
         <include name="README*"/>
 
300
         <include name="COPYING"/>
 
301
         <include name="documentation.*"/>
 
302
         <include name="weka.gif"/>
 
303
         <include name="weka.ico"/>
 
304
       </fileset>
 
305
    </copy>
 
306
    <zip destfile="weka-${release}.zip" 
 
307
     basedir="weka-${release}"/>
 
308
  </target>
 
309
 
 
310
  <!-- Make a Max OSX application (NOTE: assumes that release/release_no_junit or something that calls
 
311
       release has been run first!!!). Also requires Ant version 1.7.0 or higher -->
 
312
  <target name="osx_application" description="Make an OS X application. Run with -Drelease=&lt;number of release (eg. 3-4-1)&gt;. Assumes a release target has been run first!">
 
313
    <mkdir dir="${macdistrib}"/>
 
314
    <mkdir dir="${macdistrib}/weka-${release}"/>
 
315
    <copy todir="${macdistrib}/weka-${release}">
 
316
      <fileset dir="weka-${release}/weka-${release}"/>
 
317
    </copy>
 
318
    <taskdef name="jarbundler" 
 
319
             classname="net.sourceforge.jarbundler.JarBundler" />
 
320
    <jarbundler dir="${macdistrib}"
 
321
                name="weka-${release}"
 
322
                mainclass="weka.gui.GUIChooser"
 
323
                icon="${src}/weka/gui/weka_icon.icns"
 
324
                version="${release}"
 
325
                verbose="true"
 
326
                VMOptions="-Xmx256M"
 
327
                shortname="Weka"
 
328
                arguments=""
 
329
                workingdirectory="$APP_PACKAGE/Contents/Resources"
 
330
                jvmversion="1.5+">
 
331
      <javaproperty name="java.library.path" value="$APP_PACKAGE/Contents/Resources"/>
 
332
      <jarfileset dir="weka-${release}/weka-${release}">
 
333
        <include name="weka.jar"/>
 
334
      </jarfileset>
 
335
    </jarbundler>
 
336
 
 
337
    <!-- Make a .dmg disk image -->
 
338
    <exec executable="/usr/bin/hdiutil" os="Mac OS X">
 
339
      <arg value="create"/>
 
340
      <arg value="-srcfolder"/>
 
341
      <arg value="${macdistrib}"/>
 
342
      <arg value="-volname"/>
 
343
      <arg value="weka-${release}"/>
 
344
      <arg value="-ov"/>
 
345
      <arg value="${macdistrib}/weka-${release}.dmg"/>
 
346
    </exec>
 
347
  </target>
 
348
 
 
349
<!-- New subversion stuff -->
 
350
 <target name="svnCheckout" description="Checkout from subversion. Run with -Dsvn_username=username -Dsvn_password=password -Dweka_branch=&lt;branch name (e.g. trunk, branches/book2ndEd-branch)&gt;.">
 
351
    <property name="source-root" value="."/>
 
352
    <property name="repository.URL" value="https://svn.scms.waikato.ac.nz/svn/weka"/>
 
353
    <java classname="org.tmatesoft.svn.cli.SVN"
 
354
       dir="${source-root}/" fork="true">
 
355
      <arg value="co"/>
 
356
      <arg value="--username"/>
 
357
      <arg value="${svn_username}"/>
 
358
      <arg value="--password"/>
 
359
      <arg value="${svn_password}"/>
 
360
      <arg value="${repository.URL}/${weka_branch}/weka"/>
 
361
      <classpath>
 
362
        <pathelement location="${ant.home}/lib/svnkit.jar" />
 
363
        <pathelement location="${ant.home}/lib/svnkit-cli.jar" />
 
364
      </classpath>
 
365
    </java>
 
366
    <java classname="org.tmatesoft.svn.cli.SVN"
 
367
       dir="${source-root}/" fork="true">
 
368
      <arg value="co"/>
 
369
      <arg value="--username"/>
 
370
      <arg value="${svn_username}"/>
 
371
      <arg value="--password"/>
 
372
      <arg value="${svn_password}"/>
 
373
      <arg value="${repository.URL}/${weka_branch}/wekadocs"/>
 
374
      <classpath>
 
375
        <pathelement location="${ant.home}/lib/svnkit.jar" />
 
376
        <pathelement location="${ant.home}/lib/svnkit-cli.jar" />
 
377
      </classpath>
 
378
    </java>
 
379
    <java classname="org.tmatesoft.svn.cli.SVN"
 
380
       dir="${source-root}/" fork="true">
 
381
      <arg value="co"/>
 
382
      <arg value="--username"/>
 
383
      <arg value="${svn_username}"/>
 
384
      <arg value="--password"/>
 
385
      <arg value="${svn_password}"/>
 
386
      <arg value="${repository.URL}/${weka_branch}/installer"/>
 
387
      <classpath>
 
388
        <pathelement location="${ant.home}/lib/svnkit.jar" />
 
389
        <pathelement location="${ant.home}/lib/svnkit-cli.jar" />
 
390
      </classpath>
 
391
    </java>
 
392
  </target>
 
393
 
 
394
   <target name="changelog"
 
395
    description="Create a changelog file for a release of Weka. Run with -Dsvn_username=username -Dsvn_password=password -Drelease=&lt;number of release (eg. 3-4-1)&gt;, -Ddate_range=&lt;date range for changes (eg. {2008-07-16}:{2008-09-29})&gt;, -Dweka_branch=&lt;branch name (e.g. trunk, branches/book2ndEd-branch)&gt;.">
 
396
    <property name="repository.URL" value="https://svn.scms.waikato.ac.nz/svn/weka"/>
 
397
    <java classname="org.tmatesoft.svn.cli.SVN" fork="true"
 
398
          output="../wekadocs/changelogs/CHANGELOG-${release}">
 
399
      <arg value="log"/>
 
400
      <arg value="--username"/>
 
401
      <arg value="${svn_username}"/>
 
402
      <arg value="--password"/>
 
403
      <arg value="${svn_password}"/>
 
404
      <arg value="-r"/>
 
405
      <arg value="${date_range}"/>
 
406
      <arg value="-v"/>
 
407
      <arg value="${repository.URL}/${weka_branch}/weka/src/main/java/weka"/>
 
408
      <classpath>
 
409
        <pathelement location="${ant.home}/lib/svnkit.jar" />
 
410
        <pathelement location="${ant.home}/lib/svnkit-cli.jar" />
 
411
      </classpath>
 
412
    </java>
 
413
  </target>
 
414
 
 
415
  <!-- This target is used for an automated nightly/weekly build job -->
 
416
  <target name="nightly_build"
 
417
          depends="init_tests"
 
418
          description="Does a svn checkout, builds, runs unit tests, and mails the output to mail recipients (run ant with -Dsvn_username=username -Dsvn_password=password -Dweka_branch=branch -Dmail_recipients=&lt;email,email,...&gt; -Dmail_sender=email -Dmail_smtp_host=smtp-server)">
 
419
 
 
420
     <!-- run the build process -->
 
421
     <ant antfile="${ant.file}" target="svnCheckout" output="${reports}/nightly_build-init.txt">
 
422
       <property name="mail_smtp_host" value="${mail_smtp_host}"/>
 
423
       <property name="mail_sender" value="${mail_sender}"/>
 
424
       <property name="mail_recipients" value="${mail_recipients}"/>
 
425
       <property name="svn_username" value="${svn_username}"/>
 
426
       <property name="svn_password" value="${svn_password}"/>
 
427
       <property name="weka_branch" value="${weka_branch}"/>
 
428
     </ant>
 
429
 
 
430
     <ant antfile="${ant.file}" dir="weka" target="run_tests" output="../${reports}/nightly_build-results.txt">
 
431
       <property name="mail_smtp_host" value="${mail_smtp_host}"/>
 
432
       <property name="mail_sender" value="${mail_sender}"/>
 
433
       <property name="mail_recipients" value="${mail_recipients}"/>
 
434
       <property name="run_tests_fail" value="false"/>
 
435
       <property name="headless" value="${headless}"/>
 
436
     </ant>
 
437
 
 
438
     <!-- mail the results -->
 
439
     <mail messageMimeType="text/html"
 
440
               tolist="${mail_recipients}"
 
441
               mailhost="${mail_smtp_host}"
 
442
               subject="nightly build results (${weka_branch}): ${TODAY}"
 
443
               from="${mail_sender}">
 
444
       <fileset dir="${reports}">
 
445
         <include name="nightly_build*.*"/>
 
446
       </fileset>
 
447
     </mail>
 
448
  </target>
 
449
 
 
450
 
 
451
<!-- Clean -->
 
452
  <target name="clean" depends="init_all"
 
453
   description="Removes the build, dist and reports directories">
 
454
    <!-- Delete the ${build} and ${dist} directory trees -->
 
455
    <delete dir="${build}"/>
 
456
    <delete dir="${dist}"/>
 
457
    <delete dir="${reports}"/>
 
458
  </target>
 
459
 
 
460
  <target name="superclean" depends="clean"
 
461
   description="Clean plus removes source trees! and doc directories">
 
462
  <!-- WARNING, this deletes the source and doc directories -->
 
463
    <delete dir="${src}"/>
 
464
    <delete dir="${doc}"/>
 
465
  </target>
 
466
</project>