<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>pom-template.xml</filename>
    </added>
    <added>
      <filename>src/clj/clojure/version.properties</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -12,9 +12,44 @@
   &lt;property name=&quot;jsrc&quot; location=&quot;${src}/jvm&quot;/&gt;
   &lt;property name=&quot;cljsrc&quot; location=&quot;${src}/clj&quot;/&gt;
   &lt;property name=&quot;build&quot; location=&quot;classes&quot;/&gt;
-  &lt;property name=&quot;clojure_jar&quot; location=&quot;clojure.jar&quot;/&gt;
-  &lt;property name=&quot;slim_jar&quot; location=&quot;clojure-slim.jar&quot;/&gt;
-  &lt;property name=&quot;src_jar&quot; location=&quot;clojure-sources.jar&quot;/&gt;
+
+  &lt;!-- version related properties --&gt;
+  &lt;property file=&quot;${cljsrc}/clojure/version.properties&quot;/&gt;
+  &lt;!-- ensures all version properties are present --&gt;
+  &lt;fail unless=&quot;clojure.version.major&quot;/&gt;
+  &lt;fail unless=&quot;clojure.version.minor&quot;/&gt;
+  &lt;fail unless=&quot;clojure.version.interim&quot;/&gt;
+
+  &lt;condition property=&quot;clojure.version.incremental.label&quot;
+             value=&quot;.${clojure.version.incremental}&quot;
+             else=&quot;&quot;&gt;
+  	&lt;length string=&quot;${clojure.version.incremental}&quot; when=&quot;greater&quot; length=&quot;0&quot; /&gt;
+  &lt;/condition&gt;
+  &lt;condition property=&quot;clojure.version.qualifier.label&quot;
+             value=&quot;-${clojure.version.qualifier}&quot;
+             else=&quot;&quot;&gt;
+  	&lt;length string=&quot;${clojure.version.qualifier}&quot; when=&quot;greater&quot; length=&quot;0&quot; /&gt;
+  &lt;/condition&gt;
+  &lt;condition property=&quot;clojure.version.interim.label&quot;
+             value=&quot;-SNAPSHOT&quot;
+	         else=&quot;&quot;&gt;
+    &lt;!-- We place -SNAPSHOT whenever interim is not set to false, not only
+         if interim is set to true (this is less typo prone in the worst case --&gt;
+  	&lt;not&gt;&lt;equals arg1=&quot;${clojure.version.interim}&quot; arg2=&quot;false&quot; trim=&quot;true&quot;/&gt;&lt;/not&gt;
+  &lt;/condition&gt;
+	
+  &lt;property name=&quot;clojure.version.label&quot; 
+    value=&quot;${clojure.version.major}.${clojure.version.minor}${clojure.version.incremental.label}${clojure.version.qualifier.label}${clojure.version.interim.label}&quot;/&gt;
+	
+  &lt;!-- general filterset for use when clojure version must be copied --&gt;
+  &lt;filterset id=&quot;clojure-version-filterset&quot;&gt;
+    &lt;filter token=&quot;clojure-version&quot; value=&quot;${clojure.version.label}&quot;/&gt;
+  &lt;/filterset&gt;
+	
+  &lt;property name=&quot;clojure_jar&quot; location=&quot;clojure-${clojure.version.label}.jar&quot;/&gt;
+  &lt;property name=&quot;slim_jar&quot; location=&quot;clojure-slim-${clojure.version.label}.jar&quot;/&gt;
+  &lt;property name=&quot;src_jar&quot; location=&quot;clojure-sources-${clojure.version.label}.jar&quot;/&gt;
+
 
   &lt;!-- These make sense for building on tapestry.formos.com --&gt;
 
@@ -24,6 +59,17 @@
   &lt;target name=&quot;init&quot; depends=&quot;clean&quot;&gt;
     &lt;tstamp/&gt;
     &lt;mkdir dir=&quot;${build}&quot;/&gt;
+  	&lt;antcall target=&quot;init-version&quot;/&gt;
+  &lt;/target&gt;
+
+  &lt;target name=&quot;init-version&quot;&gt;
+    &lt;copy file=&quot;pom-template.xml&quot; 
+          tofile=&quot;pom.xml&quot;&gt;
+    	&lt;filterset refid=&quot;clojure-version-filterset&quot;/&gt;
+    &lt;/copy&gt;
+  	&lt;!--prevents users from modifying accidentally the generated pom.xml
+  	    works only on linux.--&gt;
+  	&lt;chmod file=&quot;pom.xml&quot; perm=&quot;ugo-w&quot;/&gt;
   &lt;/target&gt;
 
   &lt;target name=&quot;compile-java&quot; depends=&quot;init&quot;
@@ -49,7 +95,10 @@
   &lt;target name=&quot;clojure&quot; depends=&quot;compile-clojure&quot;
           description=&quot;Create clojure jar file.&quot;&gt;
     &lt;jar jarfile=&quot;${clojure_jar}&quot; basedir=&quot;${build}&quot;&gt;
-      &lt;fileset dir=&quot;${cljsrc}&quot; includes=&quot;**/*.clj&quot;/&gt;
+      &lt;fileset dir=&quot;${cljsrc}&quot;&gt;
+        &lt;include name=&quot;**/*.clj&quot;/&gt;
+        &lt;include name=&quot;clojure/version.properties&quot;/&gt;
+      &lt;/fileset&gt;
       &lt;manifest&gt;
         &lt;attribute name=&quot;Main-Class&quot; value=&quot;clojure.main&quot;/&gt;
         &lt;attribute name=&quot;Class-Path&quot; value=&quot;.&quot;/&gt;
@@ -63,7 +112,10 @@
       &lt;fileset dir=&quot;${build}&quot; includes=&quot;clojure/asm/**&quot;/&gt;
       &lt;fileset dir=&quot;${build}&quot; includes=&quot;clojure/lang/**&quot;/&gt;
       &lt;fileset dir=&quot;${build}&quot; includes=&quot;clojure/main.class&quot;/&gt;
-      &lt;fileset dir=&quot;${cljsrc}&quot; includes=&quot;**/*.clj&quot;/&gt;
+      &lt;fileset dir=&quot;${cljsrc}&quot;&gt;
+        &lt;include name=&quot;**/*.clj&quot;/&gt;
+        &lt;include name=&quot;clojure/version.properties&quot;/&gt;
+      &lt;/fileset&gt;
       &lt;manifest&gt;
         &lt;attribute name=&quot;Main-Class&quot; value=&quot;clojure.main&quot;/&gt;
         &lt;attribute name=&quot;Class-Path&quot; value=&quot;.&quot;/&gt;
@@ -73,7 +125,10 @@
 
   &lt;target name=&quot;clojure-sources&quot; depends=&quot;init&quot;
           description=&quot;Create a JAR of Java sources.&quot;&gt;
-    &lt;jar jarfile=&quot;${src_jar}&quot; basedir=&quot;${jsrc}&quot;/&gt;
+    &lt;jar jarfile=&quot;${src_jar}&quot; basedir=&quot;${jsrc}&quot; includes=&quot;**/*&quot;&gt;
+      &lt;fileset dir=&quot;${cljsrc}&quot;
+               includes=&quot;clojure/version.properties&quot;/&gt;
+    &lt;/jar&gt;
   &lt;/target&gt;
 
   &lt;target name=&quot;jar&quot; depends=&quot;clojure&quot;/&gt;
@@ -83,6 +138,7 @@
   &lt;target name=&quot;clean&quot;
           description=&quot;Remove autogenerated files and directories.&quot;&gt;
     &lt;delete dir=&quot;${build}&quot;/&gt;
+    &lt;delete file=&quot;pom.xml&quot;/&gt;
   &lt;/target&gt;
 
   &lt;target name=&quot;-setup-maven&quot;&gt;</diff>
      <filename>build.xml</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,6 @@
 
 (def unquote)
 (def unquote-splicing)
-(def *clojure-version* {:major 1 :minor 0 :incremental 0 :qualifier &quot;RC1&quot;})
 
 (def
  #^{:arglists '([&amp; items])
@@ -3939,11 +3938,6 @@
 (defmacro add-doc {:private true} [name docstring]
   `(alter-meta! (var ~name)  assoc :doc ~docstring))
 
-(add-doc *clojure-version*
-  &quot;The version info for Clojure core, as a map containing :major :minor :incremental and :qualifier keys. 
-  Feature releases may increment :minor and/or :major, bugfix releases will increment :incremental. 
-  Possible values of :qualifier include \&quot;GA\&quot;, \&quot;SNAPSHOT\&quot;, \&quot;RC-x\&quot; \&quot;BETA-x\&quot;&quot;)
-
 (add-doc *file*
   &quot;The path of the file being evaluated, as a String.
 
@@ -4023,7 +4017,6 @@
 (load &quot;core_print&quot;)
 (load &quot;genclass&quot;)
 
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; futures (needs proxy);;;;;;;;;;;;;;;;;;
 (defn future-call 
   &quot;Takes a function of no args and yields a future object that will
@@ -4091,3 +4084,38 @@
   `(letfn* ~(vec (interleave (map first fnspecs) 
                              (map #(cons `fn %) fnspecs)))
            ~@body))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; clojure version number ;;;;;;;;;;;;;;;;;;;;;;
+
+(let [version-stream (.getResourceAsStream (clojure.lang.RT/baseLoader) 
+                                           &quot;clojure/version.properties&quot;)
+      properties     (doto (new java.util.Properties) (.load version-stream))
+      prop (fn [k] (.getProperty properties (str &quot;clojure.version.&quot; k)))
+      clojure-version {:major       (prop &quot;major&quot;)
+                       :minor       (prop &quot;minor&quot;)
+                       :incremental (prop &quot;incremental&quot;)
+                       :qualifier   (prop &quot;qualifier&quot;)}]
+  (def *clojure-version* 
+    (if (not (= (prop &quot;interim&quot;) &quot;false&quot;))
+      (clojure.lang.RT/assoc clojure-version :interim true)
+      clojure-version)))
+      
+(add-doc *clojure-version*
+  &quot;The version info for Clojure core, as a map containing :major :minor 
+  :incremental and :qualifier keys. Feature releases may increment 
+  :minor and/or :major, bugfix releases will increment :incremental. 
+  Possible values of :qualifier include \&quot;GA\&quot;, \&quot;SNAPSHOT\&quot;, \&quot;RC-x\&quot; \&quot;BETA-x\&quot;&quot;)
+      
+(defn
+  clojure-version 
+  &quot;Returns clojure version as a printable string.&quot;
+  []
+  (str (:major *clojure-version*)
+       &quot;.&quot;
+       (:minor *clojure-version*)
+       (when-let [i (:incremental *clojure-version*)]
+         (str &quot;.&quot; i))
+       (when-let [q (:qualifier *clojure-version*)]
+         (str &quot;-&quot; q))
+       (when (:interim *clojure-version*)
+         &quot;-SNAPSHOT&quot;)))</diff>
      <filename>src/clj/clojure/core.clj</filename>
    </modified>
    <modified>
      <diff>@@ -243,7 +243,7 @@
   present&quot;
   [[_ &amp; args] inits]
   (when-not (some #(= eval-opt (init-dispatch (first %))) inits)
-    (println &quot;Clojure&quot;))
+    (println &quot;Clojure&quot; (clojure-version)))
   (repl :init #(initialize args inits))
   (prn)
   (System/exit 0))
@@ -320,7 +320,7 @@
 
   The init options may be repeated and mixed freely, but must appear before
   any main option. The appearance of any eval option before running a repl
-  suppresses the usual repl greeting message: \&quot;Clojure\&quot;.
+  suppresses the usual repl greeting message: \&quot;Clojure ~(clojure-version)\&quot;.
 
   Paths may be absolute or relative in the filesystem or relative to
   classpath. Classpath-relative paths have prefix of @ or @/&quot;</diff>
      <filename>src/clj/clojure/main.clj</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>pom.xml</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>e9212ed36488b6fab3809082e8771c19be81da84</id>
    </parent>
  </parents>
  <author>
    <name>Rich Hickey</name>
    <email>richhickey@gmail.com</email>
  </author>
  <url>http://github.com/stuarthalloway/clojure/commit/37ae4fb81152735afbc12a3334c59be5fecda81e</url>
  <id>37ae4fb81152735afbc12a3334c59be5fecda81e</id>
  <committed-date>2009-04-27T16:10:53-07:00</committed-date>
  <authored-date>2009-04-27T16:10:53-07:00</authored-date>
  <message>added support for versioned builds, alignment with *clojure-version*, (clojure-version) function. Note this will create jars with names like: clojure-1.0.0-RC1-SNAPSHOT.jar [issue 110], patch from laurent.petit</message>
  <tree>f88dbdb1ca8db3c99922c3a9a7552988ecd6ee7a</tree>
  <committer>
    <name>Rich Hickey</name>
    <email>richhickey@gmail.com</email>
  </committer>
</commit>
