[ofw] ib_bus.inf example for .inf file date/version stamps

Smith, Stan stan.smith at intel.com
Thu Jul 3 16:29:53 PDT 2008


Hello,
  Please see below.

Reuven Amitai wrote:
> Hi Stan,
> 
> In inf_stamp.inc, there is a hidden assumption that the current
> directory of .inx file is 3 levels up from root.
> 
>> ..\..\..\bin\kernel\$(O)\$(INF_NAME).inf : $(_INX)\$(INF_NAME).inx
> 
> Is this true for all .inx files or just for ib_bus ?
> 
> If this is not the situation, one solution is to have it at every
> directory (which this global file tries to avoid)
> Another option is to defined OFW_ROOT and changed the line to
> $(OFW_ROOT)\bin\kernel\$(O)\$(INF_NAME).inf
> Is there already environment variable that holds the root dir ? Is
> this solution acceptable ?
> 
> Thanks, Reuven.

In the spirit of KIS (Keep-It-Simple) I reworked the .inf file stamping
story.

Synopsis:
  inc\openib.def includes mod_ver.def for IB_MAJORVERSION...
definitions.
  Driver SOURCES file mods to include makefile.inc to do the stampinf
work.
  makefile.inc - new file or mods to existing makefile.inc


Details:

For the ib_bus.inf example - similar mods for ipoib, qlgcvnic & srp -
mthca & mlx4 slightly different.

Added to the driver SOURCES file
------------
!if $(_NT_TOOLS_VERSION) != 0x700
# WDK build only - transform .inx --> .inf adding date & version stamp.
# see .\makefile.inc
INF_NAME=ib_bus
INF_TARGET=..\..\..\bin\kernel\$(O)\$(INF_NAME).inf
NTTARGETFILES=$(INF_TARGET)
MISCFILES=$(NTTARGETFILES)
!endif
------------

INF_TARGET definition is used by the local makefile.inc file to set the
.inf file destination.
The idea of a common inf_stamp.inc has been replaced with a local
makefile.inc or mods to an existing local makefile.inc (case of mlx4_bus
& mlx4_hca).

In the near future we can remove the DDK build test, for now OK.

File: makefile.inc
------------
# Transform .inx file to .inf file adding date + major,min & svn.version
stamp
# Output .inf file is copied to the $(INF_TARGET) folder (commonly where
.sys file resides).

_LNG=$(LANGUAGE)

!IF !DEFINED(_INX)
_INX=.
!ENDIF

STAMP=stampinf -a $(_BUILDARCH)

!INCLUDE mod_ver.def

$(INF_TARGET) : $(_INX)\$(INF_NAME).inx
    copy $(_INX)\$(@B).inx $@
    $(STAMP) -f $@ -d * -v
$(IB_MAJORVERSION).$(IB_MINORVERSION).$(IB_F3VERSION).$(OPENIB_REV)
------------

trunk\inc\openib.def is modified to include mod_ver.def which defines
IB_MAJORVERSION, IB_MINORVERSION, these items used to be defined in
openib.def.
IB_[MAJOR/MINOR]VERSION definitions can be overridden by defining these
in the Sources file.

Unless there is major heartburn, I will commit these mods next Monday.
Suggested patches for ipoib, qlgcvnic and srp will follow.

Mods for mthca, mlx4_hca and mlx4_bus are working although I have
questions about the
mthca.inf file comment '; must be synchronized with MTHCA_DEV.H' and
'; must be synchronized with hca\drv.c' for mlx4_hca/bus.

Are these actual requirements or suggested future work reminders?

Thanks,

Stan.

