[edk2] [ edk2-DecSpecification PATCH 4/4] Declarations not allowed to be both public and private

Michael Kinney posted 4 patches 7 years, 6 months ago
[edk2] [ edk2-DecSpecification PATCH 4/4] Declarations not allowed to be both public and private
Posted by Michael Kinney 7 years, 6 months ago
https://bugzilla.tianocore.org/show_bug.cgi?id=482

Clarify that Includes, Protocols, PPIs, and GUIDs
declared in and a DEC file are now allowed to be
both public and private.  If this condition is
detected the build tools must terminate with an
error.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Cc: Kevin W Shaw <kevin.w.shaw@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
---
 3_edk_ii_dec_file_format/35_[includes]_sections.md |  16 ++
 3_edk_ii_dec_file_format/36_[guids]_sections.md    |  15 ++
 .../37_[protocols]_sections.md                     |  15 ++
 3_edk_ii_dec_file_format/38_[ppis]_sections.md     |  15 ++
 README.md                                          | 183 +++++++++++----------
 5 files changed, 153 insertions(+), 91 deletions(-)

diff --git a/3_edk_ii_dec_file_format/35_[includes]_sections.md b/3_edk_ii_dec_file_format/35_[includes]_sections.md
index 6fa083c..ed5acea 100644
--- a/3_edk_ii_dec_file_format/35_[includes]_sections.md
+++ b/3_edk_ii_dec_file_format/35_[includes]_sections.md
@@ -94,6 +94,22 @@ build tools must terminate with an error message.
 
 For example, `[Includes.common, Includes.IA32.Private]` is prohibited.
 
+It is NOT permissible for the same include directory to be listed in section
+tags with and without the `Private` modifier. If this condition is detected,
+the build tools must terminate with an error message.
+
+For example, the following is prohibited because the same directory called
+`MyPrivateIncludePath` is listed in a tag with and without a `Private`
+modifier.
+
+```
+[Includes]
+  MyPrivateIncludePath
+
+[Includes.common.Private]
+  MyPrivateIncludePath
+```
+
 #### Example
 
 ```ini
diff --git a/3_edk_ii_dec_file_format/36_[guids]_sections.md b/3_edk_ii_dec_file_format/36_[guids]_sections.md
index 1d00c9a..6a398ea 100644
--- a/3_edk_ii_dec_file_format/36_[guids]_sections.md
+++ b/3_edk_ii_dec_file_format/36_[guids]_sections.md
@@ -91,6 +91,21 @@ build tools must terminate with an error message.
 
 For example, `[Guids.common, Guids.IA32.Private]` is prohibited.
 
+It is NOT permissible for the same GUID to be listed in section tags with and
+without the `Private` modifier. If this condition is detected, the build tools
+must terminate with an error message.
+
+For example, the following is prohibited because the GUID named `MyPrivateGuid`
+is listed in a tag with and without a `Private` modifier.
+
+```
+[Guids]
+  MyPrivateGuid = { 0x1e96808b, 0xfa93, 0x4230, { 0xb5, 0x6b, 0x96, 0xc5, 0x95, 0x9b, 0xd1, 0xd2 }}
+
+[Guids.common.Private]
+  MyPrivateGuid = { 0x1e96808b, 0xfa93, 0x4230, { 0xb5, 0x6b, 0x96, 0xc5, 0x95, 0x9b, 0xd1, 0xd2 }}
+```
+
 #### Example
 
 ```ini
diff --git a/3_edk_ii_dec_file_format/37_[protocols]_sections.md b/3_edk_ii_dec_file_format/37_[protocols]_sections.md
index a43260c..c1d7daf 100644
--- a/3_edk_ii_dec_file_format/37_[protocols]_sections.md
+++ b/3_edk_ii_dec_file_format/37_[protocols]_sections.md
@@ -90,6 +90,21 @@ build tools must terminate with an error message.
 
 For example, `[Protocols.common, Protocols.IA32.Private]` is prohibited.
 
