Laszlo, Your feedback is consistent with Andrews.
I will see if we can implement the Structured PCD feature without using CLANG frontend and Python bindings. CLANG/Python was a very valuable toolset to prototype and evaluate a number of design options quickly. Andrew has suggested maximizing the use of the compiler that is used to build the EDK II modules to extract the information required, and I think that is the best option to explore based on the feedback received so far. Thanks, Mike > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of Laszlo > Ersek > Sent: Friday, May 20, 2016 2:01 AM > To: Kinney, Michael D <[email protected]> > Cc: [email protected] <[email protected]> > Subject: Re: [edk2] [RFC] Structured PCD Proposal > > On 05/19/16 19:39, Kinney, Michael D wrote: > > > >> -----Original Message----- > >> From: edk2-devel [mailto:[email protected]] On Behalf Of > >> Laszlo > Ersek > >> Sent: Thursday, May 19, 2016 2:26 AM > >> To: Kinney, Michael D <[email protected]> > >> Cc: [email protected] <[email protected]> > >> Subject: Re: [edk2] [RFC] Structured PCD Proposal > >> > >> On 05/19/16 01:28, Kinney, Michael D wrote: > >> > >> [snip] > >> > >>> ## C Structure Syntax Proposal > >>> * Use C typedef syntax to describe complex C structures > >>> * Use a C language parser with support for struct/union/array/bit > >>> fields/pack > >>> * Recommend use of libclang C language parser into Abstract Syntax Tree > >>> (AST) > >>> - Included with LLVM release > >>> - http://llvm.org/releases/download.html > >>> - http://clang.llvm.org/doxygen/group__CINDEX.html > >>> * Recommend use of Python bindings for CLANG for EDK II Python based > >>> BaseTools > >>> - pip install clang > >> > >> What versions are necessary? On RHEL-7, the following versions are > >> available (from EPEL only; RHEL does not provide clang): > >> > >> clang-devel: 3.4.2-8.el7 > >> python-pip: 7.1.0-1.el7 > > > > I have not tried the prototype on RHEL-7 yet. For Fedora 23, we have used: > > > > $ sudo dnf install clang > > > Up to and including Fedora 23, clang had been built from the source > package called "llvm", so Koji and pkgdb must be searched for "llvm", > when someone is looking for Fedora 23 packages on the web (i.e., not > with "dnf" or "yum"). In Fedora 24, "clang" got its own SRPM: > > http://thread.gmane.org/gmane.linux.redhat.fedora.devel/216194 > https://bugzilla.redhat.com/show_bug.cgi?id=1300945 > > So, looking for "llvm" packages, it seems to me that the last Fedora > releases that shipped 3.4-based clang binaries were Fedora 21, and > Fedora 22: > > http://koji.fedoraproject.org/koji/buildinfo?buildID=552862 > http://koji.fedoraproject.org/koji/buildinfo?buildID=552863 > > (However, Fedora 22 later moved to the 3.5 series.) > > Why this matters: on RHEL-7 I'll only be able to use 3.4.2-based clang > (from EPEL-7). I think testing the BaseTools feature in a fully updated > Fedora 21 installation (3.4-based clang) would allow you to extrapolate > the results to EPEL-7: > > Fedora 23: 3.7.0-4 works > Fedora 21: 3.4-15 ? > EPEL-7: 3.4.2-8 ? > > Could you please test such a configuration? > > Alternatively, if you have a public branch, and testing instructions, > I'd be happy to check them on my RHEL-7 system, using clang 3.4.2-8 > (from EPEL-7). > > > $ git clone -b release_37 https://github.com/trolldbois/python-clang > > $ cd python-clang > > $ sudo python setup.py install > > Unfortunately, this looks very bad. I shouldn't have to install, as > root, a Python package from a random github repository, in order to > build edk2 platforms. > > At this point, quite a few downstreams (e.g., Linux distributions) build > OVMF packages. If the Structured PCD Feature is put to use in such > generic edk2 modules that OVMF pulls in (which I think will likely > happen), then all these downstreams are going to require the python > bindings for clang as native packages. > > ... Actually, the README file at > <https://github.com/trolldbois/python-clang> says: > > OBSOLETE. LLVM-CLANG NOW PUBLISHES PYTHON PACKAGE. JUST ADD THE > OFFICIAL llvm-3.7 repo in your apt. > > If the above statement -- about llvm-3.7 including the python bindings > for clang -- is correct, then Fedora 23 and later might be all set, > because their llvm and clang stuff does not predate 3.7. (See Fedora 23 > above, for example: 3.7.0-4). > > However, this dependency leaves a number of Linux distributions in the > cold; distros that are still supported > - by their vendors, > - and by edk2 in general (for example through the now-antique GCC44 > toolchain). > > I think if clang and its python bindings become an unconditional > dependency for building edk2, then: > > (1) Some Linux distributions that can currently build edk2 platforms > (through the older GCC toolchains) will lose that capability, because > they may not have (fresh enough) clang. This could be okay, but then we > should declare it as a fact (= removal of compatibility), and remove old > GCC toolchains as well. > > (2) The python bindings for clang, as an official part of LLVM, look > like a bleeding edge feature, in edk2 terms (according to Wikipedia, > LLVM 3.7.0 was released on 1 September 2015). If the python bindings > become a hard requirement for building edk2, then I think BaseTools > should embed them (it's "just Python", I guess). Otherwise only bleeding > edge Linux distros will be able to build edk2. > > (I removed the rest of the context, but I do thank you for your other > answers!) > > Thanks, > Laszlo > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

