<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -93,6 +93,41 @@
   &lt;target name=&quot;compile_clojure&quot; depends=&quot;init,check_hasclojure,compile_classes&quot;
           description=&quot;Compile Clojure sources.&quot;
           if=&quot;hasclojure&quot;&gt;
+
+    &lt;!-- Seek out the namespaces to compile. Note that this will fail if the actual name of a package includes an underscore, as
+    all underscores are converted to dashes. --&gt;
+    &lt;echo&gt;Locating namespaces to compile ...&lt;/echo&gt;
+
+    &lt;pathconvert pathsep=&quot; &quot; property=&quot;compile.namespaces&quot;&gt;
+      &lt;fileset dir=&quot;${src}&quot; includes=&quot;**/*.clj&quot;&gt;
+        &lt;!-- TODO: Seperate out the source into at least three root folders: one for namespaces with :gen-class, one for
+             ordinary namespaces (to be AOT compiled) and one for test namespaces (which, perhaps, should not be included
+             in the packaged JAR). 
+             Complicated exclude rules like this are a bad design smell for the build.xml and/or project layout.
+             --&gt;
+        &lt;exclude name=&quot;**/*_test.clj&quot; /&gt;
+        &lt;exclude name=&quot;**/test_*/**&quot; /&gt;
+        &lt;exclude name=&quot;clojure/contrib/javadoc.clj&quot; /&gt;
+        &lt;exclude name=&quot;clojure/contrib/jmx/*.clj&quot; /&gt;
+        &lt;exclude name=&quot;**/pprint/**&quot;/&gt;
+        &lt;exclude name=&quot;**/with_pull.clj&quot; /&gt;
+        &lt;exclude name=&quot;**/examples*/**&quot; /&gt;
+        &lt;exclude name=&quot;**/PersistentFnMap.clj&quot; /&gt;
+        &lt;exclude name=&quot;**/Condition.clj&quot; /&gt;
+        &lt;exclude name=&quot;**/Bean.clj&quot; /&gt;
+        &lt;exclude name=&quot;**/repl_utils/javadoc.clj&quot;/&gt;
+        &lt;exclude name=&quot;clojure/contrib/load_all.clj&quot;/&gt;
+        &lt;exclude name=&quot;**/tests.clj&quot;/&gt;
+      &lt;/fileset&gt;
+      &lt;chainedmapper&gt;
+        &lt;packagemapper from=&quot;${src}/*.clj&quot; to=&quot;*&quot; /&gt;
+        &lt;filtermapper&gt;
+          &lt;replacestring from=&quot;_&quot; to=&quot;-&quot; /&gt;
+        &lt;/filtermapper&gt;
+      &lt;/chainedmapper&gt;
+    &lt;/pathconvert&gt;
+
+    &lt;echo&gt;Compiling Clojure namespaces ...&lt;/echo&gt;
     &lt;java classname=&quot;clojure.lang.Compile&quot;&gt;
       &lt;classpath&gt;
         &lt;path location=&quot;${build}&quot;/&gt;
@@ -101,85 +136,7 @@
       &lt;/classpath&gt;
       &lt;sysproperty key=&quot;clojure.compile.path&quot; value=&quot;${build}&quot;/&gt;
       &lt;sysproperty key=&quot;java.awt.headless&quot; value=&quot;true&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.accumulators&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.agent-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.classpath&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.combinatorics&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.command-line&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.complex-numbers&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.cond&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.condition&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.core&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.dataflow&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.datalog&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.datalog.database&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.datalog.literals&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.datalog.magic&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.datalog.rules&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.datalog.softstrat&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.datalog.util&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.def&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.duck-streams&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.error-kit&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.except&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.mock&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.mock.test-adapter&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.fcase&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.find-namespaces&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.fnmap&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.gen-html-docs&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.generic&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.generic.arithmetic&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.generic.collection&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.generic.comparison&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.generic.functor&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.generic.math-functions&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.graph&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.greatest-least&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.import-static&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.jar&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.java-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.javadoc.browse&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.javadoc.browse-ui&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.jmx&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.json.read&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.json.write&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.lazy-seqs&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.lazy-xml&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.macro-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.macros&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.map-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.math&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.miglayout&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.miglayout.internal&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.mmap&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.monads&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.ns-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.pprint.ColumnWriter&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.pprint.PrettyWriter&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.pprint&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.pprint.utilities&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.probabilities.finite-distributions&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.probabilities.monte-carlo&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.probabilities.random-numbers&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.prxml&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.repl-ln&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.repl-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.seq-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.server-socket&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.set&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.shell-out&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.singleton&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.sql&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.sql.internal&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.str-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.stream-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.swing-utils&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.trace&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.types&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.with-ns&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.zip-filter&quot;/&gt;
-      &lt;arg value=&quot;clojure.contrib.zip-filter.xml&quot;/&gt;
+      &lt;arg line=&quot;${compile.namespaces}&quot; /&gt;
     &lt;/java&gt;
   &lt;/target&gt;
 </diff>
      <filename>build.xml</filename>
    </modified>
    <modified>
      <diff>@@ -18,7 +18,7 @@
 ;; go blind.
 
 
-(ns apply-macro)
+(ns clojure.contrib.apply-macro)
 
 ;; Copied from clojure.core/spread, which is private.
 (defn- spread</diff>
      <filename>src/clojure/contrib/apply_macro.clj</filename>
    </modified>
    <modified>
      <diff>@@ -480,7 +480,6 @@ emits the generated HTML to the path named by path.&quot;
      'clojure.contrib.command-line
      'clojure.contrib.complex-numbers
      'clojure.contrib.cond
-     'clojure.contrib.condt
      'clojure.contrib.def
      'clojure.contrib.duck-streams
      'clojure.contrib.enum</diff>
      <filename>src/clojure/contrib/gen_html_docs.clj</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,6 @@ combinatorics
 command-line
 complex-numbers
 cond
-condt
 def
 duck-streams
 error-kit
@@ -76,47 +75,15 @@ server-socket
 set
 shell-out
 sql
-stacktrace
 str-utils
+str-utils2
 stream-utils
 swing-utils
-template
-test-is
-test-is.tests
-test-clojure
-test-clojure.agents
-test-clojure.atoms
-test-clojure.clojure-main
-test-clojure.clojure-set
-test-clojure.clojure-xml
-test-clojure.clojure-zip
-test-clojure.compilation
-test-clojure.control
-test-clojure.data-structures
-test-clojure.evaluation
-test-clojure.for
-test-clojure.java-interop
-test-clojure.logic
-test-clojure.macros
-test-clojure.metadata
-test-clojure.multimethods
-test-clojure.ns-libs
-test-clojure.numbers
-test-clojure.other-functions
-test-clojure.parallel
-test-clojure.predicates
-test-clojure.printer
-test-clojure.reader
-test-clojure.refs
-test-clojure.sequences
-test-clojure.special
-test-clojure.vars
 test-contrib
 test-contrib.shell-out
 test-contrib.str-utils
 trace
 types
-walk
 zip-filter
 ])
 </diff>
      <filename>src/clojure/contrib/load_all.clj</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@
 	clojure.contrib.math))
 
 (deftest test-expt
-  (are (= _1 _2)
+  (are [x y] (= x y)
       (expt 2 3) 8
       (expt (expt 2 32) 2) (expt 2 64)
       (expt 4/3 2) 16/9
@@ -13,7 +13,7 @@
       (expt 5.3 4) (Math/pow 5.3 4)))
 
 (deftest test-abs
-  (are (= _1 _2)  
+  (are [x y] (= x y)
       (abs -2) 2
       (abs 0) 0
       (abs 5) 5
@@ -27,7 +27,7 @@
       (abs -2.8) 2.8))
 
 (deftest test-gcd
-  (are (= _1 _2)
+  (are [x y] (= x y)
       (gcd 4 3) 1
       (gcd 24 12) 12
       (gcd 24 27) 3
@@ -39,7 +39,7 @@
   (is (thrown? IllegalArgumentException (gcd 7.0 0))))
 
 (deftest test-lcm
-  (are (= _1 _2)
+  (are [x y] (= x y)
        (lcm 2 3) 6
        (lcm 3 2) 6
        (lcm -2 3) 6
@@ -54,7 +54,7 @@
   (is (thrown? IllegalArgumentException (lcm 7.0 0))))
 
 (deftest test-floor
-  (are (= _1 _2)
+  (are [x y] (= x y)
       (floor 6) 6
       (floor -6) -6
       (floor 123456789123456789) 123456789123456789
@@ -67,7 +67,7 @@
       (floor -4.3) -5.0))
 
 (deftest test-ceil
-  (are (= _1 _2)
+  (are [x y] (= x y)
       (ceil 6) 6
       (ceil -6) -6
       (ceil 123456789123456789) 123456789123456789
@@ -80,7 +80,7 @@
       (ceil -4.3) -4.0))
 
 (deftest test-round
-  (are (= _1 _2)
+  (are [x y] (= x y)
       (round 6) 6
       (round -6) -6
       (round 123456789123456789) 123456789123456789
@@ -105,14 +105,14 @@
       (round -4.5) -4))
 
 (deftest test-sqrt
-  (are (= _1 _2)
+  (are [x y] (= x y)
       (sqrt 9) 3
       (sqrt 16/9) 4/3
       (sqrt 0.25M) 0.5M
       (sqrt 2) (Math/sqrt 2)))
 
 (deftest test-exact-integer-sqrt
-  (are (= _1 _2)
+  (are [x y] (= x y)
    (exact-integer-sqrt 15) [3 6]
    (exact-integer-sqrt (inc (expt 2 64))) [(expt 2 32) 1]
    (exact-integer-sqrt 1000000000000) [1000000 0]))</diff>
      <filename>src/clojure/contrib/math/tests.clj</filename>
    </modified>
    <modified>
      <diff>@@ -24,8 +24,10 @@
       :seq-utils-test])
 
 (def test-namespaces
-     (map #(symbol (str &quot;clojure.contrib.test-contrib.&quot; (name %)))
-          test-names))
+		(concat
+			['clojure.contrib.math.tests 'clojure.contrib.core.tests]
+		(map #(symbol (str &quot;clojure.contrib.test-contrib.&quot; (name %)))
+		test-names)))
 
 (defn run
   &quot;Runs all defined tests&quot;</diff>
      <filename>src/clojure/contrib/test_contrib.clj</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>39618b6d881fb0c3b52de4929aa34134bb32ffdb</id>
    </parent>
  </parents>
  <author>
    <name>Stuart Halloway</name>
    <email>stu@thinkrelevance.com</email>
  </author>
  <url>http://github.com/richhickey/clojure-contrib/commit/04a22729691863a5b7e7b1b3c6c1157a02aff3b2</url>
  <id>04a22729691863a5b7e7b1b3c6c1157a02aff3b2</id>
  <committed-date>2009-09-28T14:56:31-07:00</committed-date>
  <authored-date>2009-09-28T14:56:31-07:00</authored-date>
  <message>compile str-utils2 and other build fixes, refs #22</message>
  <tree>f546ed7228bb1cb506eb53a510ea98ab11df3182</tree>
  <committer>
    <name>Stuart Halloway</name>
    <email>stu@thinkrelevance.com</email>
  </committer>
</commit>
