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
file = open('include\\version.h', 'w')
- file.write('#define COMPANY_NAME_STR\t"' + os.environ['COMPANY_NAME'] + '"\n')
+ 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' + os.environ['MAJOR_VERSION'] + '\n')
+ file.write('#define OBJECT_PREFIX_STR\t"' + os.environ['OBJECT_PREFIX'] + '"\n')
+ file.write('#define OBJECT_GUID(_Name)\t' + os.environ['OBJECT_PREFIX'] + ' ## _Name ## _GUID\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' + os.environ['MINOR_VERSION'] + '\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' + os.environ['MICRO_VERSION'] + '\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' + os.environ['BUILD_NUMBER'] + '\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' + str(now.year) + '\n')
- file.write('#define YEAR_STR\t"' + str(now.year) + '"\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' + str(now.month) + '\n')
- file.write('#define MONTH_STR\t"' + str(now.month) + '"\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' + str(now.day) + '\n')
- file.write('#define DAY_STR\t"' + str(now.day) + '"\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.write('#define OBJECT_PREFIX_STR\t"' + os.environ['OBJECT_PREFIX'] + '"\n')
- file.write('#define OBJECT_GUID(_Name)\t' + os.environ['OBJECT_PREFIX'] + ' ## _Name ## _GUID\n')
-
file.close()
-def copy_inf(name, vs):
+def copy_inf(vs, name):
src = open('src\\%s.inf' % name, 'r')
- dst = open(vs+'\\%s.inf' % name, 'w')
+ 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('@COMPANY_NAME@', os.environ['COMPANY_NAME'], 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()
driver = 'xeniface'
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'
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()
- #make_header()
+ 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'])
- #copy_mof(driver)
+ 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()
- #copy_inf(driver, vs)
+ make_header()
+ copy_inf(vs, driver)
+ copy_mof(driver)
symstore_del(driver, 30)
+++ /dev/null
-/* 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@"
-
-#define OBJECT_PREFIX_STR "@OBJECT_PREFIX@"
-#define OBJECT_GUID(_Name) @OBJECT_PREFIX@ ## _Name ## _GUID
-
VARIANT var;
var.vt = VT_BSTR;
- var.bstrVal=formatBstr(COMPANY_NAME_STR " Xen Win32 Service : %s", sessionname);
+ var.bstrVal=formatBstr(VENDOR_NAME_STR " " PRODUCT_NAME_STR " Win32 Service : %s", sessionname);
if (var.bstrVal == NULL)
goto formatnamebstrfailed;
#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 "XENIFACE"
#define VER_PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,MICRO_VERSION,BUILD_NUMBER
#define VER_PRODUCTVERSION_STR MAJOR_VERSION_STR "." MINOR_VERSION_STR "." MICRO_VERSION_STR "." BUILD_NUMBER_STR
-#define VER_INTERNALNAME_STR "w32xagent.exe"
-#define VER_FILEVERSION_STR "1.0"
-#define VER_FILEDESCRIPTION_STR "w32agent"
-#define VER_ORIGINALFILENAME_STR "w32xagent.exe"
+#define VER_INTERNALNAME_STR "w32xagent.exe"
+#define VER_FILEVERSION_STR "1.0"
+#define VER_FILEDESCRIPTION_STR "w32agent"
+#define VER_ORIGINALFILENAME_STR "w32xagent.exe"
#define VER_FILETYPE VFT_APP
#define VER_FILESUBTYPE 0
Signature="$WINDOWS NT$"
Class=System
ClassGUID={4d36e97d-e325-11ce-bfc1-08002be10318}
-Provider=%Company%
+Provider=%Vendor%
DriverVer=01/01/1900,0.0.0.0
CatalogFile=xeniface.cat
ServiceDestDir.NT.Copy = 11
[Manufacturer]
-%Company%=Inst,NT$ARCH$
+%Vendor%=Inst,NT$ARCH$
[Inst.NT$ARCH$]
; DisplayName Section DeviceID
; ----------- ------- --------
-%XenIfaceDevice.DeviceDesc% =XenIface_Device, XENBUS\VEN_XSC000&DEV_IFACE&REV_08000009
-%XenIfaceDevice.DeviceDesc% =XenIface_Device, XENBUS\VEN_XS0001&DEV_IFACE&REV_08000009
-%XenIfaceDevice.DeviceDesc% =XenIface_Device, XENBUS\VEN_XS0002&DEV_IFACE&REV_08000009
+%XenIfaceDevice.DeviceDesc% =XenIface_Device, XENBUS\VEN_@VENDOR_PREFIX@@VENDOR_DEVICE_ID@&DEV_IFACE&REV_08000009
+%XenIfaceDevice.DeviceDesc% =XenIface_Device, XENBUS\VEN_@VENDOR_PREFIX@0001&DEV_IFACE&REV_08000009
+%XenIfaceDevice.DeviceDesc% =XenIface_Device, XENBUS\VEN_@VENDOR_PREFIX@0002&DEV_IFACE&REV_08000009
[XenIface_Device.NT$ARCH$]
CopyFiles=XenIface_Device.NT.Copy, ServiceDestDir.NT.Copy
[Strings]
SPSVCINST_ASSOCSERVICE= 0x00000002
-Company= "@COMPANY_NAME@"
+Vendor= "@VENDOR_NAME@"
DiskId1 = "@PRODUCT_NAME@ Interface Package"
XenIfaceDevice.DeviceDesc = "@PRODUCT_NAME@ Interface"
LITESVC_FLAGS= 0x00000800
#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 "XENIFACE"
<PropertyGroup>
<IncludePath>..\..\include;$(IncludePath)</IncludePath>
<RunCodeAnalysis>true</RunCodeAnalysis>
- <EnableInf2cat>false</EnableInf2cat>
- <CustomBuildBeforeTargets>ClCompile;MofComp;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\xeniface.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\xeniface.inf"
- echo "Modify mof"
- powershell -Command "(Get-Content ..\..\src\xeniface.mof) -replace '@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content ..\..\src\xeniface\wmi.mof"
- </Command>
- <Outputs>..\..\vs2012\xeniface.inf;..\..\src\xeniface\wmi.mof</Outputs>
- <Inputs>..\..\src\xeniface.inf;..\..\src\xeniface.mof</Inputs>
- </CustomBuildStep>
-
+ <ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>__MODULE__="XENIFACE";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>EnableAllWarnings</WarningLevel>
<IncludePath>$(IncludePath)</IncludePath>
<RunCodeAnalysis>true</RunCodeAnalysis>
<EnableInf2cat>false</EnableInf2cat>
- <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup>
- <CustomBuildStep>
- <Command>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) -replace '@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content ..\..\include\version.h"
- </Command>
- <Outputs>..\..\include\version.h</Outputs>
- <Inputs>..\..\include\version.hx</Inputs>
- </CustomBuildStep>
-
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>__MODULE__="XENIFACE_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<IncludePath>..\..\include;$(IncludePath)</IncludePath>
<RunCodeAnalysis>true</RunCodeAnalysis>
<EnableInf2cat>false</EnableInf2cat>
- <CustomBuildBeforeTargets>ClCompile;MofComp;StampInf</CustomBuildBeforeTargets>
<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup>
- <CustomBuildStep>
- <Command>echo "Build Inf"
- powershell -Command "(Get-Content ..\..\src\xeniface.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\xeniface.inf"
- echo "Modify mof"
- powershell -Command "(Get-Content ..\..\src\xeniface.mof) -replace '@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content ..\..\src\xeniface\wmi.mof"
- </Command>
- <Outputs>..\..\vs2013\xeniface.inf;..\..\src\xeniface\wmi.mof</Outputs>
- <Inputs>..\..\src\xeniface.inf;..\..\src\xeniface.mof</Inputs>
- </CustomBuildStep>
<ClCompile>
<PreprocessorDefinitions>__MODULE__="XENIFACE";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>EnableAllWarnings</WarningLevel>
<IncludePath>$(IncludePath)</IncludePath>
<RunCodeAnalysis>true</RunCodeAnalysis>
<EnableInf2cat>false</EnableInf2cat>
- <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
<OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup>
- <CustomBuildStep>
- <Command>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) -replace '@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content ..\..\include\version.h"
- </Command>
- <Outputs>..\..\include\version.h</Outputs>
- <Inputs>..\..\include\version.hx</Inputs>
- </CustomBuildStep>
-
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>__MODULE__="XENIFACE_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>