summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Suereth <Joshua.Suereth@gmail.com>2012-03-16 09:10:47 -0700
committerJosh Suereth <Joshua.Suereth@gmail.com>2012-03-16 09:10:47 -0700
commit06765bf3660db2e11c6fe3a85db3b25373c2c9ed (patch)
tree5f6bd3909b69666c625dc6e3a14d1596c4f20303
parent125b5037c866fd6db771cf78de44479588e8f118 (diff)
parent243c62957ec4b583095bc5e170908043263e5f2a (diff)
downloadscala-2.9.2-RC1.tar.gz
scala-2.9.2-RC1.tar.bz2
scala-2.9.2-RC1.zip
Merge pull request #271 from jsuereth/2.9.x-version-fixinv2.9.2-RC1
2.9.x version fixin
-rw-r--r--build.number8
-rw-r--r--build.xml65
-rw-r--r--src/build/maven/maven-deploy.xml38
-rw-r--r--src/build/pack.xml2
-rw-r--r--src/library/scala/util/Properties.scala24
-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.bat (renamed from tools/get-scala-revision.bat)9
-rwxr-xr-xtools/get-scala-commit-sha (renamed from tools/get-scala-revision)14
-rw-r--r--tools/get-scala-commit-sha.bat21
11 files changed, 206 insertions, 55 deletions
diff --git a/build.number b/build.number
index f074e06d9a..e5a19b9b7e 100644
--- a/build.number
+++ b/build.number
@@ -1,5 +1,9 @@
#Tue Sep 11 19:21:09 CEST 2007
+version.major=2
version.minor=9
version.patch=2
-version.suffix=alpha
-version.major=2
+# This is the -N part of a version. if it's 0, it's dropped from maven versions.
+version.bnum=0
+
+# Note: To build a release run ant with -Dbuild.release=true
+# To build an RC, run ant with -Dmaven.version.suffix=-RCN
diff --git a/build.xml b/build.xml
index 477678eed8..be7ddea114 100644
--- a/build.xml
+++ b/build.xml
@@ -154,6 +154,8 @@ PROPERTIES
<!-- Loads custom properties definitions -->
<property file="${basedir}/build.properties"/>
+ <!-- Generating version number -->
+ <property file="${basedir}/build.number"/>
<!-- Additional command line arguments for scalac. They are added to all build targets -->
<property name="scalac.args" value=""/>
@@ -211,7 +213,30 @@ INITIALISATION
<exec osfamily="windows" vmlauncher="false" executable="pull-binary-libs.sh" failifexecutionfails="true" />
</target>
- <target name="init" depends="init.starr">
+ <!-- Determines OSGi string + maven extension. -->
+ <target name="init.hasbuildnum">
+ <condition property="version.hasbuildnum">
+ <not><equals arg1="${version.bnum}" arg2="0"/></not>
+ </condition>
+ </target>
+ <target name="init.build.snapshot" unless="build.release">
+ <property name="maven.version.suffix" value="-SNAPSHOT"/>
+ </target>
+ <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.build.nopatch.release">
+ <property name="version.suffix" value="-${version.bnum}"/>
+ </target>
+
+ <target name="init.build.suffix.done" depends="init.build.release, init.build.patch.release"/>
+
+ <target name="init" depends="init.starr, init.build.suffix.done">
<!-- scalac.args.optimise is selectively overridden in certain antcall tasks. -->
<property name="scalac.args.optimise" value=""/>
<!-- scalac.args.quickonly are added to quick.* targets but not others (particularly, locker.)
@@ -231,20 +256,28 @@ INITIALISATION
<os family="windows"/>
</condition>
- <exec osfamily="unix" executable="tools/get-scala-revision" outputproperty="git.describe" failifexecutionfails="false" />
- <exec osfamily="windows" executable="tools/get-scala-revision.bat" outputproperty="git.describe" failifexecutionfails="false" />
+ <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-"/>
<property name="init.avail" value="yes"/>
- <!-- Generating version number -->
- <property file="${basedir}/build.number"/>
- <!-- As of git move, we set the internal version number based on how far from tags we are, which includes a version tag. we keep
- major/minor etc. for the maven deploy. -->
+ <!-- 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="${git.describe}"/>
+ value="${maven.version.number}-${git.commit.date}-${git.commit.drift}-${git.commit.sha}"/>
+ <property
+ name="osgi.version.number"
+ value="${version.major}.${version.minor}.${version.patch}.v${git.commit.date}${version.suffix}-${git.commit.sha}"/>
+
<!-- Local libs (developer use.) -->
<mkdir dir="${lib-extra.dir}"/>
@@ -274,7 +307,9 @@ INITIALISATION
<echo message=" java args: ${env.ANT_OPTS} ${jvm.opts}" />
<echo message=" javac args: ${javac.args}" />
<echo message=" scalac args: ${scalac.args}" />
- <echo message=" build number: ${version.number}" />
+ <echo message=" maven version: ${maven.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">
@@ -341,6 +376,8 @@ LOCAL REFERENCE BUILD (LOCKER)
</scalacfork>
<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">
@@ -380,6 +417,8 @@ LOCAL REFERENCE BUILD (LOCKER)
</scalacfork>
<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">
@@ -536,6 +575,8 @@ QUICK BUILD (QUICK)
</scalacfork>
<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">
@@ -595,6 +636,8 @@ QUICK BUILD (QUICK)
</scalacfork>
<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">
@@ -1069,6 +1112,8 @@ BOOTSTRAPPING BUILD (STRAP)
</scalacfork>
<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">
@@ -1108,6 +1153,8 @@ BOOTSTRAPPING BUILD (STRAP)
</scalacfork>
<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/build/maven/maven-deploy.xml b/src/build/maven/maven-deploy.xml
index 2e490163e0..e0f31a5db2 100644
--- a/src/build/maven/maven-deploy.xml
+++ b/src/build/maven/maven-deploy.xml
@@ -16,10 +16,15 @@
<property name="local.release.repository" value="${user.home}/.m2/repository" />
<property name="repository.credentials.id" value="sonatype-nexus" />
<property name="settings.file" value="${user.home}/.m2/settings.xml" />
-
+ <condition property="version.is.snapshot">
+ <contains string="${maven.version.number}" substring="-SNAPSHOT"/>
+ </condition>
+
<echo>Using server[${repository.credentials.id}] for maven repository credentials.
Please make sure that your ~/.m2/settings.xml has the needed username/password for this server id
</echo>
+
+
</target>
<target name="init.maven" depends="init.properties">
@@ -241,28 +246,31 @@
</target>
<!-- Local Targets -->
- <target name="deploy.snapshot.local" depends="deploy.local.init" description="Deploys the bundled snapshot of the Scala Lanaguage to a local maven repository">
- <deploy-local-all version="${maven.snapshot.version.number}" repository="${local.snapshot.repository}" />
+ <target name="deploy.snapshot.local" depends="deploy.local.init" if="version.is.snapshot" description="Deploys the bundled snapshot of the Scala Lanaguage to a local maven repository">
+ <deploy-local-all version="${maven.version.number}" repository="${local.snapshot.repository}" />
</target>
- <target name="deploy.release.local" depends="deploy.local.init" description="Deploys the bundled files as a release into the local Maven repository">
- <deploy-local-all version="${version.number}" repository="${local.release.repository}" />
+ <target name="deploy.release.local" depends="deploy.local.init" unless="version.is.snapshot" description="Deploys the bundled files as a release into the local Maven repository">
+ <deploy-local-all version="${maven.version.number}" repository="${local.release.repository}" />
</target>
+ <target name="deploy.local" depends="deploy.snapshot.local, deploy.release.local" description="Deploys the bundle files to the local maven repo."/>
- <!-- Remote Targets -->
- <target name="deploy.signed.snapshot" depends="deploy.remote.init" description="Deploys the bundled files as a snapshot into the desired remote Maven repository">
- <deploy-remote-signed-all version="${maven.snapshot.version.number}" repository="${remote.snapshot.repository}" />
+ <!-- Remote Signed Targets -->
+ <target name="deploy.signed.snapshot" depends="deploy.remote.init" if="version.is.snapshot" description="Deploys the bundled files as a snapshot into the desired remote Maven repository">
+ <deploy-remote-signed-all version="${maven.version.number}" repository="${remote.snapshot.repository}" />
</target>
- <target name="deploy.signed.release" depends="deploy.remote.init" description="Deploys the bundled files as a release into the desired remote Maven repository">
- <deploy-remote-signed-all version="${version.number}" repository="${remote.release.repository}" />
+ <target name="deploy.signed.release" depends="deploy.remote.init" unless="version.is.snapshot" description="Deploys the bundled files as a release into the desired remote Maven repository">
+ <deploy-remote-signed-all version="${maven.version.number}" repository="${remote.release.repository}" />
</target>
-
- <target name="deploy.snapshot" depends="deploy.remote.init" description="Deploys the bundled files as a snapshot into the desired remote Maven repository">
- <deploy-remote-all version="${maven.snapshot.version.number}" repository="${remote.snapshot.repository}" />
+ <target name="deploy.signed" depends="deploy.signed.release, deploy.signed.snapshot" description="Deploys signed bundles to remote repo"/>
+ <!-- Remote unsigned targets -->
+ <target name="deploy.snapshot" depends="deploy.remote.init" if="version.is.snapshot" description="Deploys the bundled files as a snapshot into the desired remote Maven repository">
+ <deploy-remote-all version="${maven.version.number}" repository="${remote.snapshot.repository}" />
</target>
- <target name="deploy.release" depends="deploy.remote.init" description="Deploys the bundled files as a release into the desired remote Maven repository">
- <deploy-remote-all version="${version.number}" repository="${remote.release.repository}" />
+ <target name="deploy.release" depends="deploy.remote.init" unless="version.is.snapshot" description="Deploys the bundled files as a release into the desired remote Maven repository">
+ <deploy-remote-all version="${maven.version.number}" repository="${remote.release.repository}" />
</target>
+ <target name="deploy" depends="deploy.snapshot, deploy.release" description="Deploys unsigned artifacts to the maven repo."/>
</project>
diff --git a/src/build/pack.xml b/src/build/pack.xml
index fe67e3a624..b7e7b7ae2b 100644
--- a/src/build/pack.xml
+++ b/src/build/pack.xml
@@ -309,8 +309,6 @@ MAIN DISTRIBUTION SBAZ
<copy tofile="${dists.dir}/maven/${version.number}/build.xml"
file="${src.dir}/build/maven/maven-deploy.xml"/>
<!-- export properties for use when deploying -->
- <property name="maven.snapshot.version.number"
- value="${version.major}.${version.minor}.${version.patch}-SNAPSHOT"/>
<echoproperties destfile="${dists.dir}/maven/${version.number}/build.properties"/>
</target>
diff --git a/src/library/scala/util/Properties.scala b/src/library/scala/util/Properties.scala
index f86df0ee96..283ecc3081 100644
--- a/src/library/scala/util/Properties.scala
+++ b/src/library/scala/util/Properties.scala
@@ -67,10 +67,11 @@ private[scala] trait PropertiesTrait {
* it is an RC, Beta, etc. or was built from source, or if the version
* cannot be read.
*/
- val releaseVersion = scalaPropOrNone("version.number") flatMap { s =>
- val segments = s split '.'
- if (segments.size == 4 && segments.last == "final") Some(segments take 3 mkString ".") else None
- }
+ val releaseVersion =
+ for {
+ v <- scalaPropOrNone("maven.version.number")
+ if !(v endsWith "-SNAPSHOT")
+ } yield v
/** The development scala version, if this is not a final release.
* The precise contents are not guaranteed, but it aims to provide a
@@ -80,15 +81,12 @@ private[scala] trait PropertiesTrait {
* @return Some(version) if this is a non-final version, None if this
* is a final release or the version cannot be read.
*/
- val developmentVersion = scalaPropOrNone("version.number") flatMap { s =>
- val segments = s split '.'
- if (segments.isEmpty || segments.last == "final")
- None
- else if (segments.last startsWith "r")
- Some(s takeWhile (ch => ch != '-')) // Cutting e.g. 2.10.0.r24774-b20110417125606 to 2.10.0.r24774
- else
- Some(s)
- }
+ val developmentVersion =
+ for {
+ v <- scalaPropOrNone("maven.version.number")
+ if v endsWith "-SNAPSHOT"
+ ov <- scalaPropOrNone("version.number")
+ } yield ov
/** The version number of the jar this was loaded from plus "version " prefix,
* or "version (unknown)" if it cannot be determined.
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-revision.bat b/tools/get-scala-commit-drift.bat
index f4dc24b71f..ac289d3481 100644
--- a/tools/get-scala-revision.bat
+++ b/tools/get-scala-commit-drift.bat
@@ -1,7 +1,7 @@
@echo off
rem
-rem Usage: get-scala-revison.bat [dir]
-rem Figures out current scala revision of a git clone.
+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.
@@ -14,9 +14,8 @@ if "%*"=="" (
)
cd %_DIR%
-if exist .git\NUL (
- git describe HEAD --abbrev=7 --match dev
-)
+rem TODO - WRITE THIS
+echo "TODO"
:end
@endlocal
diff --git a/tools/get-scala-revision b/tools/get-scala-commit-sha
index 4d97ec58ad..0abe31a53c 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
+# 6f1c486d0ba
#
[[ $# -eq 0 ]] || cd "$1"
@@ -34,11 +34,7 @@ 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)
+hash=${hash#g}
-# remove any alphabetic characters before the version number
-tag=$(echo $tag | sed "s/\([a-z_A-Z]*\)\(.*\)/\2/")
-
-# 2.10.0-M1-0098-g6f1c486d0b-2012-02-01
-printf "%s-%04d-%s-%s\n" "$tag" "$counter" "$hash" $(date "+%Y-%m-%d")
+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