Another note on this, GenerateReport.py does not comprehend the 'Binary only'
status of any modules, and will produce erroneous depex statements in the build
report based on the contents of the [Depex] sections. Consistency here would be
nice.
From: Andrew Fish [mailto:af...@apple.com]
Sent: Wednesday, December 05, 2012 9:41 PM
To: Gao, Liming
Cc: edk2-devel@lists.sourceforge.net;
edk2-buildtools-de...@lists.sourceforge.net
Subject: Re: [edk2-buildtools] [edk2] binary-only modules and [depex] sections
On Dec 5, 2012, at 6:52 PM, Gao, Liming wrote:
Andrew:
Another risk is that GuidCName may have the different value in pre-build
workspace and current workspace. If so, the binary EFI image and its Depex
doesn't match, which may cause unexpected issue.
I don't understand this point? Given it is my platform and some one hands me a
binary depex they still have to explain to me what protocols need to be
produced for the driver to dispatch. So I have to understand the depex at a
GuidCName level to make sure there is code in the platform that produces the
protocols needed to satisfy the depex.
I think you guys focused a little too much on the worse possible thing that
could happen, vs what steps need to be taken to make it work in the real world.
The platform has to produce the protocols, so they need to be described in some
other form than a binary blob of depex. If the GuidCName are already in edk2
then there should not be a GuidCName conflict, if the GuidCName is new I still
have to write code to produce the GuidCName and thus I need to define the
GuidCName properly to publish the protocol to satisfy the dependency. Thus it
seems to me the tool "helping me" by not allowing GuidCName is really just
making it harder to work with an less flexible.
Thanks,
Andrew
Thanks
Liming
From: Andrew Fish [mailto:af...@apple.com]
Sent: Thursday, December 06, 2012 4:32 AM
To: Hauch, Larry
Cc: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>;
edk2-buildtools-de...@lists.sourceforge.net<mailto:edk2-buildtools-de...@lists.sourceforge.net>
Subject: Re: [edk2-buildtools] [edk2] binary-only modules and [depex] sections
Larry,
If I was receiving a binary from some vendor and an depex I would rather get
the Depex in text form so I could modify it if needed. For example what if I
only want to load the binary in certain circumstances? I might want to AND in a
platform specific protocol that means load the binary driver.
I understand the basic issue: It is possible to inherit depex expressions from
libraries so the INF file that built the binary driver does not contain the
full depex. The build logs contain the correct information so this data could
be sent in place of the binary depex file.
Thanks,
Andrew Fish
On Dec 5, 2012, at 12:03 PM, Hauch, Larry wrote:
Hi Tim,
You are correct in what the INF specification states. Unfortunately, this line
was added accidentally.
As a future enhancement, we had planned on adding the depex statements "in
comments" underneath the [Depex] section in the "As Built" INF file generated
by the build system. We have not implemented the depex content in comments
during "As Built" INF file generation yet.
So, for now, the paragraph should be remove from the INF specification.
I apologize for the confusion this may have caused.
Hi Justin,
The reason the build system does not re-generate the depex from [Depex] content
in a Binary INF file is that it is assumed that the efi file was linked with
specific library instances which may also have depex statements, so modifying
any depex statements after the fact could result in an invalid driver that
would be almost impossible to debug. It would require the binary module
provider to ensure that every depex statement from every library instance
linked against the module be AND'd with the depex statements from the driver -
not a simple task.
By listing the efi and depex files in the [Binaries] section, it was assumed
that the binary depex was created at the same time that the efi module was
linked (by the build system) and therefore included all required depex
statements.
Cheers,
Larry
From: Tim Lewis [mailto:tim.le...@insyde.com]
Sent: Wednesday, December 05, 2012 8:59 AM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Cc:
edk2-buildtools-de...@lists.sourceforge.net<mailto:edk2-buildtools-de...@lists.sourceforge.net>
Subject: Re: [edk2] [edk2-buildtools] binary-only modules and [depex] sections
Larry -
I will go further: The current .inf specification, section 3.14, says: "For a
binary INF file, the [Depex] section will contain the full dependency
expression, including the dependencies from the linked libraries." There is
nothing in the spec which says that [Depex] is illegal in this case.
Tim
From: justin_johns...@dell.com<mailto:justin_johns...@dell.com>
[mailto:justin_johns...@dell.com]<mailto:[mailto:justin_johns...@dell.com]>
Sent: Wednesday, December 05, 2012 8:50 AM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Cc:
edk2-buildtools-de...@lists.sourceforge.net<mailto:edk2-buildtools-de...@lists.sourceforge.net>
Subject: Re: [edk2] [edk2-buildtools] binary-only modules and [depex] sections
Hi Larry,
Thanks for your detailed response. What you say correctly describes the current
behavior. I'm asking why that behavior is desired, and suggesting that it is
not desired. I believe there may be situations where you want a binary
distributed driver, but a human-readable dependency expression.
Removing the python code I mentioned in my original message (ignoring [Depex]
sections when only [Binaries] sections are present) allows a dependency section
to be generated on the fly. An appropriate FDF statement will include the
correct section.
- Justin
From: Hauch, Larry [mailto:larry.ha...@intel.com]
Sent: Tuesday, December 04, 2012 3:40 PM
To: Andrew Fish;
edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Cc:
edk2-buildtools-de...@lists.sourceforge.net<mailto:edk2-buildtools-de...@lists.sourceforge.net>
Subject: Re: [edk2-buildtools] [edk2] binary-only modules and [depex] sections
Hi Justin,
The EDK II tools should support a binary INF file that has both the drive and
the compiled depex file in the [Binaries] section.
Using the PcAtChipsetPkg/PcatRealTimeClockRuntimeDex.inf as an example, a valid
INF for the binary would looks like:
[Defines]
INF_VERSION = 0x00010016
BASE_NAME = PcRtc
FILE_GUID = 378D7B65-8DA9-4773-B6E4-A47826A833E1
MODULE_TYPE = DXE_RUNTIME_DRIVER
VERSION_STRING = 1.0
[Binaries.IA32]
PE32|Ia32/PcRtc.efi
DXE_DEPEX|Ia32/PcRtc.depex
The tools do not support building a source depex file without building the
module from source.
The tools will ignore the sources section if a [Binaries] section does exist;
so the following is not valid:
[Defines]
INF_VERSION = 0x00010016
BASE_NAME = PcRtc
FILE_GUID = 378D7B65-8DA9-4773-B6E4-A47826A833E1
MODULE_TYPE = DXE_RUNTIME_DRIVER
VERSION_STRING = 1.0
DPX_SOURCE = myDepexSrc.depex
[Binaries.IA32]
PE32|Ia32/PcRtc.efi
Nor can you specify a [Depex] section in an INF file that has the binary efi
file. The following is also not valid
[Defines]
INF_VERSION = 0x00010016
BASE_NAME = PcRtc
FILE_GUID = 378D7B65-8DA9-4773-B6E4-A47826A833E1
MODULE_TYPE = DXE_RUNTIME_DRIVER
VERSION_STRING = 1.0
[Binaries.IA32]
PE32|Ia32/PcRtc.efi
[Depex]
gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid
Cheers,
Larry
From: Andrew Fish [mailto:af...@apple.com]
Sent: Monday, December 03, 2012 3:25 PM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Cc:
edk2-buildtools-de...@lists.sourceforge.net<mailto:edk2-buildtools-de...@lists.sourceforge.net>
Subject: Re: [edk2-buildtools] [edk2] binary-only modules and [depex] sections
Sounds like a bug to me.
Thanks,
Andrew
On Dec 3, 2012, at 3:00 PM,
justin_johns...@dell.com<mailto:justin_johns...@dell.com> wrote:
Hi all,
I have some binary-only drivers with dependency expressions that are not being
processed. These drivers are not UEFI model drivers.
I see in WorkspaceDatabase.py:
# If the module has only Binaries and no Sources, then ignore [Depex]
if self.Sources == None or self.Sources == []:
if self.Binaries != None and self.Binaries != []:
return self._Depex
The intent being obvious from the comment (comes from SVN revision 2135 of
edk2-buildtools repo). My question is, why are the [Depex] sections ignored
from INFs with only binaries? I don't see in any of the EDKII documentation
where this is stated. Is this a behavior that could be changed?
--
Justin Johnson
Platform Software Engineer
Dell, Inc.
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d_______________________________________________
edk2-buildtools-devel mailing list
edk2-buildtools-de...@lists.sourceforge.net<mailto:edk2-buildtools-de...@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/edk2-buildtools-devel
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel