On 06/16/15 04:35, Feng, Bob C wrote: > Hello Laszlo and Ray, > > I created a patch to fix the build crash. When the build tool find > there is incorrect syntax in @expression, @ValidList and @ValidRange > in DEC file, the build tool will break and report an error message. > Please review.
Looks good to me. Reviewed-by: Laszlo Ersek <ler...@redhat.com> I also tested it, by locally reverting Ray's fix in SVN r17628, applying your patch, and then attempting to build OVMF. The error message I got was much better: > .../PcAtChipsetPkg/PcAtChipsetPkg.dec(126): error 3000: The syntax for > @Expression of PCD gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear > is incorrect > @Expression gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear > < gPcAtChipsetPkgTokenSpaceGuid.PcdMinimalValidYear + 100 > > [...] > > - Failed - Tested-by: Laszlo Ersek <ler...@redhat.com> Thanks! Laszlo > > Thanks, > Bob > > -----Original Message----- > From: Ni, Ruiyu [mailto:ruiyu...@intel.com] > Sent: Friday, June 12, 2015 9:16 AM > To: Laszlo Ersek > Cc: edk2-devel@lists.sourceforge.net; Gerd Hoffmann (GMail address) > Subject: Re: [edk2] [Patch] PcAtChipsetPkg/PcRtc: Fix a Y2K bug > > Laszlo, > Yes I can reproduce this build failure. > I did build without the expression comments but didn't do that again after > adding the expression comments in DEC. I thought it was only comments and not > checked by tool. > We are working on patch to fix the build failure. > > Thanks, > Ray > >> -----Original Message----- >> From: Laszlo Ersek [mailto:ler...@redhat.com] >> Sent: Thursday, June 11, 2015 11:17 PM >> To: Ni, Ruiyu >> Cc: edk2-devel@lists.sourceforge.net; Gerd Hoffmann (GMail address) >> Subject: Re: [edk2] [Patch] PcAtChipsetPkg/PcRtc: Fix a Y2K bug >> >> On 06/10/15 06:10, Ruiyu Ni wrote: >>> The original driver cannot handle the case when system time runs >>> from >> 1999/12/31 23:59:59 >>> to 2000/1/1 0:0:0. >>> A simple test to set system time to 1999/12/31 23:59:59 can expose >>> this >> bug. >>> The patch limits the driver to only support year in 100 range and >>> decide the >> century value based >>> on the supporting range: Century either equals to PcdMinimalYear / >>> 100 or >> equals to PcdMinimalYear / 100 + 1. >>> >>> The patch passed the Y2K test. >>> However with year range [1998, 2097], when system time is 2097/12/31 >> 23:59:59, >>> the next second system time will become 1998/1/1 0:0:0. I think it's >>> a >> acceptable limitation. >>> >>> Contributed-under: TianoCore Contribution Agreement 1.0 >>> Signed-off-by: Ruiyu Ni <ruiyu...@intel.com> >>> Cc: Feng Tian <feng.t...@intel.com> >>> Cc: Liming Gao <liming....@intel.com> >>> Cc: Michael D Kinney <michael.d.kin...@intel.com> >>> --- >>> PcAtChipsetPkg/PcAtChipsetPkg.dec | 5 +- >>> PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c | 55 >> +++++++++------------- >>> PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.h | 11 +---- >>> 3 files changed, 27 insertions(+), 44 deletions(-) >>> >>> diff --git a/PcAtChipsetPkg/PcAtChipsetPkg.dec >> b/PcAtChipsetPkg/PcAtChipsetPkg.dec >>> index fb6fb8b..6a1415c 100644 >>> --- a/PcAtChipsetPkg/PcAtChipsetPkg.dec >>> +++ b/PcAtChipsetPkg/PcAtChipsetPkg.dec >>> @@ -123,7 +123,8 @@ >>> >>> ## This PCD specifies the maximal valid year in RTC. >>> # @Prompt Maximal valid year in RTC. >>> - >> gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear|2099|UINT16|0x000 >> 0000E >>> + # @Expression gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear >> < gPcAtChipsetPkgTokenSpaceGuid.PcdMinimalValidYear + 100 >> >> This @Expression is malformed, it causes the following build error: >> >>> build.py... >>> : error C0DE: Unknown fatal error when processing >> [.../PcAtChipsetPkg/PcAtChipsetPkg.dec] >>> >>> (Please send email to edk2-devel@lists.sourceforge.net for help, >>> attaching >> following call stack trace!) >>> >>> (Python 2.7.5 on linux2) Traceback (most recent call last): >>> File >> ".../BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.p >> y", >> line 2032, in Main >>> MyBuild.Launch() >>> File >> ".../BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.p >> y", >> line 1788, in Launch >>> self._MultiThreadBuildPlatform() >>> File >> ".../BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.p >> y", line 1583, in _MultiThreadBuildPlatform >>> self.Progress >>> File ".../BaseTools/Source/Python/AutoGen/AutoGen.py", line 175, >>> in >> __new__ >>> if not AutoGenObject._Init(Workspace, MetaFile, Target, >>> Toolchain, >> Arch, *args, **kwargs): >>> File ".../BaseTools/Source/Python/AutoGen/AutoGen.py", line 357, >>> in >> _Init >>> for Pcd in Pkg.Pcds: >>> File ".../BaseTools/Source/Python/Workspace/WorkspaceDatabase.py", >> line 1487, in _GetPcds >>> self._Pcds.update(self._GetPcd(MODEL_PCD_FIXED_AT_BUILD)) >>> File ".../BaseTools/Source/Python/Workspace/WorkspaceDatabase.py", >> line 1521, in _GetPcd >>> validateranges, validlists, expressions = >> self._RawData.GetValidExpression(TokenSpaceGuid, PcdCName) >>> File ".../BaseTools/Source/Python/Workspace/MetaFileParser.py", >>> line >> 380, in GetValidExpression >>> return self._Table.GetValidExpression(TokenSpaceGuid, PcdCName) >>> File ".../BaseTools/Source/Python/Workspace/MetaFileTable.py", >>> line >> 246, in GetValidExpression >>> expressions.append(comment.split("|")[1].strip()) >>> IndexError: list index out of range >>> >>> - Failed - >> >> @Expression's should have a number (I guess a bitmask of flags?) >> associated with them, and that number should be separated from the >> actual expression with a filter bar (|). Example: >> >> MdePkg/MdePkg.dec: # @Expression 0x80000002 | >> (gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask & 0xC0) == 0 >> >> The above @Expression in "PcAtChipsetPkg/PcAtChipsetPkg.dec" lacks the >> bitmask and the "|" separator. (Which makes me question if this patch >> was ever build tested.) >> >> 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