+It is NOT permissible for the same protocol to be listed in section tags with
+and without the `Private` modifier. If this condition is detected, the build
+tools must terminate with an error message.
+
+For example, the following is prohibited because the protocol named
+`MyPrivateProtocol` is listed in a tag with and without a `Private` modifier.
+
+```
+[Protocols]
+  MyPrivateProtocol = { 0xc7c4a20f, 0xd1d1, 0x427a, { 0xb0, 0x82, 0xa8, 0xb6, 0x24, 0xf7, 0x69, 0x4f }}
+
+[Protocols.common.Private]
+  MyPrivateProtocol = { 0xc7c4a20f, 0xd1d1, 0x427a, { 0xb0, 0x82, 0xa8, 0xb6, 0x24, 0xf7, 0x69, 0x4f }}
+```
+
 #### Example
 
 ```ini
diff --git a/3_edk_ii_dec_file_format/38_[ppis]_sections.md b/3_edk_ii_dec_file_format/38_[ppis]_sections.md
index 87c5f0d..db83fc4 100644
--- a/3_edk_ii_dec_file_format/38_[ppis]_sections.md
+++ b/3_edk_ii_dec_file_format/38_[ppis]_sections.md
@@ -91,6 +91,21 @@ build tools must terminate with an error message.
 
 For example, `[Ppis.common, Ppis.IA32.Private]` is prohibited.
 
+It is NOT permissible for the same PPI to be listed in section tags with and
+without the `Private` modifier. If this condition is detected, the build tools
+must terminate with an error message.
+
+For example, the following is prohibited because the PPI named `MyPrivatePpi`
+is listed in a tag with and without a `Private` modifier.
+
+```
+[Ppis]
+  MyPrivatePpi = { 0x10ed6a18, 0xbbf7, 0x4051, { 0xba, 0xb8, 0xb4, 0x90, 0x1a, 0x65, 0xa2, 0xc5 }}
+
+[Ppis.common.Private]
+  MyPrivatePpi = { 0x10ed6a18, 0xbbf7, 0x4051, { 0xba, 0xb8, 0xb4, 0x90, 0x1a, 0x65, 0xa2, 0xc5 }}
+```
+
 #### Example
 
 ```ini
diff --git a/README.md b/README.md
index 372ef19..5eea1ad 100644
--- a/README.md
+++ b/README.md
@@ -76,94 +76,95 @@ Copyright (c) 2007-2017, Intel Corporation. All rights reserved.
 
 ### Revision History
 