> 
> -----Original Message-----
> From: ofw-bounces at lists.openfabrics.org
> [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Smith, Stan
> Sent: Friday, June 27, 2008 7:05 PM
> To: Anatoly Greenblatt; ofw at lists.openfabrics.org
> Subject: RE: [ofw] ib_bus.inf example for synchronization of
> .infDriverVerandBuild date, file ver & svn version number.
> 
> Thank you for the stampinf example.
> For the following reasons I prefer the tighter coupling of .inf
> stamping during the driver build stage:
> 
> 1) stamping the .inf during the build process makes sure the .sys file
> version and .inf stamp version are the same.
> 2) OPENIB_REV may not be defined during the driver signing process,
> hence the loss of the svn version (4th file version field).
> 3) Microsoft WDK examples do the stampinf during the build process.
> 
> Thanks for the stampinf suggestion as it's always good to consider
> alternatives.
> 
> Stan.
> 
> 
> Anatoly Greenblatt wrote:
>> Hi Stan,
>> 
>> You can also add the digital signature to building process Here is
>> an example of building batch: 
>> 
>> set DDKPATH=c:\winddk\6001.18001
>> set VERSION=2.0.0.0
>> set BINPATH=c:\winof\bin
>> 
>> pushd .
>> call %DDKPATH%\bin\setenv.bat %DDKPATH% fre wlh popd
>> 
>> for %%i in (%BINPATH%\*.sys) do signtool sign /v /ac
>> MSCV-VSClass3.cer 
> 
>> /n "voltaire" /t http://timestamp.verisign.com/scripts/timestamp.dll
>> %%i for %%i in (%BINPATH%\*.inf) do stampinf -f %%i -d * -v %VERSION%
>> inf2cat.exe /driver:%BINPATH% /verbose
>> /os:server2003_x86,server2003_x64,vista_x86,vista_x64
>> for %%i in (%BINPATH%\*.cat) do signtool sign /v /ac
>> MSCV-VSClass3.cer 
> 
>> /n "voltaire" /t http://timestamp.verisign.com/scripts/timestamp.dll
>> %%i 
>> 
>> Regards,
>> Anatoly.
>> 
>> -----Original Message-----
>> From: ofw-bounces at lists.openfabrics.org
>> [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Stan C. Smith
>> Sent: Wednesday, June 25, 2008 22:39
>> To: ofw at lists.openfabrics.org
>> Subject: [ofw] ib_bus.inf example for synchronization of .inf
>> DriverVer andBuild date, file ver & svn version number.
>> 
>> The following new files and mods enable date & version
>> synchronization 
> 
>> between ibbus.sys and ib_buf.inf. The makefile and .inx filename
>> conventions are derrived from the WDK examples.
>> IB_{MAJOR/MINOR}VERSION can be overridden from definitions in the
>> SOURCES file. 
>> 
>>>>>> New File trunk\inc\inf_stamp.inc
>>>>>> .inf file created where .sys file resides.
>>>>>> Common makefile fragment included by makfile.inc
>> 
>> # Transform .inx file to .inf file adding date + major/min & svn.ver
>> stamps # Output .inf place is copied to bin\kernel\... folder (where
>> .sys file resides) 
>> 
>> _LNG=$(LANGUAGE)
>> _INX=.
>> STAMP=stampinf -a $(_BUILDARCH)
>> 
>> !INCLUDE mod_ver.def
>> 
>> ..\..\..\bin\kernel\$(O)\$(INF_NAME).inf : $(_INX)\$(INF_NAME).inx  
>>     copy $(_INX)\$(@B).inx $@ $(STAMP) -f $@ -d * -v
>> $(IB_MAJORVERSION).$(IB_MINORVERSION).$(IB_F3VERSION).$(OPENIB_REV)
>> 
>> 
>>>>>> New file trunk\inc\mod_ver.def
>> 
>> # Define Major and Minor numbers for the current module build.
>> # This file is included by openib.def & inf_stamp.inc so as to define
>> # major & minor #'s in a single location.
>> #
>> # Major & Minor definitions can be defined in a local SOURCES file #
>> which overrides these definitions thus providing module local
>> version # definitions. 
>> 
>> !IF !DEFINED(IB_MAJORVERSION)
>> IB_MAJORVERSION=2
>> !ENDIF
>> 
>> !IF !DEFINED(IB_MINORVERSION)
>> IB_MINORVERSION=0
>> !ENDIF
>> 
>> # unused File version Field 3, see inf_stamp.inc !IF
>> !DEFINED(IB_F3VERSION) IB_F3VERSION=0 !ENDIF
>> 
>>>>>> Mods to trunk\inc\openib.def
>> 
>> diff C3 C:/Temp/openib.def-revBASE.svn000.tmp.def
>> C:/openIB-windows/SVN/gen1/trunk/inc/openib.def
>> *** C:/Temp/openib.def-revBASE.svn000.tmp.def	Wed Jun 25
12:14:41
>> 2008 --- C:/openIB-windows/SVN/gen1/trunk/inc/openib.def	Wed Jun
25
>> 10:56:01 2008 
>> ***************
>> *** 1,3 ****
>> --- 1,6 ----
>> + !IF !DEFINED(_OPENIB_DEF_)
>> + _OPENIB_DEF_=1
>> +
>>   !INCLUDE $(NTMAKEENV)\makefile.def
>> 
>>   # Allow overriding the company name.
>> ***************
>> *** 10,22 ****
>>   IB_PRODUCTNAME="""OpenFabrics\x20Windows"""
>>   !ENDIF
>> 
>> - !IF !DEFINED(IB_MAJORVERSION)
>> - IB_MAJORVERSION=1
>> - !endif
>> -
>> - !IF !DEFINED(IB_MINORVERSION)
>> - IB_MINORVERSION=0
>> - !endif
>> 
>>   !IF !DEFINED(IB_FILEBUILD)
>>   IB_FILEBUILD=0
>> --- 13,20 ----
>>   IB_PRODUCTNAME="""OpenFabrics\x20Windows"""
>>   !ENDIF
>> 
>> + # get module versions: major, minor & svn.ver !include mod_ver.def
>> 
>>   !IF !DEFINED(IB_FILEBUILD)
>>   IB_FILEBUILD=0
>> ***************
>> *** 24,31 ****
>> 
>>   !IF !DEFINED(IB_FILEREV)
>>   IB_FILEREV=$(OPENIB_REV)
>> -
>> - !endif
>> 
>>   !IFNDEF VER_PROVIDER
>>   VER_PROVIDER="""OpenIB"""
>> --- 22,28 ----
>> 
>>   !IF !DEFINED(IB_FILEREV)
>>   IB_FILEREV=$(OPENIB_REV)
>> + !ENDIF
>> 
>>   !IFNDEF VER_PROVIDER
>>   VER_PROVIDER="""OpenIB"""
>> ***************
>> *** 37,40 ****
>>       -DVER_FILEMINORVERSION=$(IB_MINORVERSION) \
>>       -DVER_FILEBUILD=$(IB_FILEBUILD) \
>>   	-DVER_FILEREV=$(IB_FILEREV) \
>>   	-DVER_PROVIDER=$(VER_PROVIDER)
>> --- 34,39 ----
>>       -DVER_FILEMINORVERSION=$(IB_MINORVERSION) \
>>       -DVER_FILEBUILD=$(IB_FILEBUILD) \
>>   	-DVER_FILEREV=$(IB_FILEREV) \
>>   	-DVER_PROVIDER=$(VER_PROVIDER)
>> +
>> + !ENDIF
>> 
>> 
>>>>>> New file trunk\core\bus\kernel\makefile.inc
>> 
>> #
>> # This file indirects to the common inf_stamp.inf that is # shared by
>> driver components of the OpenIB Windows project.
>> #
>> 
>> !include ..\..\..\inc\inf_stamp.inc
>> 
>> 
>>>>>> Rename trunk\core\bus\kernel\ib_bus.inf -->
>> trunk\core\bus\kernel\ib_bus.inx
>>>>>> If you need the .inf file without stamping, copy ib_bus.inx -->
>>>>>> ib_bus.inf Microsoft defined the .inx convention.
>> 
>>>>>> Mods to trunk\core\bus\kernel\SOURCES
>> 
>> *** C:/Temp/SOURCES-revBASE.svn000.tmp  Wed Jun 25 12:09:33 2008
>> --- C:/openIB-windows/SVN/gen1/trunk/core/bus/kernel/SOURCES  Fri
>> Jun 20 16:35:19 2008 
>> ***************
>> *** 2,7 ****
>> --- 2,17 ----
>>   TARGETPATH=..\..\..\bin\kernel\obj$(BUILD_ALT_DIR)  
>> TARGETTYPE=DRIVER 
>> 
>> + # Transform .inx --> .inf adding date & version stamps #
>> + NTTARGETFILES invokes loginc in wdk\xxx\bin\makefile.new to # +
>> include .\makefile.inc +
>> + !if $(_NT_TOOLS_VERSION) != 0x700
>> + # WDK build only.
>> + INF_NAME=ib_bus
>> + NTTARGETFILES=..\..\..\bin\kernel\$(O)\$(INF_NAME).inf +
>> MISCFILES=$(NTTARGETFILES) + !endif
>> 
>>   !if $(FREEBUILD)
>>   ENABLE_EVENT_TRACING=1
>> 
>> 
>> 
>> _______________________________________________
>> ofw mailing list
>> ofw at lists.openfabrics.org
>> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
>> _______________________________________________
>> ofw mailing list
>> ofw at lists.openfabrics.org
>> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
> 
> _______________________________________________
> ofw mailing list
> ofw at lists.openfabrics.org
> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw




More information about the ofw mailing list