On my internal projects, I use for example *.inc.dsc.  This allows any special 
filetype parsing in my tools to recognize it for its intended use, and allows 
me to easily tell visually that it is intended to be included in another file 
of the same final extension type.

GARRETT KIRKENDALL   
SMTS Firmware Engineer | CTE
7171 Southwest Parkway, Austin, TX 78735 USA 
   facebook  |  amd.com

-----Original Message-----
From: Gao, Liming [mailto:liming....@intel.com] 
Sent: Wednesday, June 10, 2015 9:24 AM
To: edk2-devel@lists.sourceforge.net
Subject: Re: [edk2] attention git users: a productivity boost for edk2

BKM: Best known method. 

I mean .dsc.inc is not standard file postfix. Other people may not use it. Our 
internal project stills use *.dsc file as the subset of DSC to be included in 
the full DSC file. 

-----Original Message-----
From: Laszlo Ersek [mailto:ler...@redhat.com]
Sent: Wednesday, June 10, 2015 7:32 PM
To: edk2-devel@lists.sourceforge.net
Subject: Re: [edk2] attention git users: a productivity boost for edk2

On 06/10/15 03:34, Gao, Liming wrote:
> Good BKM sharing. 

What does BKM mean?

> EDKII meta data file has .inf, .dec, *.dsc and *.fdf. What's *.dsc.inc 
> and *.fdf.inc? They are the part of DSC and FDF files that included in 
> the full DSC and FDF files?

Yes. We have a few examples for them:

- ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
- ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
- ArmVirtPkg/ArmVirt.dsc.inc
- OvmfPkg/OvmfPkg.fdf.inc
- OvmfPkg/VarStore.fdf.inc

They are included by DSC and FDF files with the !include directive.

Hm, actually, I just grepped for !include per se, and the suffixes of include 
files are not very consistent. Beyond those listed above, we have:

AppPkg/AppPkg.dsc:!include StdLib/StdLib.inc AppPkg/AppPkg.dsc:!include 
AppPkg/Applications/Sockets/Sockets.inc
StdLib/StdLib.dsc:!include StdLib/StdLib.inc

ie. the full suffix is just .inc. Then,

Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc:  !include 
$(PLATFORM_PACKAGE)/PlatformPkgConfig.dsc
Vlv2TbltDevicePkg/PlatformPkgIA32.dsc:  !include 
$(PLATFORM_PACKAGE)/PlatformPkgConfig.dsc
Vlv2TbltDevicePkg/PlatformPkgX64.dsc:  !include 
$(PLATFORM_PACKAGE)/PlatformPkgConfig.dsc

ie. just .dsc. Finally,

Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc:  !include 
$(PLATFORM_PACKAGE)/AutoPlatformCFG.txt
Vlv2TbltDevicePkg/PlatformPkgIA32.dsc:  !include 
$(PLATFORM_PACKAGE)/AutoPlatformCFG.txt
Vlv2TbltDevicePkg/PlatformPkgX64.dsc:  !include 
$(PLATFORM_PACKAGE)/AutoPlatformCFG.txt

... I think choosing .txt for DSC include files was a really bad choice.

In any case, I'm adding *.inc to my .git/info/attributes file (which in turn 
obviates *.dsc.inc and *.fdf.inc).

... Hm, no I'm not. For example, BeagleBoardPkg has a number of .inc files that 
don't follow the INI format... Sigh. I guess I'll stick with my current 
entries, and accept that they won't cover the AppPkg and StdLib DSC include 
files.

Thanks!
Laszlo