-| Revision   | Revision History                                                                                                          | Date            |
-| ---------- | ------------------------------------------------------------------------------------------------------------------------- | --------------- |
-| 1.0        | Initial release.                                                                                                          | December 2007   |
-| 1.1        | Updated based on errata                                                                                                   | August 2008     |
-| 1.2        | Updated based on enhancement requests                                                                                     | June 2009       |
-| 1.21       | Updated based on errata and for enhancement requests                                                                      | January 2010    |
-|            | Standardized the format for common content.                                                                               |                 |
-|            | Added support for @Keyword Doxygen tag                                                                                    |                 |
-|            | Added support for @ModuleType Doxygen tags                                                                                |                 |
-|            | Added support for @ValidList, @DefaultValue and @ValidRange Doxygen tags for PCDs                                         |                 |
-|            | Added PKG_UNI_FILE element to [defines] section                                                                           |                 |
-| 1.22       | Errata and grammatical editing                                                                                            | April 2010      |
-| 1.22 w/    | Updates:                                                                                                                  | December 2011   |
-| Errata A   | Updated to support UEFI version 2.3.1 and updated spec release dates in Introduction                                      |                 |
-|            | Clarify UEFI's PI Distribution Package Specification                                                                      |                 |
-|            | Standardize Common data definitions for all specifications                                                                |                 |
-|            | Grammatical, formatting and spelling changes                                                                              |                 |
-|            | Replaced "should" with wording saying that it is                                                                          |                 |
-|            | "recommended"                                                                                                             |                 |
-|            | Added EBNF for `<Extension>`                                                                                              |                 |
-|            | Added scoping rules for Macros, clarified MACRO summary                                                                   |                 |
-|            | Added an example of a binary only DEC file                                                                                |                 |
-|            | Removed references to system environment variables in the Macros section                                                  |                 |
-|            | Specifically state where `<MACROVAL>` can be used, and where it is prohibited;                                            |                 |
-|            | specifically state that MACROVAL entries are expanded where they are used;                                                |                 |
-|            | clarify that MACROS are only expanded, not evaluated during initial parsing of the DEC file                               |                 |
-|            | Added table that shows that every part of a path name can be replaced by a MACROVAL                                       |                 |
-|            | Clarify that C data arrays must be byte arrays for PCD value fields; prohibit C format and                                |                 |
-|            | Registry Format GUID structures in VOID* PCD value fields                                                                 |                 |
-|            | Update non-zero number is True, only 0 is consideered False                                                               |                 |
-|            | Prohibit specifying items as architecturally specific and also common                                                     |                 |
-|            | Changed `<RegistryGuid>` to `<RegistryFormatGUID>` in                                                                     |                 |
-|            | 3.4                                                                                                                       |                 |
-|            | Defined `<GuidValue>` as a `<CFormatGUID>` for this release (need to allow registry format in a future release)           |                 |
-|            | Update the [Includes], [Guids], [Protocols], [PPIs], [LibraryClasses] and PCD sections to allow an empty section          |                 |
-|            | Updated the format for `<QuotedString>`, `<CString>` and `<UnicodeString>`                                                |                 |
-|            | Update PATH related EBNF                                                                                                  |                 |
-|            | Add `<MacroDefinition>` to [Defines], [Includes] and                                                                      |                 |
-|            | `[LibraryClasses] sections`                                                                                               |                 |
-|            | Provide rules in 2.2.6 for how macros can be shared between different subsections                                         |                 |
-| 1.22 w/    | Updates:                                                                                                                  | June 2012       |
-| Errata B   | Added a + after `<Express>` in the DoxComment definition of PCDs, as more than one expression can be                      |                 |
-|            | specified in the UEFI PI Distribution Package Specification.                                                              |                 |
-|            | Added text describing the use of `<HexDigit>` for error numbers as well as how they are scoped.                           |                 |
-| 1.22 w/    | Updates:                                                                                                                  | June 2012       |
-| Errata B   | Updated UEFI/PI Spec version in chapter 1.3 to include Errata letters.                                                    |                 |
-| (cont.)    | In Section 3.10 modified the optional error number in                                                                     |                 |
-|            | DoxComment definitions for PCDs from `<HexDigit>`+ to                                                                     |                 |
-|            | <ErrorCode> and defined <ErrorCode> to be of type <NumValUint32>;                                                         |                 |
-|            | also added a "\|" after the value to separate the error code from numeric values                                          |                 |
-|            | Added AsBuilt entries for Abstract and Description                                                                        |                 |
-|            | Clarified that the file must use the DOS end-of-line character sequence, `0x0D 0x0A`                                      |                 |
-| 1.22 w/    | Updates:                                                                                                                  | August 2013     |
-| Errata C   | Updated UEFI/PI Specification version support in chapter 1                                                                |                 |
-|            | Modified examples to correct previous errors                                                                              |                 |
-|            | Removed errors from text                                                                                                  |                 |
-|            | Updated examples                                                                                                          |                 |
-|            | Modified EBNF to prevent using the architectural modifier of common with any other architecture.                          |                 |
-|            | Ensure that wording specifically states that the architecture modifiers are not case sensitive.                           |                 |
-|            | Add description of PCD processing rules in section 3.10                                                                   |                 |
-|            | Allow registry format GUID values in GUIDs, Protocols,                                                                    |                 |
-|            | PPIs sections instead of requiring C format GUID values                                                                   |                 |
-|            | (which will continue to be allowed)                                                                                       |                 |
-|            | The error codes are scoped to the TokenSpaceGUID, not to the PCD                                                          |                 |
-|            | Added reference to the EDK II Build Specification for PCD processing rules.                                               |                 |
-| 1.24       | `Updates;`                                                                                                                | August 2014     |
-|            | Change revision number of this specification from 1.22 to                                                                 |                 |
-|            | 1.24                                                                                                                      |                 |
-|            | Updated `DEC_SPECIFICATION` to `0x00010017`                                                                               |                 |
-|            | Added additional parameter definitions for clarification of the comment content for PCDs                                  |                 |
-|            | Added the `PACKAGE_UNI_FILE` entry to the `[Defines]` section                                                             |                 |
-|            | Added reserved TianoCore user extension, for                                                                              |                 |
-|            | `"ExtraFiles"`                                                                                                            |                 |
-|            | Added PCD comment type for # [Error] which is used to map an error code for a given token space to a specific string.     |                 |
-| 1.24 w/    | Updates:                                                                                                                  | December 2014   |
-| Errata A   | Changed DEC_SPECIFICATION to 0x00010018 and allow specifying it as a decimal, i.e., 1.24.                                 |                 |
-|            | Updated specification dates and added two new specifications in section 1.2                                               |                 |
-|            | Removed expression EBNF as it has been replaced by the EDK II Expression Syntax Specification.                            |                 |
-| 1.24 w/    | Updates:                                                                                                                  | March 2015      |
-| Errata B   | - Update link to the EDK II Specifications, fixed the name of the Multi-String .UNI File Format Specification             |                 |
-| 1.24 w/    | Updates:                                                                                                                  | August 2015     |
-| Errata C   | Clarify that #include statements are not permitted in UNI file specified in the PACKAGE_UNI_FILE entry                    |                 |
-| 1.25       | Updates:                                                                                                                  | January 2015    |
-|            | Specification revision to 1.25                                                                                            |                 |
-|            | Revised WORKSPACE wording for updated build system that can handle                                                        |                 |
-|            | packages located outside of the WORKSPACE directory tree (refer to                                                        |                 |
-|            | the TianoCore.org EDKII website for additional instructions on setting                                                    |                 |
-|            | up a development environment).                                                                                            |                 |
-| 1.26       | Reformat for GitBook                                                                                                      | April 2017      |
-|            | Updated `DEC_SPECIFICATION` to `0x0001001A` or `1.26`                                                                     |                 |
-|            | [#465](https://bugzilla.tianocore.org/show_bug.cgi?id=465) DEC spec: document private definitions                         |                 |
+| Revision   | Revision History                                                                                                                                    | Date            |
+| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
+| 1.0        | Initial release.                                                                                                                                    | December 2007   |
+| 1.1        | Updated based on errata                                                                                                                             | August 2008     |
+| 1.2        | Updated based on enhancement requests                                                                                                               | June 2009       |
+| 1.21       | Updated based on errata and for enhancement requests                                                                                                | January 2010    |
+|            | Standardized the format for common content.                                                                                                         |                 |
+|            | Added support for @Keyword Doxygen tag                                                                                                              |                 |
+|            | Added support for @ModuleType Doxygen tags                                                                                                          |                 |
+|            | Added support for @ValidList, @DefaultValue and @ValidRange Doxygen tags for PCDs                                                                   |                 |
+|            | Added PKG_UNI_FILE element to [defines] section                                                                                                     |                 |
+| 1.22       | Errata and grammatical editing                                                                                                                      | April 2010      |
+| 1.22 w/    | Updates:                                                                                                                                            | December 2011   |
+| Errata A   | Updated to support UEFI version 2.3.1 and updated spec release dates in Introduction                                                                |                 |
+|            | Clarify UEFI's PI Distribution Package Specification                                                                                                |                 |
+|            | Standardize Common data definitions for all specifications                                                                                          |                 |
+|            | Grammatical, formatting and spelling changes                                                                                                        |                 |
+|            | Replaced "should" with wording saying that it is                                                                                                    |                 |
+|            | "recommended"                                                                                                                                       |                 |
+|            | Added EBNF for `<Extension>`                                                                                                                        |                 |
+|            | Added scoping rules for Macros, clarified MACRO summary                                                                                             |                 |
+|            | Added an example of a binary only DEC file                                                                                                          |                 |
+|            | Removed references to system environment variables in the Macros section                                                                            |                 |
+|            | Specifically state where `<MACROVAL>` can be used, and where it is prohibited;                                                                      |                 |
+|            | specifically state that MACROVAL entries are expanded where they are used;                                                                          |                 |
+|            | clarify that MACROS are only expanded, not evaluated during initial parsing of the DEC file                                                         |                 |
+|            | Added table that shows that every part of a path name can be replaced by a MACROVAL                                                                 |                 |
+|            | Clarify that C data arrays must be byte arrays for PCD value fields; prohibit C format and                                                          |                 |
+|            | Registry Format GUID structures in VOID* PCD value fields                                                                                           |                 |
+|            | Update non-zero number is True, only 0 is consideered False                                                                                         |                 |
+|            | Prohibit specifying items as architecturally specific and also common                                                                               |                 |
+|            | Changed `<RegistryGuid>` to `<RegistryFormatGUID>` in                                                                                               |                 |
+|            | 3.4                                                                                                                                                 |                 |
+|            | Defined `<GuidValue>` as a `<CFormatGUID>` for this release (need to allow registry format in a future release)                                     |                 |
+|            | Update the [Includes], [Guids], [Protocols], [PPIs], [LibraryClasses] and PCD sections to allow an empty section                                    |                 |
+|            | Updated the format for `<QuotedString>`, `<CString>` and `<UnicodeString>`                                                                          |                 |
+|            | Update PATH related EBNF                                                                                                                            |                 |
+|            | Add `<MacroDefinition>` to [Defines], [Includes] and                                                                                                |                 |
+|            | `[LibraryClasses] sections`                                                                                                                         |                 |
+|            | Provide rules in 2.2.6 for how macros can be shared between different subsections                                                                   |                 |
+| 1.22 w/    | Updates:                                                                                                                                            | June 2012       |
+| Errata B   | Added a + after `<Express>` in the DoxComment definition of PCDs, as more than one expression can be                                                |                 |
+|            | specified in the UEFI PI Distribution Package Specification.                                                                                        |                 |
+|            | Added text describing the use of `<HexDigit>` for error numbers as well as how they are scoped.                                                     |                 |
+| 1.22 w/    | Updates:                                                                                                                                            | June 2012       |
+| Errata B   | Updated UEFI/PI Spec version in chapter 1.3 to include Errata letters.                                                                              |                 |
+| (cont.)    | In Section 3.10 modified the optional error number in                                                                                               |                 |
+|            | DoxComment definitions for PCDs from `<HexDigit>`+ to                                                                                               |                 |
+|            | <ErrorCode> and defined <ErrorCode> to be of type <NumValUint32>;                                                                                   |                 |
+|            | also added a "\|" after the value to separate the error code from numeric values                                                                    |                 |
+|            | Added AsBuilt entries for Abstract and Description                                                                                                  |                 |
+|            | Clarified that the file must use the DOS end-of-line character sequence, `0x0D 0x0A`                                                                |                 |
+| 1.22 w/    | Updates:                                                                                                                                            | August 2013     |
+| Errata C   | Updated UEFI/PI Specification version support in chapter 1                                                                                          |                 |
+|            | Modified examples to correct previous errors                                                                                                        |                 |
+|            | Removed errors from text                                                                                                                            |                 |
+|            | Updated examples                                                                                                                                    |                 |
+|            | Modified EBNF to prevent using the architectural modifier of common with any other architecture.                                                    |                 |
+|            | Ensure that wording specifically states that the architecture modifiers are not case sensitive.                                                     |                 |
+|            | Add description of PCD processing rules in section 3.10                                                                                             |                 |
+|            | Allow registry format GUID values in GUIDs, Protocols,                                                                                              |                 |
+|            | PPIs sections instead of requiring C format GUID values                                                                                             |                 |
+|            | (which will continue to be allowed)                                                                                                                 |                 |
+|            | The error codes are scoped to the TokenSpaceGUID, not to the PCD                                                                                    |                 |
+|            | Added reference to the EDK II Build Specification for PCD processing rules.                                                                         |                 |
+| 1.24       | `Updates;`                                                                                                                                          | August 2014     |
+|            | Change revision number of this specification from 1.22 to                                                                                           |                 |
+|            | 1.24                                                                                                                                                |                 |
+|            | Updated `DEC_SPECIFICATION` to `0x00010017`                                                                                                         |                 |
+|            | Added additional parameter definitions for clarification of the comment content for PCDs                                                            |                 |
+|            | Added the `PACKAGE_UNI_FILE` entry to the `[Defines]` section                                                                                       |                 |
+|            | Added reserved TianoCore user extension, for                                                                                                        |                 |
+|            | `"ExtraFiles"`                                                                                                                                      |                 |
+|            | Added PCD comment type for # [Error] which is used to map an error code for a given token space to a specific string.                               |                 |
+| 1.24 w/    | Updates:                                                                                                                                            | December 2014   |
+| Errata A   | Changed DEC_SPECIFICATION to 0x00010018 and allow specifying it as a decimal, i.e., 1.24.                                                           |                 |
+|            | Updated specification dates and added two new specifications in section 1.2                                                                         |                 |
+|            | Removed expression EBNF as it has been replaced by the EDK II Expression Syntax Specification.                                                      |                 |
+| 1.24 w/    | Updates:                                                                                                                                            | March 2015      |
+| Errata B   | - Update link to the EDK II Specifications, fixed the name of the Multi-String .UNI File Format Specification                                       |                 |
+| 1.24 w/    | Updates:                                                                                                                                            | August 2015     |
+| Errata C   | Clarify that #include statements are not permitted in UNI file specified in the PACKAGE_UNI_FILE entry                                              |                 |
+| 1.25       | Updates:                                                                                                                                            | January 2015    |
+|            | Specification revision to 1.25                                                                                                                      |                 |
+|            | Revised WORKSPACE wording for updated build system that can handle                                                                                  |                 |
+|            | packages located outside of the WORKSPACE directory tree (refer to                                                                                  |                 |
+|            | the TianoCore.org EDKII website for additional instructions on setting                                                                              |                 |
+|            | up a development environment).                                                                                                                      |                 |
+| 1.26       | Reformat for GitBook                                                                                                                                | April 2017      |
+|            | Updated `DEC_SPECIFICATION` to `0x0001001A` or `1.26`                                                                                               |                 |
+|            | [#465](https://bugzilla.tianocore.org/show_bug.cgi?id=465) DEC spec: document private definitions                                                   |                 |
+|            | [#482](https://bugzilla.tianocore.org/show_bug.cgi?id=482) DEC Spec: add clarification for [Ppis], [Guids], [Protocols], [Includes] Private support |                 |
-- 
2.6.3.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel