Discussion:
[edk2] attention git users: a productivity boost for edk2
Laszlo Ersek
2015-06-09 17:37:46 UTC
Permalink
(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.
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/DebugAgentSymbolsBaseLib.inf
DefaultExceptionHandlerLib|ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLibBase.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.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/ArmTrustedMonitorLibNull.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

------------------------------------------------------------------------------
Ard Biesheuvel
2015-06-09 17:50:07 UTC
Permalink
Post by Laszlo Ersek
(Sorry about the sensationalist subject line, I don't have a degree in
marketing :))
[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
- 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).
*.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_., ]+]"
Nice find! Very useful indeed.
--
Ard.
Post by Laszlo Ersek
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
what section each change belongs to.
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/DebugAgentSymbolsBaseLib.inf
DefaultExceptionHandlerLib|ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLibBase.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.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/ArmTrustedMonitorLibNull.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
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Andrew Fish
2015-06-09 18:09:08 UTC
Permalink
Post by Ard Biesheuvel
Post by Laszlo Ersek
Turns out git has a trick for this up its sleeve: see gitattributes(5).
*.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_., ]+]"
Nice find! Very useful indeed.
Can we check this into git to make it the default for the project?

Thanks,

Andrew Fish
Ard Biesheuvel
2015-06-09 20:02:35 UTC
Permalink
Post by Laszlo Ersek
Turns out git has a trick for this up its sleeve: see gitattributes(5).
*.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_., ]+]"
Nice find! Very useful indeed.
Can we check this into git to make it the default for the project?
The attributes file could also live in $WORKSPACE/.gitattributes, so
that part can easily be checked in.

The config snippet could be added to $WORKSPACE/.gitconfig (or any
other file), and included by the repo config by doing something like

git config --add include.path ../.gitconfig

Something like this could perhaps be added to edksetup.___ or some
other script that is involved in setting up the workspace
--
Ard.

------------------------------------------------------------------------------
Gao, Liming
2015-06-10 01:34:04 UTC
Permalink
Good BKM sharing.

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?

Thanks
Liming
-----Original Message-----
From: Laszlo Ersek [mailto:***@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
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/DebugAgentSymbolsBaseLib.inf
DefaultExceptionHandlerLib|ArmPkg/Library/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/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/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
Laszlo Ersek
2015-06-10 11:31:59 UTC
Permalink
Post by Gao, Liming
Good BKM sharing.
What does BKM mean?
Post by Gao, Liming
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
Post by Gao, Liming
Thanks
Liming
-----Original Message-----
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 :))
[Section.LOL]
- 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).
*.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
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/DebugAgentSymbolsBaseLib.inf
DefaultExceptionHandlerLib|ArmPkg/Library/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/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/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
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Gao, Liming
2015-06-10 14:24:06 UTC
Permalink
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:***@redhat.com]
Sent: Wednesday, June 10, 2015 7:32 PM
To: edk2-***@lists.sourceforge.net
Subject: Re: [edk2] attention git users: a productivity boost for edk2
Post by Gao, Liming
Good BKM sharing.
What does BKM mean?
Post by Gao, Liming
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
Post by Gao, Liming
Thanks
Liming
-----Original Message-----
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 :))
[Section.LOL]
- 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).
*.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
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
https://lists.sourceforge.net/lists/listinfo/edk2-devel
----------------------------------------------------------------------
-------- _______________________________________________
edk2-devel mailing list
https://lists.sourceforge.net/lists/listinfo/edk2-devel
Kirkendall, Garrett
2015-06-10 14:34:19 UTC
Permalink
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:***@intel.com]
Sent: Wednesday, June 10, 2015 9:24 AM
To: edk2-***@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:***@redhat.com]
Sent: Wednesday, June 10, 2015 7:32 PM
To: edk2-***@lists.sourceforge.net
Subject: Re: [edk2] attention git users: a productivity boost for edk2
Post by Gao, Liming
Good BKM sharing.
What does BKM mean?
Post by Gao, Liming
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
Post by Gao, Liming
Thanks
Liming
-----Original Message-----
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 :))
[Section.LOL]
- 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).
*.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
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
https://lists.sourceforge.net/lists/listinfo/edk2-devel
----------------------------------------------------------------------
-------- _______________________________________________
edk2-devel mailing list
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel
Laszlo Ersek
2015-06-10 18:33:48 UTC
Permalink
Post by Kirkendall, Garrett
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.
I'm not trying to dictate what suffixes the include files should have.
My only point is that *whatever* the suffixes are, those should be
listed in .git/info/attributes, with diff=FOOBAR, and then the
.git/config file should assign "diff.FOOBAR.xfuncname" such that the ini
format section names show up in the patches.

I don't really care:
- about the particular suffixes
- the actual value of FOOBAR
- the actual regular expression used in xfuncname

as long as the patches I have to look at carry the section names in the
hunk headers. Note that the two files mentioned above,
".git/info/attributes" and ".git/config" are private to everyone's own
git clone.

*If* we wanted to store the attribute assignment inside the tree itself
(ie. in a ".gitattributes" file right under the project root dir),
*then* we'd have to agree on the (common subset of) suffixes, and the
actual value of FOOBAR. (The git config, that is, the
diff.FOOBAR.xfuncname regular expression, would remain private
nevertheless.) If we don't insist on centralizing the attributes (and I
don't), then we don't have to agree about the suffixes and the actual
FOOBAR value.

It's also possible to place only the following in the central (ie.
tracked) .gitattributes file:

*.dec diff=ini
*.dsc diff=ini
*.fdf diff=ini
*.inf diff=ini

And the less standard extensions (dsc.inc, fdf.inc, inc.dsc) can be
specified privately *in addition*, in ".git/info/attributes".

Thanks
Laszlo
Post by Kirkendall, Garrett
GARRETT KIRKENDALL
SMTS Firmware Engineer | CTE
7171 Southwest Parkway, Austin, TX 78735 USA
facebook | amd.com
-----Original Message-----
Sent: Wednesday, June 10, 2015 9:24 AM
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-----
Sent: Wednesday, June 10, 2015 7:32 PM
Subject: Re: [edk2] attention git users: a productivity boost for edk2
Post by Gao, Liming
Good BKM sharing.
What does BKM mean?
Post by Gao, Liming
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?
- 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.
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
Post by Gao, Liming
Thanks
Liming
-----Original Message-----
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 :))
[Section.LOL]
- 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).
*.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
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
https://lists.sourceforge.net/lists/listinfo/edk2-devel
----------------------------------------------------------------------
-------- _______________________________________________
edk2-devel mailing list
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Loading...