> 
> Thanks
> Liming
> -----Original Message-----
> From: Laszlo Ersek [mailto:ler...@redhat.com]
> Sent: Wednesday, June 10, 2015 1:38 AM
> To: edk2-devel list
> Subject: [edk2] attention git users: a productivity boost for edk2
> 
> (Sorry about the sensationalist subject line, I don't have a degree in 
> marketing :))
> 
> Edk2 uses a large number of text files with *sections*:
> 
> [Section.LOL]
> 
> I'm sure you've been annoyed quite a few times, while reviewing patches, that 
> you couldn't immediately see the section that a hunk modified. (I know I 
> have.) We used to have two solutions for this:
> 
> - On the reviewer side, apply the patchset and review it patch-wise,
>   against the full source code as context.
> 
> - On the sender side, generate the patches with a larger context.
>   Options are -U<n>, --inter-hunk-context=<lines>, and even
>   --function-context. Unfortunately, these don't resolve the question of
>   sections reliably (or they produce overkill output).
> 
> Turns out git has a trick for this up its sleeve: see gitattributes(5).
> 
> (1) Edit your .git/info/attributes file, adding the following lines:
> 
> *.dec     diff=ini
> *.dsc     diff=ini
> *.dsc.inc diff=ini
> *.fdf     diff=ini
> *.fdf.inc diff=ini
> *.inf     diff=ini
> 
> (2) in your .git/config, add
> 
> [diff "ini"]
>       xfuncname = "^\\[[A-Za-z0-9_., ]+]"
> 
> I just set these in my edk2 clone, and tested them on my local branch 
> where I had applied Ard's series
> 
>   [PATCH 0/7] ArmPkg/ArmVirtPkg: GIC revision detection
> 
> for review. A good example is patch #4, "ArmPkg: copy ArmGicArchLib to 
> ArmGicArchSecLib". Now I can immediately see, in the hunk headers (@@), what 
> section each change belongs to.
> 
> Here it is (git show output trimmed to relevant files):
> 
>> diff --git a/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
>> b/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
>> index 0859bc3..6e6687c 100644
>> --- a/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
>> +++ b/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
>> @@ -138,6 +138,7 @@ [LibraryClasses.common.SEC]
>>    
>> PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
>>    
>> PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
>>    PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
>> +  ArmGicArchLib|ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf
>>
>>  [LibraryClasses.common.SEC, LibraryClasses.common.PEIM]
>>    MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf
>> diff --git a/ArmPlatformPkg/ArmPlatformPkg.dsc
>> b/ArmPlatformPkg/ArmPlatformPkg.dsc
>> index be31025..14d82f6 100644
>> --- a/ArmPlatformPkg/ArmPlatformPkg.dsc
>> +++ b/ArmPlatformPkg/ArmPlatformPkg.dsc
>> @@ -134,6 +134,8 @@ [LibraryClasses.common.SEC]
>>    
>> DebugAgentLib|ArmPkg/Library/DebugAgentSymbolsBaseLib/DebugAgentSymbo
>> lsBaseLib.inf
>>    
>> DefaultExceptionHandlerLib|ArmPkg/Library/DefaultExceptionHandlerLib/
>> DefaultExceptionHandlerLib|D
>> efaultExceptionHandlerLibBase.inf
>>
>> +  ArmGicArchLib|ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf
>> +
>>  [LibraryClasses.common.SEC, LibraryClasses.common.PEIM]
>>    MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf
>>
>> diff --git a/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
>> b/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
>> index 19de381..4b4867f 100644
>> --- a/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
>> +++ b/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
>> @@ -128,6 +128,8 @@ [LibraryClasses.common.SEC]
>>    
>> PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/
>> PrePiHobListPointerLib|P
>> rePiHobListPointerLib.inf
>>  !endif
>>
>> +  ArmGicArchLib|ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf
>> +
>>  [LibraryClasses.common.SEC, LibraryClasses.common.PEIM]
>>    MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf
>>
>> diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
>> b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
>> index 84e2a99..8f7b5f1 100644
>> --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
>> +++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
>> @@ -144,6 +144,8 @@ [LibraryClasses.common.SEC]
>>    # Trustzone Support
>>    
>> ArmTrustedMonitorLib|ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/
>> ArmTrustedMonitorLib|A
>> rmTrustedMonitorLibNull.inf
>>
>> +  ArmGicArchLib|ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf
>> +
>>  [LibraryClasses.common.PEI_CORE]
>>    HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
>>    PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
> 
> This git-diff output shows quickly that Ard resolved the library class for 
> SEC modules, a fact that was not visible otherwise from the patch itself.
> 
> I recommend that all git users working with edk2 apply these settings -- they 
> are *very* helpful for reviewers. Personally, I will make this a requirement 
> for patches that I'm expected (or asked) to review.
> 
> Thanks
> Laszlo
> 
> ----------------------------------------------------------------------
> -------- _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 
> ----------------------------------------------------------------------
> -------- _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 


------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to