summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Suereth <joshua.suereth@gmail.com>2012-03-16 01:05:31 -0400
committerJosh Suereth <joshua.suereth@gmail.com>2012-03-16 12:08:42 -0400
commit1d8037bbf56b303d69cd3e8faafc05fc5fc5db3e (patch)
tree29f06951c7ee8c161906a50ec0cfcab61ef09ea0
parent479aee3617e952d8705b95ef2ea3a155914dd03c (diff)
downloadscala-1d8037bbf56b303d69cd3e8faafc05fc5fc5db3e.tar.gz
scala-1d8037bbf56b303d69cd3e8faafc05fc5fc5db3e.tar.bz2
scala-1d8037bbf56b303d69cd3e8faafc05fc5fc5db3e.zip
Finished migrating to new versioning scheme
Conflicts: build.xml tools/get-scala-revision.bat
-rw-r--r--build.xml43
-rw-r--r--src/library/scala/util/Properties.scala3
-rwxr-xr-xtools/get-scala-commit-date16
-rw-r--r--tools/get-scala-commit-date.bat24
-rwxr-xr-xtools/get-scala-commit-drift40
-rw-r--r--tools/get-scala-commit-drift.bat21
-rwxr-xr-xtools/get-scala-commit-sha (renamed from tools/get-scala-revision)13
-rw-r--r--tools/get-scala-commit-sha.bat21
-rw-r--r--tools/get-scala-revision.bat27
9 files changed, 158 insertions, 50 deletions
diff --git a/build.xml b/build.xml
index 1b92893b5d..7d05f02e2e 100644
--- a/build.xml
+++ b/build.xml
@@ -245,21 +245,21 @@ INITIALISATION
</condition>
</target>
<target name="init.build.snapshot" unless="build.release">
- <property name="version.suffix" value="dev"/>
<property name="maven.version.suffix" value="-SNAPSHOT"/>
</target>
- <target name="init.build.release" if="build.release" unless="version.hasbuildnum" depends="init.hasbuildnum">
- <property name="version.suffix" value="v0"/>
+ <target name="init.build.release" if="build.release" depends="init.hasbuildnum, init.build.snapshot">
<property name="maven.version.suffix" value=""/>
</target>
+ <target name="init.build.nopatch.release" unless="version.hasbuildnum" depends="init.hasbuildnum">
+ <property name="version.suffix" value=""/>
+ </target>
<!-- funny thing, ant is. Can only specify *one* property in if check. Guaranteed that both are true here,
since properties are immutable. -->
- <target name="init.build.patch.release" if="version.hasbuildnum" depends="init.hasbuildnum, init.build.snapshot">
- <property name="version.suffix" value="v${version.bnum}"/>
- <property name="maven.version.suffix" value="-${version.bnum}"/>
+ <target name="init.build.patch.release" if="version.hasbuildnum" depends="init.build.nopatch.release">
+ <property name="version.suffix" value="-${version.bnum}"/>
</target>
- <target name="init.build.suffix.done" depends="init.build.snapshot, init.build.release, init.build.patch.release"/>
+ <target name="init.build.suffix.done" depends="init.build.release, init.build.patch.release"/>
<target name="init" depends="init.jars, init.build.suffix.done">
<!-- scalac.args.optimise is selectively overridden in certain antcall tasks. -->
@@ -280,6 +280,15 @@ INITIALISATION
<condition property="os.win">
<os family="windows"/>
</condition>
+
+ <exec osfamily="unix" executable="tools/get-scala-commit-sha" outputproperty="git.commit.sha" failifexecutionfails="false" />
+ <exec osfamily="windows" executable="tools/get-scala-commit-sha.bat" outputproperty="git.commit.sha" failifexecutionfails="false" />
+ <exec osfamily="unix" executable="tools/get-scala-commit-date" outputproperty="git.commit.date" failifexecutionfails="false" />
+ <exec osfamily="windows" executable="tools/get-scala-commit-date.bat" outputproperty="git.commit.date" failifexecutionfails="false" />
+ <exec osfamily="unix" executable="tools/get-scala-commit-drift" outputproperty="git.commit.drift" failifexecutionfails="false" />
+ <exec osfamily="windows" executable="tools/get-scala-commit-drift.bat" outputproperty="git.commit.drift" failifexecutionfails="false" />
+ <!-- some default in case something went wrong getting the revision -->
+ <property name="git.describe" value="-unknown-"/>
<!-- Generating version string -->
<exec osfamily="unix" executable="tools/get-scala-revision" outputproperty="version.number" failifexecutionfails="false" />
@@ -290,12 +299,15 @@ INITIALISATION
<!-- We use the git describe to determine the OSGi modifier for our build. -->
<property
+ name="maven.version.number"
+ value="${version.major}.${version.minor}.${version.patch}${version.suffix}${maven.version.suffix}"/>
+ <property
name="version.number"
- value="${version.major}.${version.minor}.${version.patch}.${version.suffix}-${git.describe}"/>
- <!-- TODO - Use "DEV" vs. "FINAL" to determine if we're in release mode. -->
+ value="${maven.version.number}-${git.commit.date}-${git.commit.drift}-${git.commit.sha}"/>
<property
- name="maven.version.number"
- value="${version.major}.${version.minor}.${version.patch}${maven.version.suffix}"/>
+ name="osgi.version.number"
+ value="${version.major}.${version.minor}.${version.patch}.r${git.commit.date}${version.suffix}-${git.commit.sha}"/>
+
<!-- And print-out what we are building -->
<echo message=" build time: ${time.human}" />
@@ -334,7 +346,8 @@ INITIALISATION
<echo message=" javac args: ${javac.args}" />
<echo message=" scalac args: ${scalac.args}" />
<echo message=" maven version: ${maven.version.number}"/>
- <echo message=" OSGi version: ${version.number}" />
+ <echo message=" OSGi version: ${osgi.version.number}" />
+ <echo message="canonical version: ${version.number}" />
<!-- Define tasks that can be run with Starr -->
<path id="starr.classpath">
@@ -402,6 +415,7 @@ LOCAL REFERENCE BUILD (LOCKER)
<propertyfile file="${build-locker.dir}/classes/library/library.properties">
<entry key="version.number" value="${version.number}"/>
<entry key="maven.version.number" value="${maven.version.number}"/>
+ <entry key="osgi.version.number" value="${osgi.version.number}"/>
<entry key="copyright.string" value="${copyright.string}"/>
</propertyfile>
<copy todir="${build-locker.dir}/classes/library">
@@ -442,6 +456,7 @@ LOCAL REFERENCE BUILD (LOCKER)
<propertyfile file="${build-locker.dir}/classes/compiler/compiler.properties">
<entry key="version.number" value="${version.number}"/>
<entry key="maven.version.number" value="${maven.version.number}"/>
+ <entry key="osgi.version.number" value="${osgi.version.number}"/>
<entry key="copyright.string" value="${copyright.string}"/>
</propertyfile>
<copy todir="${build-locker.dir}/classes/compiler">
@@ -674,6 +689,7 @@ QUICK BUILD (QUICK)
<propertyfile file="${build-quick.dir}/classes/library/library.properties">
<entry key="version.number" value="${version.number}"/>
<entry key="maven.version.number" value="${maven.version.number}"/>
+ <entry key="osgi.version.number" value="${osgi.version.number}"/>
<entry key="copyright.string" value="${copyright.string}"/>
</propertyfile>
<copy todir="${build-quick.dir}/classes/library">
@@ -734,6 +750,7 @@ QUICK BUILD (QUICK)
<propertyfile file="${build-quick.dir}/classes/compiler/compiler.properties">
<entry key="version.number" value="${version.number}"/>
<entry key="maven.version.number" value="${maven.version.number}"/>
+ <entry key="osgi.version.number" value="${osgi.version.number}"/>
<entry key="copyright.string" value="${copyright.string}"/>
</propertyfile>
<copy todir="${build-quick.dir}/classes/compiler">
@@ -1217,6 +1234,7 @@ BOOTSTRAPPING BUILD (STRAP)
<propertyfile file="${build-strap.dir}/classes/library/library.properties">
<entry key="version.number" value="${version.number}"/>
<entry key="maven.version.number" value="${maven.version.number}"/>
+ <entry key="osgi.version.number" value="${osgi.version.number}"/>
<entry key="copyright.string" value="${copyright.string}"/>
</propertyfile>
<copy todir="${build-strap.dir}/classes/library">
@@ -1257,6 +1275,7 @@ BOOTSTRAPPING BUILD (STRAP)
<propertyfile file="${build-strap.dir}/classes/compiler/compiler.properties">
<entry key="version.number" value="${version.number}"/>
<entry key="maven.version.number" value="${maven.version.number}"/>
+ <entry key="osgi.version.number" value="${osgi.version.number}"/>
<entry key="copyright.string" value="${copyright.string}"/>
</propertyfile>
<copy todir="${build-strap.dir}/classes/compiler">
diff --git a/src/library/scala/util/Properties.scala b/src/library/scala/util/Properties.scala
index 3ba803712d..38ca89b98b 100644
--- a/src/library/scala/util/Properties.scala
+++ b/src/library/scala/util/Properties.scala
@@ -101,8 +101,7 @@ private[scala] trait PropertiesTrait {
/** The version number of the jar this was loaded from plus "version " prefix,
* or "version (unknown)" if it cannot be determined.
*/
- val versionString = "version " + scalaPropOrElse("version.number", "(unknown)") +
- scalaPropOrNone("maven.version.number").map(v => "(" + v + ")").getOrElse("")
+ val versionString = "version " + scalaPropOrElse("version.number", "(unknown)")
val copyrightString = scalaPropOrElse("copyright.string", "(c) 2002-2011 LAMP/EPFL")
/** This is the encoding to use reading in source files, overridden with -encoding
diff --git a/tools/get-scala-commit-date b/tools/get-scala-commit-date
new file mode 100755
index 0000000000..ef5b0f540d
--- /dev/null
+++ b/tools/get-scala-commit-date
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+#
+# Usage: get-scala-commit-date [dir]
+# Figures out current commit date of a git clone.
+# If no dir is given, current working dir is used.
+#
+# Example build version string:
+# 20120312
+#
+
+[[ $# -eq 0 ]] || cd "$1"
+
+lastcommitdate=$(git log --format="%ci" HEAD | head -n 1 | cut -d ' ' -f 1)
+
+# 20120324
+echo "${lastcommitdate//-/}"
diff --git a/tools/get-scala-commit-date.bat b/tools/get-scala-commit-date.bat
new file mode 100644
index 0000000000..a07155533f
--- /dev/null
+++ b/tools/get-scala-commit-date.bat
@@ -0,0 +1,24 @@
+@echo off
+rem
+rem Usage: get-scala-revison.bat [dir]
+rem Figures out current scala commit date of a git clone.
+rem
+rem If no dir is given, current working dir is used.
+
+@setlocal
+set _DIR=
+if "%*"=="" (
+ for /f "delims=;" %%i in ('cd') do set "_DIR=%%i"
+) else (
+ set "_DIR=%~1"
+)
+cd %_DIR%
+
+rem TODO - Check with a real windows user that this works!
+if exist .git\NUL (
+ for /f "tokens=1delims= " in ('git log --format="%ci" -1') do set commitdate=%%a
+ echo %commitdate%
+)
+
+:end
+@endlocal
diff --git a/tools/get-scala-commit-drift b/tools/get-scala-commit-drift
new file mode 100755
index 0000000000..4959826ec1
--- /dev/null
+++ b/tools/get-scala-commit-drift
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+#
+# Usage: get-scala-commit-drift [dir]
+# Figures out current commit drift of a git clone.
+# If no dir is given, current working dir is used.
+#
+# Example output string:
+# 123
+#
+# Build drift = # of commits since last tag.
+
+[[ $# -eq 0 ]] || cd "$1"
+
+ensure_tag () {
+ sha=$1
+ rev=$2
+
+ [[ -n $(git tag -l $rev) ]] || {
+ git tag -a -m "generated by get-scala-revision" $rev $sha
+ }
+}
+
+# Ensure some baseline tags are present so if this repository's
+# tags are screwed up or stale, we should still have a reference
+# point for a build string.
+ensure_tag 58cb15c40d v2.10.0-M1
+ensure_tag 29f3eace1e v2.9.1
+ensure_tag b0d78f6b9c v2.8.2
+
+# the closest tag, obtained separately because we have to
+# reconstruct the string around the padded distance.
+tag=$(git describe --tags --match 'v2*' --abbrev=0)
+
+# printf %016s is not portable for 0-padding, has to be a digit.
+# so we're stuck disassembling it.
+described=$(git describe --tags --match 'v2*' --abbrev=10)
+suffix="${described##${tag}-}"
+counter=$(echo $suffix | cut -d - -f 1)
+
+echo "$counter"
diff --git a/tools/get-scala-commit-drift.bat b/tools/get-scala-commit-drift.bat
new file mode 100644
index 0000000000..ac289d3481
--- /dev/null
+++ b/tools/get-scala-commit-drift.bat
@@ -0,0 +1,21 @@
+@echo off
+rem
+rem Usage: get-scala-commit-drift.bat [dir]
+rem Figures out current scala commit drift, of a clone.
+rem
+rem If no dir is given, current working dir is used.
+
+@setlocal
+set _DIR=
+if "%*"=="" (
+ for /f "delims=;" %%i in ('cd') do set "_DIR=%%i"
+) else (
+ set "_DIR=%~1"
+)
+cd %_DIR%
+
+rem TODO - WRITE THIS
+echo "TODO"
+
+:end
+@endlocal
diff --git a/tools/get-scala-revision b/tools/get-scala-commit-sha
index 14c84d0ad4..0aa70d985c 100755
--- a/tools/get-scala-revision
+++ b/tools/get-scala-commit-sha
@@ -1,11 +1,11 @@
#!/usr/bin/env bash
#
-# Usage: get-scala-revision [dir]
-# Figures out current scala revision of a git clone.
+# Usage: get-scala-commit-sha [dir]
+# Figures out current commit sha of a git clone.
# If no dir is given, current working dir is used.
#
# Example build version string:
-# v2.10.0-M1-0098-g6f1c486d0b-2012-02-01
+# g6f1c486d0b
#
[[ $# -eq 0 ]] || cd "$1"
@@ -34,11 +34,6 @@ tag=$(git describe --tags --match 'v2*' --abbrev=0)
# so we're stuck disassembling it.
described=$(git describe --tags --match 'v2*' --abbrev=10)
suffix="${described##${tag}-}"
-counter=$(echo $suffix | cut -d - -f 1)
hash=$(echo $suffix | cut -d - -f 2)
-# remove any alphabetic characters before the version number
-tag=$(echo $tag | sed "s/\([a-z_A-Z]*\)\(.*\)/\2/")
-
-# 20120324-123-b0d78f7b9c
-printf "%s-%04d-%s\n" $(date "+%Y%m%d") "$counter" "$hash"
+echo "$hash"
diff --git a/tools/get-scala-commit-sha.bat b/tools/get-scala-commit-sha.bat
new file mode 100644
index 0000000000..80d9aa34b1
--- /dev/null
+++ b/tools/get-scala-commit-sha.bat
@@ -0,0 +1,21 @@
+@echo off
+rem
+rem Usage: get-scala-commit-drift.bat [dir]
+rem Figures out current scala commit drift, of a clone.
+rem
+rem If no dir is given, current working dir is used.
+
+@setlocal
+set _DIR=
+if "%*"=="" (
+ for /f "delims=;" %%i in ('cd') do set "_DIR=%%i"
+) else (
+ set "_DIR=%~1"
+)
+cd %_DIR%
+
+rem TODO - truncate chars.
+git log -1 --format="%T"
+
+:end
+@endlocal
diff --git a/tools/get-scala-revision.bat b/tools/get-scala-revision.bat
deleted file mode 100644
index b5b30eb3a8..0000000000
--- a/tools/get-scala-revision.bat
+++ /dev/null
@@ -1,27 +0,0 @@
-@echo off
-rem
-rem Usage: get-scala-revison.bat [dir]
-rem Figures out current scala revision of a git clone.
-rem
-rem If no dir is given, current working dir is used.
-
-@setlocal
-set _DIR=
-if "%*"=="" (
- for /f "delims=;" %%i in ('cd') do set "_DIR=%%i"
-) else (
- set "_DIR=%~1"
-)
-cd %_DIR%
-
-rem TODO - Look up bat scripting example and fix the darn string.
-if exist .git\NUL (
- git describe --abbrev=10 --always --tags
-)
-
-rem Implement something like the following
-rem for /f "tokens=1,2,3 delims=- " %%a in ("%gitdescribe%") do set version=%%a&set commits=%%b&set sha=%%c
-rem echo %date?%-%commits%-%sha%
-
-:end
-@endlocal