Update of /cvsroot/springnet/Spring.Net
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv15841
Modified Files:
Spring.build Spring.include
Log Message:
SPRNET-906 Build scripts generate unique revision numbers for assemblies
Index: Spring.build
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/Spring.build,v
retrieving revision 1.195
retrieving revision 1.196
diff -C2 -d -r1.195 -r1.196
*** Spring.build 4 Feb 2008 22:42:48 -0000 1.195
--- Spring.build 1 Apr 2008 19:51:01 -0000 1.196
***************
*** 4,7 ****
--- 4,8 ----
<!-- global project settings -->
<property name="project.name" value="Spring.NET"/>
+ <property name="project.name.full" value="Spring.NET Framework"/>
<property name="spring.basedir" value="${project::get-base-directory()}"/>
<property name="nant.nunit2outproc.nunitpath" value="${project::get-base-directory()}/tools/nunit/" />
***************
*** 13,17 ****
<include buildfile="${spring.basedir}/Spring.include"/>
! <property name="package.version" value="1.1.0" unless="${property::exists('project.version')}"/>
<property name="using-clover" value="false"/>
<!-- change this to sync the sdk doc version generated -->
--- 14,18 ----
<include buildfile="${spring.basedir}/Spring.include"/>
! <property name="package.version" value="1.1.1" unless="${property::exists('project.version')}"/>
<property name="using-clover" value="false"/>
<!-- change this to sync the sdk doc version generated -->
***************
*** 20,24 ****
--- 21,29 ----
<sysinfo/>
+ <property name="project.company" value="SpringSource"/>
+ <property name="project.copyright" value="Copyright 2002-2008 Spring.NET Framework Team."/>
+ <property name="key.file" value="Spring.Net.snk"/>
+ <property name="project.year" value="2008"/>
<!-- Targets that are always executed -->
***************
*** 161,168 ****
<property name="current.package.dir" value="${package.dir}/${project::get-name()}"/>
!
! <!-- for docs packaging MLP
<property name="current.package.dir" value="l:/release/${project::get-name()}"/>
-
<property name="current.package.dir" value="L:/projects/Spring.Net/build/package-docs/${project::get-name()}"/>
-->
--- 166,172 ----
<property name="current.package.dir" value="${package.dir}/${project::get-name()}"/>
! <!-- for docs packaging MLP -->
! <!--
<property name="current.package.dir" value="l:/release/${project::get-name()}"/>
<property name="current.package.dir" value="L:/projects/Spring.Net/build/package-docs/${project::get-name()}"/>
-->
***************
*** 342,345 ****
--- 346,351 ----
depends="set-net-1.0-runtime-configuration, check-spring-basedir, clean-current-bin-dir, TestInit">
<!-- initialize the temp.build.skip property to false -->
+ <call target="common.generate-assemblyinfo"/>
+
<property name="temp.build.skip" value="false"/>
<!-- configure build -->
***************
*** 356,359 ****
--- 362,366 ----
<target name="compile-net-1.1" description="Builds .NET Framework 1.1 version"
depends="set-net-1.1-runtime-configuration, check-spring-basedir, clean-current-bin-dir, TestInit">
+ <call target="common.generate-assemblyinfo"/>
<!-- initialize the temp.build.skip property to false -->
<property name="temp.build.skip" value="false"/>
***************
*** 366,369 ****
--- 373,377 ----
<target name="compile-net-2.0" description="Builds .NET Framework 2.0 version"
depends="set-net-2.0-runtime-configuration, check-spring-basedir, clean-current-bin-dir, TestInit">
+ <call target="common.generate-assemblyinfo"/>
<!-- initialize the temp.build.skip property to false -->
<property name="temp.build.skip" value="false"/>
Index: Spring.include
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/Spring.include,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** Spring.include 3 Dec 2007 16:11:30 -0000 1.9
--- Spring.include 1 Apr 2008 19:51:02 -0000 1.10
***************
*** 164,167 ****
--- 164,258 ----
<call target="set-${current.build.config}-build-configuration"/>
</target>
+
+ <target name="generate-build-number">
+
+ <script language="C#">
+ <imports>
+ <import name="System.Globalization" />
+ <import name="System.Threading" />
+ </imports>
+
+ <code>
+ <!-- format for assembly revision is RRXXX where RR = framework number (1.0=10; 1.1=11; 2.0=20 etc) and
+ XXX is the number of days from the year the project 'started', property project.year. -->
+ <![CDATA[
+ public static void ScriptMain(Project project) {
+ int frameworkRevision = Convert.ToInt32(project.Properties["nant.settings.currentframework.revisionnumber"]);
+ Version version = new Version(project.Properties["package.version"]);
+ int major = version.Major;
+ int minor = version.Minor;
+ int build = version.Build;
+ int revision = version.Revision;
+
+ int startYear = Convert.ToInt32(project.Properties["project.year"]);
+ DateTime start = new DateTime(startYear, 1, 1);
+ TimeSpan ts = DateTime.Now - start;
+ revision = ts.Days;
+ revision = revision + (frameworkRevision*10000);
+
+
+ version = new Version(major, minor, build, revision);
+ project.Properties["project.version.numeric"] = version.ToString();
+ }
+ ]]>
+ </code>
+
+ </script>
+ </target>
+
+ <target name="common.set-assembly-attribute-values" depends="generate-build-number">
+ <property name="assembly.is-cls-compliant" value="false" />
+ <property name="assembly.configuration" value="${nant.settings.currentframework}.win32; ${current.build.config}"/>
+ <property name="assembly.product" value="${project.name.full} ${package.version} for .NET ${nant.settings.currentframework.number}" />
+ <property name="assembly.company" value="${project.company}" />
+ <property name="assembly.copyright" value="${project.copyright}" />
+ <property name="assembly.trademark" value="Apache License, Version 2.0" />
+ <property name="assembly.culture" value=""/>
+ <property name="assembly.version" value="${project.version.numeric}" />
+ <property name="assembly.delay.sign" value="false" />
+ <property name="assembly.keyfile" value="${key.file}" />
+
+ <!--
+ <property name="assembly.title" value="${project::get-name()}" />
+ <property name="assembly.description" value="" />
+ <property name="assembly.version.informational" value="${project.version.numeric}" />
+ -->
+
+ </target>
+
+ <target name="common.generate-assemblyinfo"
+ depends="common.set-assembly-attribute-values"
+ description="Generate AssemblyInfo.cs using assembly.* properties."
+ >
+ <asminfo output="src/Spring/GenCommonAssemblyInfo.cs" language="CSharp">
+ <imports>
+ <import namespace="System" />
+ <import namespace="System.Reflection" />
+ </imports>
+ <attributes>
+ <attribute type="CLSCompliantAttribute" value="${assembly.is-cls-compliant}" />
+ <attribute type="AssemblyConfigurationAttribute" value="${assembly.configuration}" />
+ <attribute type="AssemblyProductAttribute" value="${assembly.product}" />
+ <attribute type="AssemblyCompanyAttribute" value="${assembly.company}" />
+ <attribute type="AssemblyCopyrightAttribute" value="${assembly.copyright}" />
+ <attribute type="AssemblyTrademarkAttribute" value="${assembly.trademark}" />
+ <attribute type="AssemblyCultureAttribute" value="${assembly.culture}" />
+ <attribute type="AssemblyVersionAttribute" value="${assembly.version}" />
+
+ <attribute type="AssemblyDelaySignAttribute" value="false" if="${current.build.config == 'release'}" />
+ <attribute type="AssemblyKeyFileAttribute" value="${assembly.keyfile}" if="${current.build.config == 'release' and (nant.settings.currentframework == 'net-1.0' or nant.settings.currentframework == 'net-1.1')}" />
+
+
+ <!--
+ <attribute type="AssemblyTitleAttribute" value="${assembly.title}" />
+ <attribute type="AssemblyDescriptionAttribute" value="${assembly.description}" />
+ <attribute type="AssemblyInformationalVersionAttribute" value="${assembly.version.informational}" />
+ <attribute type="AssemblyFileVersionAttribute" value="${assembly.version.file}" />
+ -->
+ </attributes>
+ </asminfo>
+ </target>
+
+
<target name="set-debug-build-configuration">
<property name="compiler.args" value=""/>
***************
*** 204,207 ****
--- 295,300 ----
depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
<property name="nant.settings.currentframework" value="net-1.0"/>
+ <property name="nant.settings.currentframework.number" value="1.0"/>
+ <property name="nant.settings.currentframework.revisionnumber" value="0"/>
<property name="current.build.debug" value="${build.debug}" dynamic="true"/>
<property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_1_0" dynamic="true"/>
***************
*** 217,224 ****
--- 310,320 ----
<property name="link.sdkdoc.version" value="SDK_v1_0"/>
<property name="nowarn.numbers.test" value="${nowarn.numbers.test.default}"/>
+
</target>
<target name="set-net-1.1-runtime-configuration"
depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
<property name="nant.settings.currentframework" value="net-1.1"/>
+ <property name="nant.settings.currentframework.number" value="1.1"/>
+ <property name="nant.settings.currentframework.revisionnumber" value="1"/>
<property name="current.build.debug" value="${build.debug}" dynamic="true"/>
<property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_1_1" dynamic="true"/>
***************
*** 238,241 ****
--- 334,339 ----
depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
<property name="nant.settings.currentframework" value="net-2.0"/>
+ <property name="nant.settings.currentframework.number" value="2.0"/>
+ <property name="nant.settings.currentframework.revisionnumber" value="2"/>
<property name="net-2.0" value="true"/>
<property name="current.build.debug" value="${build.debug}" dynamic="true"/>
|