[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