[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Parameterize vendor prefix and PCI device id
The XenServer PV vendor prefix ('XS') and PCI device (C000) are still hard-coded into the XENVBD package. These need to be stripped out and replaced by values that can be customized at build time. This patch does that. The patch also reverts to building version.h and customizing xenvbd.inf directly in build.py. Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx> --- MAINTAINERS | 31 ++++++++++---- build.py | 96 +++++++++++++++++++++++++++++++++++++++--- include/version.hx | 55 ------------------------ src/xencrsh/xencrsh.rc | 2 +- src/xendisk/xendisk.rc | 2 +- src/xenvbd.inf | 12 +++--- src/xenvbd/xenvbd.rc | 2 +- vs2012/xencrsh/xencrsh.vcxproj | 12 +----- vs2013/xencrsh/xencrsh.vcxproj | 12 +----- 9 files changed, 124 insertions(+), 100 deletions(-) delete mode 100644 include/version.hx diff --git a/MAINTAINERS b/MAINTAINERS index 09e9f65..88cc97a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6,19 +6,34 @@ who will advise you on the precise procedure they wish to use. We also request you follow these basic guidelines: -1. Make sure you test your changes on both 32- and 64-bit versions of Windows. +1. Make sure you test your changes on both a 32- and 64-bit version of Windows. + (The more versions of Windows you can test on the better). 2. Make sure your changes do not introduce any new prefast warnings. -3. All submissions must be made under the terms of the "Developer's Certificate - of Origin" (DC) and should include a Signed-off-by: line. +3. Make a patch available to the relevant maintainer in the list. Use 'diff -u' + to make the patch easy to merge. Be prepared to get your changes sent back + with seemingly silly requests about formatting and variable names. These + aren't as silly as they seem. One job the maintainers do is to keep things + looking the same. -2. All Submissions should use Unix line endings for consitency with the rest of - the XenServer project. + NOTE that all source should have Unix line endings. -3. Each patch should include a descriptive commit comment that helps understand - why the patch is necessary and why it works. This will be used both for - initial review and for new people to understand how the code works later + PLEASE see http://wiki.xen.org/wiki/Submitting_Xen_Patches for hints on how + to submit a patch in a suitable form. Whilst the PV driver source + repositories are distinct from the Xen Project hypervisor source, we will + follow the same general patch submission and review process. + + PLEASE try to include any credit lines you want added with the patch. It + avoids people being missed off by mistake and makes it easier to know who + wants adding and who doesn't. + + PLEASE document known bugs. If it doesn't work for everything or does + something very odd once a month document it. + + PLEASE remember that submissions must be made under the terms of the + "Developer's Certificate of Origin" (DCO) and should include a + Signed-off-by: line. 4. Make sure you have the right to submit any changes you make. If you do changes at work you may find your employer owns the patches instead of diff --git a/build.py b/build.py index 75b9631..18a3c52 100755 --- a/build.py +++ b/build.py @@ -23,6 +23,76 @@ def next_build_number(): return build_number + +def make_header(): + now = datetime.datetime.now() + + file = open('include\\version.h', 'w') + + file.write('#define VENDOR_NAME_STR\t\t"' + os.environ['VENDOR_NAME'] + '"\n') + file.write('#define VENDOR_PREFIX_STR\t"' + os.environ['VENDOR_PREFIX'] + '"\n') + + if 'VENDOR_DEVICE_ID' in os.environ.keys(): + file.write('#define VENDOR_DEVICE_ID_STR\t"' + os.environ['VENDOR_DEVICE_ID'] + '"\n') + + file.write('#define PRODUCT_NAME_STR\t"' + os.environ['PRODUCT_NAME'] + '"\n') + file.write('\n') + + file.write('#define MAJOR_VERSION\t\t' + os.environ['MAJOR_VERSION'] + '\n') + file.write('#define MAJOR_VERSION_STR\t"' + os.environ['MAJOR_VERSION'] + '"\n') + file.write('\n') + + file.write('#define MINOR_VERSION\t\t' + os.environ['MINOR_VERSION'] + '\n') + file.write('#define MINOR_VERSION_STR\t"' + os.environ['MINOR_VERSION'] + '"\n') + file.write('\n') + + file.write('#define MICRO_VERSION\t\t' + os.environ['MICRO_VERSION'] + '\n') + file.write('#define MICRO_VERSION_STR\t"' + os.environ['MICRO_VERSION'] + '"\n') + file.write('\n') + + file.write('#define BUILD_NUMBER\t\t' + os.environ['BUILD_NUMBER'] + '\n') + file.write('#define BUILD_NUMBER_STR\t"' + os.environ['BUILD_NUMBER'] + '"\n') + file.write('\n') + + file.write('#define YEAR\t\t\t' + str(now.year) + '\n') + file.write('#define YEAR_STR\t\t"' + str(now.year) + '"\n') + file.write('\n') + + file.write('#define MONTH\t\t\t' + str(now.month) + '\n') + file.write('#define MONTH_STR\t\t"' + str(now.month) + '"\n') + file.write('\n') + + file.write('#define DAY\t\t\t' + str(now.day) + '\n') + file.write('#define DAY_STR\t\t\t"' + str(now.day) + '"\n') + file.write('\n') + + file.close() + + +def copy_inf(vs, name): + src = open('src\\%s.inf' % name, 'r') + dst = open('%s\\%s.inf' % (vs, name), 'w') + + for line in src: + line = re.sub('@MAJOR_VERSION@', os.environ['MAJOR_VERSION'], line) + line = re.sub('@MINOR_VERSION@', os.environ['MINOR_VERSION'], line) + line = re.sub('@MICRO_VERSION@', os.environ['MICRO_VERSION'], line) + line = re.sub('@BUILD_NUMBER@', os.environ['BUILD_NUMBER'], line) + line = re.sub('@VENDOR_NAME@', os.environ['VENDOR_NAME'], line) + line = re.sub('@VENDOR_PREFIX@', os.environ['VENDOR_PREFIX'], line) + line = re.sub('@PRODUCT_NAME@', os.environ['PRODUCT_NAME'], line) + + if re.search('@VENDOR_DEVICE_ID@', line): + if 'VENDOR_DEVICE_ID' not in os.environ.keys(): + continue + line = re.sub('@VENDOR_DEVICE_ID@', os.environ['VENDOR_DEVICE_ID'], line) + + dst.write(line) + + dst.close() + src.close() + + def get_expired_symbols(name, age = 30): path = os.path.join(os.environ['SYMBOL_SERVER'], '000Admin\\history.txt') @@ -329,11 +399,11 @@ if __name__ == '__main__': driver = 'xenvbd' vs = getVsVersion() - os.utime('include/version.hx', None) - os.utime('src/%s.inf' % driver, None) + if 'VENDOR_NAME' not in os.environ.keys(): + os.environ['VENDOR_NAME'] = 'Xen Project' - if 'COMPANY_NAME' not in os.environ.keys(): - os.environ['COMPANY_NAME'] = 'Xen Project' + if 'VENDOR_PREFIX' not in os.environ.keys(): + os.environ['VENDOR_PREFIX'] = 'XP' if 'PRODUCT_NAME' not in os.environ.keys(): os.environ['PRODUCT_NAME'] = 'Xen' @@ -345,13 +415,27 @@ if __name__ == '__main__': if 'BUILD_NUMBER' not in os.environ.keys(): os.environ['BUILD_NUMBER'] = next_build_number() - print("BUILD_NUMBER=%s" % os.environ['BUILD_NUMBER']) - if 'GIT_REVISION' in os.environ.keys(): revision = open('revision', 'w') print(os.environ['GIT_REVISION'], file=revision) revision.close() + print("VENDOR_NAME\t\t'%s'" % os.environ['VENDOR_NAME']) + print("VENDOR_PREFIX\t\t'%s'" % os.environ['VENDOR_PREFIX']) + + if 'VENDOR_DEVICE_ID' in os.environ.keys(): + print("VENDOR_DEVICE_ID\t'%s'" % os.environ['VENDOR_DEVICE_ID']) + + print("PRODUCT_NAME\t\t'%s'" % os.environ['PRODUCT_NAME']) + print("MAJOR_VERSION\t\t%s" % os.environ['MAJOR_VERSION']) + print("MINOR_VERSION\t\t%s" % os.environ['MINOR_VERSION']) + print("MICRO_VERSION\t\t%s" % os.environ['MICRO_VERSION']) + print("BUILD_NUMBER\t\t%s" % os.environ['BUILD_NUMBER']) + print() + + make_header() + copy_inf(vs, driver) + symstore_del(driver, 30) if vs=='vs2012': diff --git a/include/version.hx b/include/version.hx deleted file mode 100644 index 92b0a6b..0000000 --- a/include/version.hx +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (c) Citrix Systems Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, - * with or without modification, are permitted provided - * that the following conditions are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the - * following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#define COMPANY_NAME_STR "@COMPANY_NAME@" -#define PRODUCT_NAME_STR "@PRODUCT_NAME@" - -#define MAJOR_VERSION @MAJOR_VERSION@ -#define MAJOR_VERSION_STR "@MAJOR_VERSION@" - -#define MINOR_VERSION @MINOR_VERSION@ -#define MINOR_VERSION_STR "@MINOR_VERSION@" - -#define MICRO_VERSION @MICRO_VERSION@ -#define MICRO_VERSION_STR "@MICRO_VERSION@" - -#define BUILD_NUMBER @BUILD_NUMBER@ -#define BUILD_NUMBER_STR "@BUILD_NUMBER@" - -#define YEAR @YEAR@ -#define YEAR_STR "@YEAR@" - -#define MONTH @MONTH@ -#define MONTH_STR "@MONTH@" - -#define DAY @DAY@ -#define DAY_STR "@DAY@" - diff --git a/src/xencrsh/xencrsh.rc b/src/xencrsh/xencrsh.rc index d097270..65bbff9 100644 --- a/src/xencrsh/xencrsh.rc +++ b/src/xencrsh/xencrsh.rc @@ -40,7 +40,7 @@ #include <version.h> -#define VER_COMPANYNAME_STR COMPANY_NAME_STR +#define VER_COMPANYNAME_STR VENDOR_NAME_STR #define VER_LEGALCOPYRIGHT_STR "Copyright (c) Citrix Systems Inc." #define VER_PRODUCTNAME_STR "XENCRSH" diff --git a/src/xendisk/xendisk.rc b/src/xendisk/xendisk.rc index 5aa56a3..a74ce0c 100644 --- a/src/xendisk/xendisk.rc +++ b/src/xendisk/xendisk.rc @@ -40,7 +40,7 @@ #include <version.h> -#define VER_COMPANYNAME_STR COMPANY_NAME_STR +#define VER_COMPANYNAME_STR VENDOR_NAME_STR #define VER_LEGALCOPYRIGHT_STR "Copyright (c) Citrix Systems Inc." #define VER_PRODUCTNAME_STR "XENDISK" diff --git a/src/xenvbd.inf b/src/xenvbd.inf index e92d3fb..98ec3de 100644 --- a/src/xenvbd.inf +++ b/src/xenvbd.inf @@ -32,7 +32,7 @@ Signature="$Windows NT$" Class=SCSIAdapter ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318} -Provider=%Company% +Provider=%Vendor% CatalogFile=xenvbd.cat DriverVer=01/01/1900,0.0.0.0 @@ -50,12 +50,12 @@ xendisk.sys=0,, xenvbd_coinst.dll=0,, [Manufacturer] -%Company%=Inst,NT$ARCH$ +%Vendor%=Inst,NT$ARCH$ [Inst.NT$ARCH$] -%XenVbdDesc%=XenVbd_Inst,XENBUS\VEN_XSC000&DEV_VBD&REV_08000009 -%XenVbdDesc%=XenVbd_Inst,XENBUS\VEN_XS0001&DEV_VBD&REV_08000009 -%XenVbdDesc%=XenVbd_Inst,XENBUS\VEN_XS0002&DEV_VBD&REV_08000009 +%XenVbdDesc%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@@VENDOR_DEVICE_ID@&DEV_VBD&REV_08000009 +%XenVbdDesc%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@0001&DEV_VBD&REV_08000009 +%XenVbdDesc%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@0002&DEV_VBD&REV_08000009 [XenVbd_Inst] CopyFiles=XenVbd_Copyfiles @@ -109,7 +109,7 @@ HKR,,CoInstallers32,0x00010000,"xenvbd_coinst_@MAJOR_VERSION@_@MINOR_VERSION@_@M [Strings] -Company = "@COMPANY_NAME@" +Vendor = "@VENDOR_NAME@" DiskDesc = "@PRODUCT_NAME@ PV Storage Host Adapter Package" XenVbdDesc= "@PRODUCT_NAME@ PV Storage Host Adapter" XenDiskDesc= "@PRODUCT_NAME@ PV Storage Filter" diff --git a/src/xenvbd/xenvbd.rc b/src/xenvbd/xenvbd.rc index 6ac8c50..1b0148b 100644 --- a/src/xenvbd/xenvbd.rc +++ b/src/xenvbd/xenvbd.rc @@ -40,7 +40,7 @@ #include <version.h> -#define VER_COMPANYNAME_STR COMPANY_NAME_STR +#define VER_COMPANYNAME_STR VENDOR_NAME_STR #define VER_LEGALCOPYRIGHT_STR "Copyright (c) Citrix Systems Inc." #define VER_PRODUCTNAME_STR "XENVBD" diff --git a/vs2012/xencrsh/xencrsh.vcxproj b/vs2012/xencrsh/xencrsh.vcxproj index c835b44..23f469b 100644 --- a/vs2012/xencrsh/xencrsh.vcxproj +++ b/vs2012/xencrsh/xencrsh.vcxproj @@ -25,22 +25,12 @@ <PropertyGroup> <IncludePath>..\..\include;$(IncludePath)</IncludePath> <RunCodeAnalysis>true</RunCodeAnalysis> - <EnableInf2cat>false</EnableInf2cat> - <CustomBuildBeforeTargets>ClCompile;StampInf</CustomBuildBeforeTargets> + <EnableInf2cat>false</EnableInf2cat> <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir> <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir> </PropertyGroup> <ItemDefinitionGroup> - <CustomBuildStep> - <Command>echo "Build Inf" - powershell -Command "(Get-Content ..\..\src\xenvbd.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\..\vs2012\xenvbd.inf" - echo "Build version header" - powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h" - </Command> - <Outputs>..\..\vs2012\xenvbd.inf;..\..\include\version.h</Outputs> - <Inputs>..\..\src\xenvbd.inf;..\..\include\version.hx</Inputs> - </CustomBuildStep> <ClCompile> <PreprocessorDefinitions>__MODULE__="XENCRSH";%(PreprocessorDefinitions)</PreprocessorDefinitions> <WarningLevel>EnableAllWarnings</WarningLevel> diff --git a/vs2013/xencrsh/xencrsh.vcxproj b/vs2013/xencrsh/xencrsh.vcxproj index 6680426..90914d8 100644 --- a/vs2013/xencrsh/xencrsh.vcxproj +++ b/vs2013/xencrsh/xencrsh.vcxproj @@ -1,4 +1,4 @@ -ï<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\configs.props" /> <PropertyGroup Label="Globals"> @@ -56,20 +56,10 @@ <IncludePath>..\..\include;$(IncludePath)</IncludePath> <RunCodeAnalysis>true</RunCodeAnalysis> <EnableInf2cat>false</EnableInf2cat> - <CustomBuildBeforeTargets>ClCompile;StampInf</CustomBuildBeforeTargets> <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir> <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir> </PropertyGroup> <ItemDefinitionGroup> - <CustomBuildStep> - <Command>echo "Build Inf" - powershell -Command "(Get-Content ..\..\src\xenvbd.inf) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content ..\..\vs2013\xenvbd.inf" - echo "Build version header" - powershell -Command "(Get-Content ..\..\include\version.hx) -replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', '$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace '@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' -replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date -format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace '@YEAR@',%24(Get-Date -format yyyy) | Set-Content ..\..\include\version.h" - </Command> - <Outputs>..\..\vs2013\xenvbd.inf;..\..\include\version.h</Outputs> - <Inputs>..\..\src\xenvbd.inf;..\..\include\version.hx</Inputs> - </CustomBuildStep> <ClCompile> <PreprocessorDefinitions>__MODULE__="XENCRSH";%(PreprocessorDefinitions)</PreprocessorDefinitions> <WarningLevel>EnableAllWarnings</WarningLevel> -- 2.1.1 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |