From bad61548dd61890e55a48698af00643fcb5c118f Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 23 Sep 2011 09:48:42 -0400 Subject: [PATCH] Windows: Version mgmt for assemblies and thirdparty Breakout the version data from windows/NTMakefile.config and move it to windows/NTMakefile.version. This new file contains only version data. This permits version data to be safely referenced by third party components. In addition, add version range information for those versions of Heimdal for which this release is a compatible upgrade. If there is a forward incompatible change to the assembly ABI, it is not a compatible upgrade. This version data is used to specify the Windows assembly redirect range. Change-Id: Ic9f156212599cc4277e2be812f29a6497801046c --- include/NTMakefile | 5 +- packages/windows/assembly/NTMakefile | 5 +- .../assembly/policy.Heimdal.Kerberos.in | 2 +- windows/NTMakefile.config | 39 ++++----------- windows/NTMakefile.version | 47 +++++++++++++++++++ 5 files changed, 64 insertions(+), 34 deletions(-) create mode 100644 windows/NTMakefile.version diff --git a/include/NTMakefile b/include/NTMakefile index 85ea4e270..f3749fa4e 100644 --- a/include/NTMakefile +++ b/include/NTMakefile @@ -34,6 +34,7 @@ RELDIR=include SUBDIRS=kadm5 hcrypto gssapi !include ../windows/NTMakefile.w32 +!include ../windows/NTMakefile.version !include ../windows/NTMakefile.config INCFILES= \ @@ -50,7 +51,7 @@ $(OBJ)\bits.exe: $(OBJ)\bits.obj $(EXECONLINK) $(EXEPREP_NODIST) -$(INCDIR)\config.h: config.h.w32 ..\windows\NTMakefile.config NTMakefile +$(INCDIR)\config.h: config.h.w32 ..\windows\NTMakefile.config ..\windows\NTMakefile.version NTMakefile $(PERL) << < config.h.w32 > $@ while(<>) { @@ -105,7 +106,7 @@ while(<>) { << -$(INCDIR)\version.h: ..\windows\NTMakefile.config NTMakefile +$(INCDIR)\version.h: ..\windows\NTMakefile.version NTMakefile $(CP) << $@ const char *heimdal_long_version = "@(#)$$Version: $(VER_PACKAGE_NAME) $(VER_PACKAGE_VERSION) by $(USERNAME) on $(COMPUTERNAME) ($(CPU)-pc-windows) $$"; const char *heimdal_version = "$(VER_PACKAGE_NAME) $(VER_PACKAGE_VERSION)"; diff --git a/packages/windows/assembly/NTMakefile b/packages/windows/assembly/NTMakefile index 3a6571b80..25248fe57 100644 --- a/packages/windows/assembly/NTMakefile +++ b/packages/windows/assembly/NTMakefile @@ -51,6 +51,8 @@ prep:: mk-asm-dirs ASMKRBDIR=$(ASMDIR)\Heimdal.Kerberos ASMKRBVER=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX).$(VER_PRODUCT_PATCH) +ASMKRBVER_OLD_BEGIN=$(VER_OLD_BEGIN_MAJOR).$(VER_OLD_BEGIN_MINOR).$(VER_OLD_BEGIN_AUX).$(VER_OLD_BEGIN_PATCH) +ASMKRBVER_OLD_END=$(VER_OLD_END_MAJOR).$(VER_OLD_END_MINOR).$(VER_OLD_END_AUX).$(VER_OLD_END_PATCH) ASMKRBMAN=$(ASMKRBNAME).manifest ASMKRBBINS=\ @@ -132,7 +134,8 @@ POLKRBCAT=$(POLKRBDIR)\$(ASMKRBVER).cat $(POLKRBFILE): policy.Heimdal.Kerberos.in $(SED) -e "s,[@]krbname[@],$(ASMKRBNAME),g" \ -e "s,[@]krbversion[@],$(ASMKRBVER),g" \ - -e "s,[@]krbverfrom[@],$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR),g" \ + -e "s,[@]krbverfrom_begin[@],$(ASMKRBVER_OLD_BEGIN),g" \ + -e "s,[@]krbverfrom_end[@],$(ASMKRBVER_OLD_END),g" \ -e "s,[@]krbpolname[@],$(POLKRB),g" \ -e "s,[@]cpu[@],$(MCPU),g" \ -e "s,[@]pkt[@],$(CODESIGN_PKT),g" < $** > $@ diff --git a/packages/windows/assembly/policy.Heimdal.Kerberos.in b/packages/windows/assembly/policy.Heimdal.Kerberos.in index 12f9f3c2b..b56e9a7af 100644 --- a/packages/windows/assembly/policy.Heimdal.Kerberos.in +++ b/packages/windows/assembly/policy.Heimdal.Kerberos.in @@ -12,7 +12,7 @@ name="@krbname@" language="*" processorArchitecture="@cpu@"/> - diff --git a/windows/NTMakefile.config b/windows/NTMakefile.config index b7b916850..3d6fe7abd 100644 --- a/windows/NTMakefile.config +++ b/windows/NTMakefile.config @@ -1,33 +1,12 @@ -# Version strings - -VER_PACKAGE=heimdal -VER_PACKAGE_NAME=Heimdal -VER_PACKAGE_BUGREPORT=heimdal-bugs@h5l.org -VER_PACKAGE_COPYRIGHT=Copyright (C) 1995-2011 Royal Institute of Technology, Stockholm, Sweden -VER_PACKAGE_COMPANY=www.h5l.org - -VER_PRODUCT_MAJOR=1 -VER_PRODUCT_MINOR=5 -VER_PRODUCT_AUX=9900 -VER_PRODUCT_PATCH=0 - -VER_PACKAGE_VERSION=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX) - -# Define to 1 if this is a pre-release build. Undefine otherwise -VER_PRERELEASE=1 - -# Define to a valid string if this build DOES NOT follow normal -# release procedures. I.e. this is a private build whose version -# numbers are not co-ordinated with mainline development. - -#VER_PRIVATE=Private build for MyCompany - -# Define to a valid string if this build DOES follow normal release -# procedures, but is a variation of the standard files of the same -# version numbers. - -#VER_SPECIAL=Special build for testing ticket 12345 - +!if exist (..\..\..\windows\NTMakefile.version) +! include <..\..\..\windows\NTMakefile.version> +!elseif exist (..\..\windows\NTMakefile.version) +! include <..\..\windows\NTMakefile.version> +!elseif exist (..\windows\NTMakefile.version) +! include <..\windows\NTMakefile.version> +!else +! include +!endif # ------------------------------------------------------------ # Features diff --git a/windows/NTMakefile.version b/windows/NTMakefile.version new file mode 100644 index 000000000..5ee3c051f --- /dev/null +++ b/windows/NTMakefile.version @@ -0,0 +1,47 @@ +# Version strings + +VER_PACKAGE=heimdal +VER_PACKAGE_NAME=Heimdal +VER_PACKAGE_BUGREPORT=heimdal-bugs@h5l.org +VER_PACKAGE_COPYRIGHT=Copyright (C) 1995-2011 Royal Institute of Technology, Stockholm, Sweden +VER_PACKAGE_COMPANY=www.h5l.org + +VER_PRODUCT_MAJOR=1 +VER_PRODUCT_MINOR=5 +VER_PRODUCT_AUX=9900 +VER_PRODUCT_PATCH=0 + +# ------------------------------------------------------------ +# The VER_OLD_BEGIN and VER_OLD_END version values are used in +# constructing the assembly publisher configuration. The end +# must be less than the VER_PRODUCT value. If the current +# version is 1.5.100.0 then VER_OLD_END version is +# 1.5.99.65535. + +VER_OLD_BEGIN_MAJOR=1 +VER_OLD_BEGIN_MINOR=5 +VER_OLD_BEGIN_AUX=0 +VER_OLD_BEGIN_PATCH=0 + +VER_OLD_END_MAJOR=1 +VER_OLD_END_MINOR=5 +VER_OLD_END_AUX=9949 +VER_OLD_END_PATCH=65535 + +VER_PACKAGE_VERSION=$(VER_PRODUCT_MAJOR).$(VER_PRODUCT_MINOR).$(VER_PRODUCT_AUX) + +# Define to 1 if this is a pre-release build. Undefine otherwise +VER_PRERELEASE=1 + +# Define to a valid string if this build DOES NOT follow normal +# release procedures. I.e. this is a private build whose version +# numbers are not co-ordinated with mainline development. + +#VER_PRIVATE=Private build for MyCompany + +# Define to a valid string if this build DOES follow normal release +# procedures, but is a variation of the standard files of the same +# version numbers. + +#VER_SPECIAL=Special build for testing ticket 12345 +