public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Lin, Derek (HPS UEFI Dev)" <derek.lin2@hpe.com>
To: "Gao, Liming" <liming.gao@intel.com>,
	"afish@apple.com" <afish@apple.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [BaseTools] Library GUIDs missing from Guid.xref file.
Date: Fri, 28 Oct 2016 02:34:21 +0000	[thread overview]
Message-ID: <DF4PR84MB002521FFE74FE25CFA54AB2CC2AD0@DF4PR84MB0025.NAMPRD84.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14B49A6AC@shsmsx102.ccr.corp.intel.com>

That make sense to me, I will update patch to remove it, and not change order.

Thanks,
Derek

-----Original Message-----
From: Gao, Liming [mailto:liming.gao@intel.com] 
Sent: Thursday, October 27, 2016 1:53 PM
To: Lin, Derek (HPS UEFI Dev) <derek.lin2@hpe.com>; afish@apple.com
Cc: edk2-devel@lists.01.org
Subject: RE: [edk2] [BaseTools] Library GUIDs missing from Guid.xref file.

I agree with Andrew to only add the missing Ppi/Protocol/Guid used in Library INF file. 

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of 
> Lin, Derek (HPS UEFI Dev)
> Sent: Thursday, October 27, 2016 1:50 PM
> To: afish@apple.com
> Cc: edk2-devel@lists.01.org
> Subject: Re: [edk2] [BaseTools] Library GUIDs missing from Guid.xref file.
> 
> Andrew,
> 
> The ModuleGuidDict was not for performance, it's because Arch IA32 X64 
> have same library name/FILE_GUID pair, for not duplicate it.
> You are right the patch add library FILE_GUID but they are not end up 
> in the ROM, I'm ok remove it or not.
> 
> Feel free to update the patch.
> 
> Thanks,
> Derek
> 
> -----Original Message-----
> From: afish@apple.com [mailto:afish@apple.com]
> Sent: Thursday, October 27, 2016 1:25 PM
> To: Lin, Derek (HPS UEFI Dev) <derek.lin2@hpe.com>
> Cc: edk2-devel@lists.01.org; Shia, Cinnamon <cinnamon.shia@hpe.com>
> Subject: Re: [edk2] [BaseTools] Library GUIDs missing from Guid.xref file.
> 
> 
> > On Oct 26, 2016, at 9:09 PM, Lin, Derek (HPS UEFI Dev)
> <derek.lin2@hpe.com> wrote:
> >
> > Hi Andrew,
> >
> > We also see this issue recently. And we have a fix. I've send email 
> > patch
> minutes ago.
> >
> 
> Derek,
> 
> Thanks for sharing the fix.
> 
> I noticed it introduced a build failure for a badly formed library INF 
> file. I assume that means this fix is pulling in libraries that are in 
> the DSC file, but not currently being built? That is not really a 
> problem as it means you have too many GUID vs. not enough.
> 
> I also noticed that your fix adds the FILE_GUID values for all the 
> libraries. The FILE_GUID values for the any PEIM, DXE/UEFI driver that 
> end up in an FV will be present in the ROM, but the library values do 
> not end up in the ROM. Also by changing the code to use a Python 
> dictionary the order of everything changed. I had a debugger command 
> that would just dump out the FILE_GUDs, so it would be good to maintain the old behavior.
> 
>          GuidDict = {}
>          for Arch in ArchList:
>              PlatformDataBase =
> BuildDb.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, 
> GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
> -            for ModuleFile in PlatformDataBase.Modules:
> +            for ModuleFile in [x for x in PlatformDataBase.Modules] + 
> + [x for x in
> PlatformDataBase.LibraryInstances]:
>                  Module = BuildDb.BuildObject[ModuleFile, Arch, 
> GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
> -                GuidXRefFile.write("%s %s\n" % (Module.Guid, Module.BaseName))
> +                if ModuleFile in PlatformDataBase.Modules:
> +                    GuidXRefFile.write("%s %s\n" % (Module.Guid,
> Module.BaseName))
>                  for key, item in Module.Protocols.items():
>                      GuidDict[key] = item
>                  for key, item in Module.Guids.items():
> 
> If your adding ModuleGuidDict was a performance fix, I guess I could 
> just make it a list to keep order.
> 
> Thanks,
> 
> Andrew Fish
> 
> > Thanks,
> > Derek
> >
> > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf 
> > Of
> Andrew Fish
> > Sent: Thursday, October 27, 2016 9:08 AM
> > To: edk2-devel <edk2-devel@lists.01.org>
> > Subject: [edk2] [BaseTools] Library GUIDs missing from Guid.xref file.
> >
> > I noticed if a GUID (PPI & Protocol) was only used via a library it 
> > does not
> end up in the Guid.xref file.
> >
> > It looks to me like this code is only extracting the GUIDs from the 
> > Drivers
> INF file and the GUIDs defined in dependent libraries are skipped?
> >
> >
> >
> https://github.com/tianocore/edk2/blob/master/BaseTools/Source/Python/
> GenFds/GenFds.py#L701
> <https://github.com/tianocore/edk2/blob/master/BaseTools/Source/Pytho
> n/GenFds/GenFds.py#L701>
> >
> >        for Arch in ArchList:
> >            PlatformDataBase =
> BuildDb.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, 
> GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
> >            for ModuleFile in PlatformDataBase.Modules:
> >                Module = BuildDb.BuildObject[ModuleFile, Arch,
> GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
> >                GuidXRefFile.write("%s %s\n" % (Module.Guid,
> Module.BaseName))
> >                for key, item in Module.Protocols.items():
> >                    GuidDict[key] = item
> >                for key, item in Module.Guids.items():
> >                    GuidDict[key] = item
> >                for key, item in Module.Ppis.items():
> >                    GuidDict[key] = item
> >
> >
> > Does anyone know how to extract the info from the dependent libs?
> >
> > I have an lldb type formatter for EFI_GUID that will print out the 
> > GUID C
> name so I noticed when some of them went missing.
> >
> > Thanks,
> >
> > Andrew Fish
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


      reply	other threads:[~2016-10-28  2:34 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-27  1:08 [BaseTools] Library GUIDs missing from Guid.xref file Andrew Fish
     [not found] ` <AT5PR84MB01150BA503E56D54D085691CF2AA0@AT5PR84MB0115.NAMPRD84.PROD.OUTLOOK.COM>
2016-10-27  4:09   ` Lin, Derek (HPS UEFI Dev)
2016-10-27  5:24     ` Andrew Fish
2016-10-27  5:49       ` Lin, Derek (HPS UEFI Dev)
2016-10-27  5:52         ` Gao, Liming
2016-10-28  2:34           ` Lin, Derek (HPS UEFI Dev) [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DF4PR84MB002521FFE74FE25CFA54AB2CC2AD0@DF4PR84MB0025.NAMPRD84.PROD.OUTLOOK.COM \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox