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

Reply via email to